diff --git a/.gitignore b/.gitignore index cdad4557..990cb8d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ .DS_Store .nyc_output .coveralls.yml +dist/ +coverage/ node_modules/ -**/servers.ts +**/TestAssets.ts diff --git a/.travis.yml b/.travis.yml index f2a985ed..67c2eeeb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,44 +1,23 @@ -# Config adapted from: -# https://www.electron.build/multi-platform-build#sample-travisyml-to-build-electron-app-for-macos-linux-and-windows -sudo: true -matrix: - include: - - os: osx - osx_image: xcode9.4 - language: node_js - node_js: - - 11 - - os: linux - services: docker - language: node_js - node_js: - - 11 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - libudev-dev - - libusb-1.0-0-dev - - g++-4.8 - - g++-4.8-multilib - - icnsutils - - graphicsmagick - - xz-utils - - xorriso - - rpm +language : node_js + +env: + jobs: + - PROJECT_DIR=ConseilJS-core + - PROJECT_DIR=ConseilJS-softsigner + +node_js: + - 12.16 cache: - yarn: true - directories: - - node_modules + directories: + - node_modules -install: - - npm install +before_script: + - cd $PROJECT_DIR + - npm install script: - - node --version - - npm run package + - npm run package after_success: - - npm run coverage \ No newline at end of file + - npm run coverage diff --git a/ConseilJS-core/CHANGELOG.md b/ConseilJS-core/CHANGELOG.md new file mode 100644 index 00000000..94e2738d --- /dev/null +++ b/ConseilJS-core/CHANGELOG.md @@ -0,0 +1,156 @@ + +# ConseilJS Change Log + +## 5.0.0-beta + +The purpose of this release is to split ConseilJS into several parts to minimize the number of direct dependencies. ConseilJS is packaged as three components: ConseilJS-core, ConseilJS-softsigner and ConseilJS-ledgersigner. + +### Breaking Changes + +- New interfaceces were introduced to support external signing and key storage: `KeyStore`, `Signer`. +- Any function that previously took a required `KeyStore`-type parameter now also requires a `Signer`. This includes many changes in `TezosNodeWriter`, `TezosOperationQueue`, and the contract wrappers in `src/chain/tezos/contracts/`. +- `CryptoUtils` has moved to ConseilJS-softsigner. This removes dependencies on `crypto`, `libsodium` and others. +- What used to be in `src/identity/tezos/` is not split between the ConseilJS-softsigner and ConseilJS-ledgersigner packages. +- `CryptoUtils.simpleHash` was moved to `TezosMessageUtil.simpleHash`, smae with twoByteHex, fromByteHex + +### New Features + +- added TZIP 0012 (FA2) single-asset token contract interface `chain/tezos/contracts/Tzip12ReferenceTokenHelper`. + +### Fixes + +- Michelson parser has several updates that should reduce memory footprint. + +## 0.4.2 + +### New Features + +- Support for the [StakerDao](https://www.stakerdao.com/) token. +- Support for the [tzBTC](https://tzbtc.io/) token. +- Added various functions in `TezosWalletUtil` & `CryptoUtils` for signing of and verifying signatures on arbitrary text. +- Added preliminary support for the murbard multi-sig contract. +- Added `TezosConseilClient.getOperation()`. + +### Fixes + +- [ConseilJS 265](https://github.com/Cryptonomic/ConseilJS/issues/265) +- [ConseilJS 269](https://github.com/Cryptonomic/ConseilJS/issues/269) +- [ConseilJS 270](https://github.com/Cryptonomic/ConseilJS/issues/270) +- `WrapperWrapper.salt` & `WrapperWrapper.nonce` were not loading libsodium correctly. +- Fixed Michelson parser map, list and bytes handling. +- Improved entry point parsing. +- Improved data coming back from `TezosNodeReader.getMempoolOperationsForAccount` +- Improved error reporting for account activation. +- Increased test coverage. + +## 0.4.1 + +### Breaking Changes + +- `TezosNodeWriter.testContractInvocationOperation` no longer has the `derivationPath` argument. +- `TezosConseilClient.getBlockByLevel` now returns a single item, not an array. +- `TCFBakerRegistryHelper.getFees` was renamed to `getSimpleStorage` to match other contract interfaces. + +### New Features + +- added `TezosConseilClient.getBigMapData` that allows quick big_map queries against Conseil. +- added mempool support with `TezosNodeReader.getMempoolOperation` and `TezosNodeReader.getMempoolOperationsForAccount`. +- added `CryptonomicNameServiceHelper`. +- support for complex bigmap keys. +- `TezosConseilClient.getBlock` now supports 'head' as a `hash` value. + +### Fixes + +- [ConseilJS 250](https://github.com/Cryptonomic/ConseilJS/issues/250) +- [ConseilJS 256](https://github.com/Cryptonomic/ConseilJS/issues/256) +- Updated documentation. +- Updated dependencies. + +## 0.4.0-beta + +### Breaking Changes + +- Moved `chain/tezos/TezosProtocolHelper.ts` to `/chain/tezos/contracts/BabylonDelegationHelper`. +- `TezosConseilClient.getBlockByLevel`, `TezosConseilClient.getAccount`, `TezosConseilClient.getOperationGroup` now return single items, not arrays of 1. +- `EntryPoint.generateInvocationPair()` now returns a tuple with `entrypoint` and `parameters` keys. +- `TezosConseilClient.awaitOperationConfirmation` now returns a single item, not an array. +- Removed `CryptoUtils.getPasswordStrength()` and the related zxcvbn dependency. This functionality should be added by the implementing application. +- `TezosNodeWriter.preapplyOperation()`, `testContractInvocationOperation()` and `injectOperation()` now parse and report errors. +- nodejs 12.14 is now a base requirement. + +### New Features + +- added Tezos Commons Baker Registry interface `chain/tezos/contracts/TCFBakerRegistryHelper`. +- added TZIP 0007 (FA1.2) token contract interface `chain/tezos/contracts/Tzip7ReferenceTokenHelper`. +- `TezosMessageUtil` can now `pack` `key_hash` value. + +### Fixes + +- Improved `TezosNodeReader.getAccountManagerForBlock`. +- `TezosNodeReader.isImplicitAndEmpty` and `TezosNodeReader.isManagerKeyRevealedForAccount` now default to head by reference instead of query. +- Added `TezosNodeReader.getContractStorage`. +- Michelson parser support for `D\[UI\]G n`, `D\[UI\]P n`, `DROP n`. +- Generally improved Michelson contract parser. +- Improved `TezosContractIntrospector` parser. +- Updated documentation. +- Reduced and updated dependencies. + +## 0.3.8-beta + +- updated various dependencies, importantly for Ledger device communication + +## 0.3.7 + +### Fixes + +- big_int encoding + +## 0.3.6 + +### Fixes + +- integer encoding issue introduced in 0.3.5-beta + +## 0.3.5-beta + +### Breaking Changes + +- `EntryPoint.generateParameter` became `EntryPoint.generateInvocationString`. + +### Fixes + +- Improved entry point parser, this functionality is still experimental. +- Added `EntryPoint.generateInvocationPair` to produce Protocol 005 style invocation parameters. +- `ConseilPredicate` gained a `group` attribute for `or` queries. +- removed `base-n` dependency. + +## 0.3.4-beta + +### Fixes + +- basic big_map query support. +- nodejs 10.17.x is now the minimum requirement. +- all dependencies are now referenced with explicit versions. + +## 0.3.3-beta + +### Breaking Changes + +- `TezosNodeWriter.applyOperation` was renamed to `TezosNodeWriter.preapplyOperation` +- `TezosNodeWriter.testOperation` was renamed to `TezosNodeWriter.testContractInvocationOperation` and now estimates cost of contract invocation +- `TezosConseilClient.getBlock` now returns a single item, not an array +- `TezosConseilClient.getAccount` now returns a single item, not an array +- `TezosConseilClient.getOperationGroup` now returns a single item, not an array + +### Fixes + +- custom entry point hex encoding, thanks to [@elkesrio](https://github.com/elkesrio) + +### Known issues + +- Michelson lambda parameter encoding is not yet supported +- Michelson `DIG`, `DUG`, `EMPTY_BIG_MAP`, `APPLY`, `CHAIN_ID` operations are not supported + +### Future Breaking Changes + +- `KeyStore` now contains `derivationPath`, in a subsequent release, functions that accept a `KeyStore` parameter and a `derivationPath` parameter will be modified to take only the former. diff --git a/ConseilJS-core/LICENSE b/ConseilJS-core/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/ConseilJS-core/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/ConseilJS-core/README.md b/ConseilJS-core/README.md new file mode 100644 index 00000000..64d5bc6c --- /dev/null +++ b/ConseilJS-core/README.md @@ -0,0 +1,85 @@ +# ConseilJS + +[![npm version](https://img.shields.io/npm/v/conseiljs.svg)](https://www.npmjs.com/package/conseiljs) +[![npm](https://img.shields.io/npm/dm/conseiljs.svg)](https://www.npmjs.com/package/conseiljs) +[![Build Status](https://travis-ci.org/Cryptonomic/ConseilJS.svg?branch=master)](https://travis-ci.org/Cryptonomic/ConseilJS) +[![Coverage Status](https://coveralls.io/repos/github/Cryptonomic/ConseilJS/badge.svg?branch=master)](https://coveralls.io/github/Cryptonomic/ConseilJS?branch=master) +[![dependencies](https://david-dm.org/Cryptonomic/ConseilJS/status.svg)](https://david-dm.org/Cryptonomic/ConseilJS) + +A library for building decentralized applications in Typescript and Javascript, currently focused on the [Tezos](http://tezos.com/) platform. + +ConseilJS connects to Tezos nodes for live chain data and operations and to [Conseil](https://github.com/Cryptonomic/Conseil) servers for high-performance analytics on blockchain data. Internally, Cryptonomic uses [Nautilus](https://github.com/Cryptonomic/Nautilus) for infrastructure deployments of these services. This is the library at the core of our products, [Arronax](https://arronax.io), [Mininax](https://mininax.io) and certainly [Galleon](https://galleon-wallet.tech). There are now [ReasonML bindings](https://github.com/Cryptonomic/ConseilJS-ReasonML-Bindings) as well. + +Cryptonomic offers an infrastructure service - [Nautilus Cloud](https://nautilus.cloud) which enables quick access to the Tezos platform along with products that make it easier build on it. + +## Sub-modules + +As of version 5.0.0, ConseilJS has been split into three parts: this library, which is considered to be the core, ConseilJS-softsigner and ConseilJS-ledgersigner. This was done in an effort to make the library more portable across different environments. If neither of these additional modules meet your needs, the `Signer` and `KeyStore` [interfaces](https://github.com/Cryptonomic/ConseilJS/blob/master/ConseilJS-core/src/types/ExternalInterfaces.ts) can be implemented separately. In addition to a `Signer` and a `KeyStore`, `fetch` and `logger` objects are required to be provided, see below. + +## Use with Nodejs + +Add our [NPM package](https://www.npmjs.com/package/conseiljs) to your project. + +```bash +npm i conseiljs +``` + +```javascript +import fetch from 'node-fetch'; +import * as log from 'loglevel'; + +import { registerFetch, registerLogger } from 'conseiljs'; + +const logger = log.getLogger('conseiljs'); +logger.setLevel('debug', false); +registerLogger(logger); +registerFetch(fetch); + +let signer: Signer; +const keyStore = KeyStoreUtils.RestoreIdentityFromSecretKey ('edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH'); +signer = new SoftSigner(TezosMessageUtils.writeKeyWithHint(keyStore.secretKey, 'edsk')); +``` + +## Use with React + +We have a complete [React application tutorial](https://github.com/Cryptonomic/ConseilJS-Tutorials) for you to check out. + +## Use with React Native + +TBD + +## Use with Web + +```html + +``` + +The web version sets fetch and logger internally to `window.fetch` and `console` respectively. + +A fully functional sample [html page](https://github.com/Cryptonomic/ConseilJS-HTML-Example) is available too. + +## API Overview and Examples + +We have [ready-to-use examples](https://cryptonomic.github.io/ConseilJS/) to copy/paste. + +## Contribute + +There are many ways to contribute to this project. You can develop applications or dApps with it. You can submit bug reports or feature requests. You can ask questions about it on [r/Tezos](http://reddit.com/r/tezos/) or the [Tezos StackExchange](https://tezos.stackexchange.com). We certainly welcome pull requests as well. + +## Other references + +Developer Handbook + +Curriculum + +[Wiki](https://github.com/Cryptonomic/ConseilJS/wiki/Tutorial:-Querying-for-Tezos-alphanet-data-using-the-ConseilJS-v2-API) + +[Riot Dev Channel](https://matrix.to/#/!rUwpbdwWhWgKINPyOD:cryptonomic.tech?via=cryptonomic.tech&via=matrix.org&via=ostez.com) + +[Cryptonomic Reddit](https://www.reddit.com/r/cryptonomic) + +[The Cryptonomic Aperiodical](https://medium.com/the-cryptonomic-aperiodical) + +[@CryptonomicTech](https://twitter.com/CryptonomicTech) diff --git a/ConseilJS-core/dist-web/conseiljs.min.js b/ConseilJS-core/dist-web/conseiljs.min.js new file mode 100644 index 00000000..0b61dc8d --- /dev/null +++ b/ConseilJS-core/dist-web/conseiljs.min.js @@ -0,0 +1,2 @@ +/*! For license information please see conseiljs.min.js.LICENSE.txt */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.conseiljs=t():e.conseiljs=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=42)}([function(e,t,r){"use strict";(function(e){var n=r(44),o=r(45),s=r(30);function i(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(i()=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function d(e,t){if(u.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return B(e).length;default:if(n)return G(e).length;t=(""+t).toLowerCase(),n=!0}}function b(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,r);case"utf8":case"utf-8":return w(this,t,r);case"ascii":return E(this,t,r);case"latin1":case"binary":return S(this,t,r);case"base64":return A(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function m(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function g(e,t,r,n,o){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=u.from(t,n)),u.isBuffer(t))return 0===t.length?-1:y(e,t,r,n,o);if("number"==typeof t)return t&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):y(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function y(e,t,r,n,o){var s,i=1,a=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;i=2,a/=2,u/=2,r/=2}function c(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(o){var l=-1;for(s=r;sa&&(r=a-u),s=r;s>=0;s--){for(var p=!0,f=0;fo&&(n=o):n=o;var s=t.length;if(s%2!=0)throw new TypeError("Invalid hex string");n>s/2&&(n=s/2);for(var i=0;i>8,o=r%256,s.push(o),s.push(n);return s}(t,e.length-r),e,r,n)}function A(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function w(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+p<=r)switch(p){case 1:c<128&&(l=c);break;case 2:128==(192&(s=e[o+1]))&&(u=(31&c)<<6|63&s)>127&&(l=u);break;case 3:s=e[o+1],i=e[o+2],128==(192&s)&&128==(192&i)&&(u=(15&c)<<12|(63&s)<<6|63&i)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:s=e[o+1],i=e[o+2],a=e[o+3],128==(192&s)&&128==(192&i)&&128==(192&a)&&(u=(15&c)<<18|(63&s)<<12|(63&i)<<6|63&a)>65535&&u<1114112&&(l=u)}null===l?(l=65533,p=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),o+=p}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},u.prototype.compare=function(e,t,r,n,o){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var s=(o>>>=0)-(n>>>=0),i=(r>>>=0)-(t>>>=0),a=Math.min(s,i),c=this.slice(n,o),l=e.slice(t,r),p=0;po)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var s=!1;;)switch(n){case"hex":return $(this,e,t,r);case"utf8":case"utf-8":return D(this,e,t,r);case"ascii":return P(this,e,t,r);case"latin1":case"binary":return _(this,e,t,r);case"base64":return v(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,t,r);default:if(s)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),s=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function E(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;on)&&(r=n);for(var o="",s=t;sr)throw new RangeError("Trying to access beyond buffer length")}function U(e,t,r,n,o,s){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function O(e,t,r,n){t<0&&(t=65535+t+1);for(var o=0,s=Math.min(e.length-r,2);o>>8*(n?o:1-o)}function N(e,t,r,n){t<0&&(t=4294967295+t+1);for(var o=0,s=Math.min(e.length-r,4);o>>8*(n?o:3-o)&255}function x(e,t,r,n,o,s){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function M(e,t,r,n,s){return s||x(e,0,r,4),o.write(e,t,r,n,23,4),r+4}function k(e,t,r,n,s){return s||x(e,0,r,8),o.write(e,t,r,n,52,8),r+8}u.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)n+=this[e+--t]*o;return n},u.prototype.readUInt8=function(e,t){return t||C(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return t||C(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return t||C(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return t||C(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return t||C(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||C(e,t,this.length);for(var n=this[e],o=1,s=0;++s=(o*=128)&&(n-=Math.pow(2,8*t)),n},u.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||C(e,t,this.length);for(var n=t,o=1,s=this[e+--n];n>0&&(o*=256);)s+=this[e+--n]*o;return s>=(o*=128)&&(s-=Math.pow(2,8*t)),s},u.prototype.readInt8=function(e,t){return t||C(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){t||C(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(e,t){t||C(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(e,t){return t||C(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return t||C(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return t||C(e,4,this.length),o.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return t||C(e,4,this.length),o.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return t||C(e,8,this.length),o.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return t||C(e,8,this.length),o.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||U(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,s=0;for(this[t]=255&e;++s=0&&(s*=256);)this[t+o]=e/s&255;return t+r},u.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):O(this,e,t,!0),t+2},u.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):O(this,e,t,!1),t+2},u.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):N(this,e,t,!0),t+4},u.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):N(this,e,t,!1),t+4},u.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var o=Math.pow(2,8*r-1);U(this,e,t,r,o-1,-o)}var s=0,i=1,a=0;for(this[t]=255&e;++s>0)-a&255;return t+r},u.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var o=Math.pow(2,8*r-1);U(this,e,t,r,o-1,-o)}var s=r-1,i=1,a=0;for(this[t+s]=255&e;--s>=0&&(i*=256);)e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/i>>0)-a&255;return t+r},u.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):O(this,e,t,!0),t+2},u.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):O(this,e,t,!1),t+2},u.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):N(this,e,t,!0),t+4},u.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||U(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):N(this,e,t,!1),t+4},u.prototype.writeFloatLE=function(e,t,r){return M(this,e,t,!0,r)},u.prototype.writeFloatBE=function(e,t,r){return M(this,e,t,!1,r)},u.prototype.writeDoubleLE=function(e,t,r){return k(this,e,t,!0,r)},u.prototype.writeDoubleBE=function(e,t,r){return k(this,e,t,!1,r)},u.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else if(s<1e3||!u.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(s=t;s55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&s.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&s.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&s.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;s.push(r)}else if(r<2048){if((t-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function B(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(F,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function z(e,t,r,n){for(var o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}}).call(this,r(10))},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},function(e,t,r){var n=r(0),o=n.Buffer;function s(e,t){for(var r in e)t[r]=e[r]}function i(e,t,r){return o(e,t,r)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=n:(s(n,t),t.Buffer=i),s(o,i),i.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return o(e,t,r)},i.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=o(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},i.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return o(e)},i.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(8),i=r(77),a=o(r(14)),u=o(r(12)).default.log,c=a.default.fetch;!function(e){function t(e,t){const r=`${e}/${t}`;return c(r,{method:"get"}).then(n=>{if(!n.ok)throw u.error(`TezosNodeReader.performGetRequest error: ${n.status} for ${t} on ${e}`),new i.TezosRequestError(n.status,n.statusText,r,null);return n}).then(r=>{const n=r.json();return u.debug(`TezosNodeReader.performGetRequest response: ${n} for ${t} on ${e}`),n})}function r(e,r="head",n="main"){return t(e,`chains/${n}/blocks/${r}`).then(e=>e)}function o(e,r,n,o="main"){return t(e,`chains/${o}/blocks/${r}/context/contracts/${n}`).then(e=>e)}function a(e,r,n,o="main"){return t(e,`chains/${o}/blocks/${r}/context/contracts/${n}/manager_key`).then(e=>e&&"null"!==e.toString()?e.toString():"").catch(e=>"")}e.getBlock=r,e.getBlockHead=function(e){return r(e)},e.getAccountForBlock=o,e.getCounterForAccount=function(e,r,o="main"){return n(this,void 0,void 0,(function*(){const n=yield t(e,`chains/${o}/blocks/head/context/contracts/${r}/counter`).then(e=>e.toString());return parseInt(n.toString(),10)}))},e.getSpendableBalanceForAccount=function(e,r,o="main"){return n(this,void 0,void 0,(function*(){const n=yield t(e,`chains/${o}/blocks/head/context/contracts/${r}`).then(e=>e);return parseInt(n.balance.toString(),10)}))},e.getAccountManagerForBlock=a,e.isImplicitAndEmpty=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield o(e,"head",t),n=t.toLowerCase().startsWith("tz"),s=0===Number(r.balance);return n&&s}))},e.isManagerKeyRevealedForAccount=function(e,t){return n(this,void 0,void 0,(function*(){return(yield a(e,"head",t)).length>0}))},e.getContractStorage=function(e,r,n="head",o="main"){return t(e,`chains/${o}/blocks/${n}/context/contracts/${r}/storage`)},e.getValueForBigMapKey=function(e,r,n,o="head",s="main"){return t(e,`chains/${s}/blocks/${o}/context/big_maps/${r}/${n}`).catch(e=>{})},e.getMempoolOperation=function(e,r,o="main"){return n(this,void 0,void 0,(function*(){const n=yield t(e,`chains/${o}/mempool/pending_operations`).catch(()=>{});return s.JSONPath({path:`$.applied[?(@.hash=='${r}')]`,json:n})[0]}))},e.getMempoolOperationsForAccount=function(e,r,o="main"){return n(this,void 0,void 0,(function*(){const n=yield t(e,`chains/${o}/mempool/pending_operations`).catch(()=>{});return JSON.parse(n).applied.filter(e=>e.contents.some(e=>e.source===r||e.destination===r)).map(e=>(e.contents=e.contents.filter(e=>e.source===r||e.destination===r),e))}))}}(t.TezosNodeReader||(t.TezosNodeReader={}))},function(e,t,r){"use strict";(function(e){var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const o=n(r(46)),s=n(r(48)),i=n(r(32)),a=r(6),u=['"parameter"','"storage"','"code"','"False"','"Elt"','"Left"','"None"','"Pair"','"Right"','"Some"','"True"','"Unit"','"PACK"','"UNPACK"','"BLAKE2B"','"SHA256"','"SHA512"','"ABS"','"ADD"','"AMOUNT"','"AND"','"BALANCE"','"CAR"','"CDR"','"CHECK_SIGNATURE"','"COMPARE"','"CONCAT"','"CONS"','"CREATE_ACCOUNT"','"CREATE_CONTRACT"','"IMPLICIT_ACCOUNT"','"DIP"','"DROP"','"DUP"','"EDIV"','"EMPTY_MAP"','"EMPTY_SET"','"EQ"','"EXEC"','"FAILWITH"','"GE"','"GET"','"GT"','"HASH_KEY"','"IF"','"IF_CONS"','"IF_LEFT"','"IF_NONE"','"INT"','"LAMBDA"','"LE"','"LEFT"','"LOOP"','"LSL"','"LSR"','"LT"','"MAP"','"MEM"','"MUL"','"NEG"','"NEQ"','"NIL"','"NONE"','"NOT"','"NOW"','"OR"','"PAIR"','"PUSH"','"RIGHT"','"SIZE"','"SOME"','"SOURCE"','"SENDER"','"SELF"','"STEPS_TO_QUOTA"','"SUB"','"SWAP"','"TRANSFER_TOKENS"','"SET_DELEGATE"','"UNIT"','"UPDATE"','"XOR"','"ITER"','"LOOP_LEFT"','"ADDRESS"','"CONTRACT"','"ISNAT"','"CAST"','"RENAME"','"bool"','"contract"','"int"','"key"','"key_hash"','"lambda"','"list"','"map"','"big_map"','"nat"','"option"','"or"','"pair"','"set"','"signature"','"string"','"bytes"','"mutez"','"timestamp"','"unit"','"operation"','"address"','"SLICE"','"DEFAULT_ACCOUNT"','"tez"'];!function(t){function r(e){const t=new i.Parser(i.Grammar.fromCompiled(s.default));return h(e).forEach(e=>{t.feed(e)}),t.results[0]}function n(e,t){let r=e;e.script&&(r=e.script);for(let e=0;e`"${e}"`).join(", "),consumed:t.consumed}}function h(e){let t=new Map;t.parameter=e.search(/(^|\s+)parameter/m),t.storage=e.search(/(^|\s+)storage/m),t.code=e.search(/(^|\s+)code/m);const r=Object.values(t).sort((e,t)=>Number(e)-Number(t));return t[Object.keys(t).find(e=>t[e]===r[0])+""]=e.substring(r[0],r[1]),t[Object.keys(t).find(e=>t[e]===r[1])+""]=e.substring(r[1],r[2]),t[Object.keys(t).find(e=>t[e]===r[2])+""]=e.substring(r[2]),[t.parameter,t.storage,t.code].map(e=>e.trim().split("\n").map(e=>e.replace(/\#[\s\S]+$/,"").trim()).filter(e=>e.length>0).join(" "))}function d(e){return e.replace(/\n/g," ").replace(/ +/g," ").replace(/\[{/g,"[ {").replace(/}\]/g,"} ]").replace(/},{/g,"}, {").replace(/\]}/g,"] }").replace(/":"/g,'": "').replace(/":\[/g,'": [').replace(/{"/g,'{ "').replace(/"}/g,'" }').replace(/,"/g,', "').replace(/","/g,'", "').replace(/\[\[/g,"[ [").replace(/\]\]/g,"] ]").replace(/\["/g,'[ "').replace(/"\]/g,'" ]').replace(/\[ +\]/g,"[]").trim()}t.hexToMicheline=function e(t){if(t.length<2)throw new Error(`Malformed Micheline fragment '${t}'`);let r="",n=0,o=t.substring(n,n+2);switch(n+=2,o){case"00":{const e=a.TezosMessageUtils.findInt(t.substring(n),0,!0);r+=`{ "int": "${e.value}" }`,n+=e.length;break}case"01":{const e=l(t.substring(n));r+=`{ "string": "${e.code}" }`,n+=e.consumed;break}case"02":{const o=parseInt(t.substring(n,n+8),16);n+=8;let s=[],i=0;for(;i2&&(r+=`, "annots": [ ${e.code} ] }`),n+=e.consumed}else r+=" }",n+=8;break}case"0a":{const e=parseInt(t.substring(n,n+8),16);n+=8,r+=`{ "bytes": "${t.substring(n,n+2*e)}" }`,n+=2*e;break}default:throw new Error(`Unknown Micheline field type '${o}'`)}return{code:r,consumed:n}},t.translateMichelsonToMicheline=r,t.translateParameterMichelsonToMicheline=function(e){const t=new i.Parser(i.Grammar.fromCompiled(s.default));return h(e).forEach(e=>{t.feed(e)}),t.results[0]},t.translateMichelsonToHex=function(e){return function(e){const t=JSON.parse(e);let r=[];return r.push(n(t,"code")),r.push(n(t,"storage")),r}(r(e)).map(e=>d(e)).map(e=>c(e)).reduce((e,t)=>e+(("0000000"+(t.length/2).toString(16)).slice(-8)+t),"")},t.translateMichelineToHex=c,t.preProcessMichelsonScript=h,t.normalizeMichelineWhiteSpace=d,t.stripComments=function(e){return e.trim().split("\n").map(e=>e.replace(/\#[\s\S]+$/,"").trim()).filter(e=>e.length>0).join(" ")}}(t.TezosLanguageUtil||(t.TezosLanguageUtil={}))}).call(this,r(0).Buffer)},function(e,t,r){var n=r(73),o=r(74);e.exports={blake2b:n.blake2b,blake2bHex:n.blake2bHex,blake2bInit:n.blake2bInit,blake2bUpdate:n.blake2bUpdate,blake2bFinal:n.blake2bFinal,blake2s:o.blake2s,blake2sHex:o.blake2sHex,blake2sInit:o.blake2sInit,blake2sUpdate:o.blake2sUpdate,blake2sFinal:o.blake2sFinal}},function(e,t,r){"use strict";(function(e){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=n(r(49)),i=n(r(31)),a=o(r(5)),u=r(4),c=r(7);!function(t){function r(t){if(t<0)throw new Error("Use writeSignedInt to encode negative numbers");return e.from(e.from(function(e){if(e<128)return("0"+e.toString(16)).slice(-2);let t="";if(e>2147483648){let r=i.default(e);for(;r.greater(0);)t=("0"+r.and(127).toString(16)).slice(-2)+t,r=r.shiftRight(7)}else{let r=e;for(;r>0;)t=("0"+(127&r).toString(16)).slice(-2)+t,r>>=7}return t}(t),"hex").map((e,t)=>0===t?e:128^e).reverse()).toString("hex")}function n(e){if(0===e)return"00";const t=i.default(e).abs(),r=t.bitLength().toJSNumber();let n=[],o=t;for(let t=0;t("0"+e.toString(16)).slice(-2)).join("")}function o(t){return function(e){if(2===e.length)return parseInt(e,16);if(e.length<=8){let t=parseInt(e.slice(-2),16);for(let r=1;r0===t?e:127&e)).toString("hex"))}function l(t){const r=!(64&e.from(t.slice(0,2),"hex")[0]),n=e.from(t,"hex").map((e,t)=>0===t?63&e:127&e);let o=i.default.zero;for(let e=n.length-1;e>=0;e--)o=0===e?o.or(n[e]):o.or(i.default(n[e]).shiftLeft(7*e-1));return r?o.toJSNumber():o.negate().toJSNumber()}function p(e){return y(e.length)+e.split("").map(e=>e.charCodeAt(0).toString(16)).join("")}function f(e){if(0===parseInt(e.substring(0,8),16))return"";const t=e.slice(8);let r="";for(let e=0;e0},t.writeInt=r,t.writeSignedInt=n,t.readInt=o,t.readSignedInt=l,t.findInt=function(e,t,r=!1){let n="",s=0;for(;t+2*s-1?e.slice(0,s+1)+" return "+e.slice(s+1):" return "+e;return a(Function,l(r).concat([i])).apply(void 0,l(o))}};function h(e,t){return(e=e.slice()).push(t),e}function d(e,t){return(t=t.slice()).unshift(e),t}var b=function(e){function t(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=c(this,o(t).call(this,'JSONPath should not be called with "new" (it prevents return of (unwrapped) scalar values)'))).avoidNew=!0,r.value=e,r.name="NewError",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&s(e,t)}(t,e),t}(u(Error));function m(e,t,r,o,s){if(!(this instanceof m))try{return new m(e,t,r,o,s)}catch(e){if(!e.avoidNew)throw e;return e.value}"string"==typeof e&&(s=o,o=r,r=t,t=e,e=null);var i=e&&"object"===n(e);if(e=e||{},this.json=e.json||r,this.path=e.path||t,this.resultType=e.resultType&&e.resultType.toLowerCase()||"value",this.flatten=e.flatten||!1,this.wrap=!p.call(e,"wrap")||e.wrap,this.sandbox=e.sandbox||{},this.preventEval=e.preventEval||!1,this.parent=e.parent||null,this.parentProperty=e.parentProperty||null,this.callback=e.callback||o||null,this.otherTypeCallback=e.otherTypeCallback||s||function(){throw new TypeError("You must supply an otherTypeCallback callback option with the @other() operator.")},!1!==e.autostart){var a={path:i?e.path:t};i?"json"in e&&(a.json=e.json):a.json=r;var u=this.evaluate(a);if(!u||"object"!==n(u))throw new b(u);return u}}m.prototype.evaluate=function(e,t,r,o){var s=this,i=this.parent,a=this.parentProperty,u=this.flatten,c=this.wrap;if(this.currResultType=this.resultType,this.currPreventEval=this.preventEval,this.currSandbox=this.sandbox,r=r||this.callback,this.currOtherTypeCallback=o||this.otherTypeCallback,t=t||this.json,(e=e||this.path)&&"object"===n(e)&&!Array.isArray(e)){if(!e.path)throw new TypeError('You must supply a "path" property when providing an object argument to JSONPath.evaluate().');if(!("json"in e))throw new TypeError('You must supply a "json" property when providing an object argument to JSONPath.evaluate().');t=p.call(e,"json")?e.json:t,u=p.call(e,"flatten")?e.flatten:u,this.currResultType=p.call(e,"resultType")?e.resultType:this.currResultType,this.currSandbox=p.call(e,"sandbox")?e.sandbox:this.currSandbox,c=p.call(e,"wrap")?e.wrap:c,this.currPreventEval=p.call(e,"preventEval")?e.preventEval:this.currPreventEval,r=p.call(e,"callback")?e.callback:r,this.currOtherTypeCallback=p.call(e,"otherTypeCallback")?e.otherTypeCallback:this.currOtherTypeCallback,i=p.call(e,"parent")?e.parent:i,a=p.call(e,"parentProperty")?e.parentProperty:a,e=e.path}if(i=i||null,a=a||null,Array.isArray(e)&&(e=m.toPathString(e)),e&&t){this._obj=t;var l=m.toPathArray(e);"$"===l[0]&&l.length>1&&l.shift(),this._hasParentSelector=null;var f=this._trace(l,t,["$"],i,a,r).filter((function(e){return e&&!e.isParentSelector}));return f.length?c||1!==f.length||f[0].hasArrExpr?f.reduce((function(e,t){var r=s._getPreferredOutput(t);return u&&Array.isArray(r)?e=e.concat(r):e.push(r),e}),[]):this._getPreferredOutput(f[0]):c?[]:void 0}},m.prototype._getPreferredOutput=function(e){var t=this.currResultType;switch(t){default:throw new TypeError("Unknown result type");case"all":return e.pointer=m.toPointer(e.path),e.path="string"==typeof e.path?e.path:m.toPathString(e.path),e;case"value":case"parent":case"parentProperty":return e[t];case"path":return m.toPathString(e[t]);case"pointer":return m.toPointer(e.path)}},m.prototype._handleCallback=function(e,t,r){if(t){var n=this._getPreferredOutput(e);e.path="string"==typeof e.path?e.path:m.toPathString(e.path),t(n,r,e)}},m.prototype._trace=function(e,t,r,o,s,i,a,u){var c,l=this;if(!e.length)return c={path:r,value:t,parent:o,parentProperty:s,hasArrExpr:a},this._handleCallback(c,i,"value"),c;var f=e[0],b=e.slice(1),m=[];function g(e){Array.isArray(e)?e.forEach((function(e){m.push(e)})):m.push(e)}if(("string"!=typeof f||u)&&t&&p.call(t,f))g(this._trace(b,t[f],h(r,f),t,f,i,a));else if("*"===f)this._walk(f,b,t,r,o,s,i,(function(e,t,r,n,o,s,i,a){g(l._trace(d(e,r),n,o,s,i,a,!0,!0))}));else if(".."===f)g(this._trace(b,t,r,o,s,i,a)),this._walk(f,b,t,r,o,s,i,(function(e,t,r,o,s,i,a,u){"object"===n(o[e])&&g(l._trace(d(t,r),o[e],h(s,e),o,e,u,!0))}));else{if("^"===f)return this._hasParentSelector=!0,r.length?{path:r.slice(0,-1),expr:b,isParentSelector:!0}:[];if("~"===f)return c={path:h(r,f),value:s,parent:o,parentProperty:null},this._handleCallback(c,i,"property"),c;if("$"===f)g(this._trace(b,t,r,null,null,i,a));else if(/^(\x2D?[0-9]*):(\x2D?[0-9]*):?([0-9]*)$/.test(f))g(this._slice(f,b,t,r,o,s,i));else if(0===f.indexOf("?(")){if(this.currPreventEval)throw new Error("Eval [?(expr)] prevented in JSONPath expression.");this._walk(f,b,t,r,o,s,i,(function(e,t,r,n,o,s,i,a){l._eval(t.replace(/^\?\(((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?)\)$/,"$1"),n[e],e,o,s,i)&&g(l._trace(d(e,r),n,o,s,i,a,!0))}))}else if("("===f[0]){if(this.currPreventEval)throw new Error("Eval [(expr)] prevented in JSONPath expression.");g(this._trace(d(this._eval(f,t,r[r.length-1],r.slice(0,-1),o,s),b),t,r,o,s,i,a))}else if("@"===f[0]){var y=!1,$=f.slice(1,-2);switch($){default:throw new TypeError("Unknown value type "+$);case"scalar":t&&["object","function"].includes(n(t))||(y=!0);break;case"boolean":case"string":case"undefined":case"function":n(t)===$&&(y=!0);break;case"number":n(t)===$&&isFinite(t)&&(y=!0);break;case"nonFinite":"number"!=typeof t||isFinite(t)||(y=!0);break;case"object":t&&n(t)===$&&(y=!0);break;case"array":Array.isArray(t)&&(y=!0);break;case"other":y=this.currOtherTypeCallback(t,r,o,s);break;case"integer":t!==Number(t)||!isFinite(t)||t%1||(y=!0);break;case"null":null===t&&(y=!0)}if(y)return c={path:r,value:t,parent:o,parentProperty:s},this._handleCallback(c,i,"value"),c}else if("`"===f[0]&&t&&p.call(t,f.slice(1))){var D=f.slice(1);g(this._trace(b,t[D],h(r,D),t,D,i,a,!0))}else if(f.includes(",")){var P=f.split(","),_=!0,v=!1,I=void 0;try{for(var A,w=P[Symbol.iterator]();!(_=(A=w.next()).done);_=!0){var E=A.value;g(this._trace(d(E,b),t,r,o,s,i,!0))}}catch(e){v=!0,I=e}finally{try{_||null==w.return||w.return()}finally{if(v)throw I}}}else!u&&t&&p.call(t,f)&&g(this._trace(b,t[f],h(r,f),t,f,i,a,!0))}if(this._hasParentSelector)for(var S=0;S\n${n}`),d(n,{method:"post",body:o,headers:{"content-type":"application/json"}})}function o(e,t){b.debug("TezosNodeWriter.forgeOperations:"),b.debug(JSON.stringify(t));let r=p.TezosMessageUtils.writeBranch(e);return t.forEach(e=>r+=l.TezosMessageCodec.encodeOperation(e)),r}function s(e,t,o,s,i,a="main"){return n(this,void 0,void 0,(function*(){const n=[{protocol:o,branch:t,contents:s,signature:i.signature}],u=yield r(e,`chains/${a}/blocks/head/helpers/preapply/operations`,n),c=yield u.text();let l;try{b.debug(`TezosNodeWriter.preapplyOperation received ${c}`),l=JSON.parse(c)}catch(e){throw b.error("TezosNodeWriter.preapplyOperation failed to parse response"),new Error(`Could not parse JSON from response of chains/${a}/blocks/head/helpers/preapply/operation: '${c}' for ${n}`)}return v(c),l}))}function g(e,t,o="main"){return n(this,void 0,void 0,(function*(){const n=yield r(e,`injection/operation?chain=${o}`,t.bytes.toString("hex")),s=yield n.text();return v(s),s}))}function y(t,r,i){return n(this,void 0,void 0,(function*(){const n=yield c.TezosNodeReader.getBlockHead(t),a=o(n.hash,r),l=p.TezosMessageUtils.simpleHash(e.from(u.TezosConstants.OperationGroupWatermark+a,"hex"),32),f=yield i.sign(l),h={bytes:e.concat([e.from(a,"hex"),f]),signature:p.TezosMessageUtils.readSignatureWithHint(f,"edsig")},d=yield s(t,n.hash,n.protocol,r,h),b=yield g(t,h);return{results:d[0],operationGroupID:b}}))}function $(e,t,r,o,s){return n(this,void 0,void 0,(function*(){if(!(yield c.TezosNodeReader.isManagerKeyRevealedForAccount(e,r))){const e={kind:"reveal",source:r,fee:"0",counter:(o+1).toString(),gas_limit:"10600",storage_limit:"0",public_key:t};return s.forEach((e,t)=>{const r=o+2+t;e.counter=r.toString()}),[e,...s]}return s}))}function D(e,t,r,o,s=u.TezosConstants.DefaultDelegationFee){return n(this,void 0,void 0,(function*(){const n=(yield c.TezosNodeReader.getCounterForAccount(e,r.publicKeyHash))+1,i={kind:"delegation",source:r.publicKeyHash,fee:s.toString(),counter:n.toString(),storage_limit:u.TezosConstants.DefaultDelegationStorageLimit+"",gas_limit:u.TezosConstants.DefaultDelegationGasLimit+"",delegate:o},a=yield $(e,r.publicKey,r.publicKeyHash,n-1,[i]);return y(e,a,t)}))}function P(e,t,r,o,s,i,u,l,p,f,h=a.TezosParameterFormat.Micheline){return n(this,void 0,void 0,(function*(){const n=(yield c.TezosNodeReader.getCounterForAccount(e,r.publicKeyHash))+1,a=_(r.publicKeyHash,n,o,s,i,u,l,p,f,h),d=yield $(e,r.publicKey,r.publicKeyHash,n-1,[a]);return y(e,d,t)}))}function _(e,t,r,n,o,s,i,u,c,l=a.TezosParameterFormat.Micheline){let p={destination:r,amount:n.toString(),storage_limit:s.toString(),gas_limit:i.toString(),counter:t.toString(),fee:o.toString(),source:e,kind:"transaction"};if(void 0!==c){if(l===a.TezosParameterFormat.Michelson){const e=f.TezosLanguageUtil.translateParameterMichelsonToMicheline(c);p.parameters={entrypoint:u||"default",value:JSON.parse(e)}}else if(l===a.TezosParameterFormat.Micheline)p.parameters={entrypoint:u||"default",value:JSON.parse(c)};else if(l===a.TezosParameterFormat.MichelsonLambda){const e=f.TezosLanguageUtil.translateMichelsonToMicheline(`code ${c}`);p.parameters={entrypoint:u||"default",value:JSON.parse(e)}}}else void 0!==u&&(p.parameters={entrypoint:u,value:[]});return p}function v(e){let t="";try{const r=JSON.parse(e),n=Array.isArray(r)?r:[r];"kind"in n[0]?t=n.map(e=>`(${e.kind}: ${e.id})`).join(""):1===n.length&&1===n[0].contents.length&&"activate_account"===n[0].contents[0].kind||(t=n.map(e=>e.contents).map(e=>e.map(e=>e.metadata.operation_result).filter(e=>"applied"!==e.status).map(e=>`${e.status}: ${e.errors.map(e=>`(${e.kind}: ${e.id})`).join(", ")}\n`)).join(""))}catch(r){if(e.startsWith("Failed to parse the request body: "))t=e.slice(34);else{const t=e.replace(/\"/g,"").replace(/\n/,"");51===t.length&&"o"===t.charAt(0)||b.error(`failed to parse errors: '${r}' from '${e}'\n, PLEASE report this to the maintainers`)}}if(t.length>0)throw new Error(t)}t.forgeOperations=o,t.forgeOperationsRemotely=function(e,t,o,s="main"){return n(this,void 0,void 0,(function*(){b.debug("TezosNodeWriter.forgeOperations:"),b.debug(JSON.stringify(o)),b.warn("forgeOperationsRemotely() is not intrinsically trustless");const n=yield r(e,`chains/${s}/blocks/head/helpers/forge/operations`,{branch:t.hash,contents:o}),i=(yield n.text()).replace(/\n/g,"").replace(/['"]+/g,"");let a=Array.from(o.map(e=>e.kind)),u=!1;for(let e in a)if(u=["reveal","transaction","delegation","origination"].includes(e),u)break;if(u){const e=l.TezosMessageCodec.parseOperationGroup(i);for(let t=0;t\n${JSON.stringify(n)}`),m=JSON.parse(f.TezosLanguageUtil.translateMichelsonToMicheline(h)),b.debug(`TezosNodeWriter.sendOriginationOperation storage translation:\n${h}\n->\n${JSON.stringify(m)}`)):d===a.TezosParameterFormat.Micheline&&(n=JSON.parse(p),m=JSON.parse(h));const g=(yield c.TezosNodeReader.getCounterForAccount(e,r.publicKeyHash))+1,D={kind:"origination",source:r.publicKeyHash,fee:i.toString(),counter:g.toString(),gas_limit:l.toString(),storage_limit:u.toString(),balance:o.toString(),delegate:s,script:{code:n,storage:m}},P=yield $(e,r.publicKey,r.publicKeyHash,g-1,[D]);return y(e,P,t)}))},t.sendContractInvocationOperation=P,t.sendContractPing=function(e,t,r,o,s,i,a,u){return n(this,void 0,void 0,(function*(){return P(e,t,r,o,0,s,i,a,u,void 0)}))},t.sendKeyRevealOperation=function(e,t,r,o=u.TezosConstants.DefaultKeyRevealFee){return n(this,void 0,void 0,(function*(){const n=(yield c.TezosNodeReader.getCounterForAccount(e,r.publicKeyHash))+1,s={kind:"reveal",source:r.publicKeyHash,fee:o+"",counter:n.toString(),gas_limit:"10000",storage_limit:"0",public_key:r.publicKey};return y(e,[s],t)}))},t.sendIdentityActivationOperation=function(e,t,r,n){return y(e,[{kind:"activate_account",pkh:r.publicKeyHash,secret:n}],t)},t.testContractInvocationOperation=function(e,t,o,s,i,u,l,p,f,h,d=a.TezosParameterFormat.Micheline){return n(this,void 0,void 0,(function*(){const n=(yield c.TezosNodeReader.getCounterForAccount(e,o.publicKeyHash))+1,a=_(o.publicKeyHash,n,s,i,u,l,p,f,h,d),b=yield r(e,`chains/${t}/blocks/head/helpers/scripts/run_operation`,{chain_id:"NetXdQprcVkpaWU",operation:{branch:"BL94i2ShahPx3BoNs6tJdXDdGeoJ9ukwujUA2P8WJwULYNdimmq",contents:[a],signature:"edsigu6xFLH2NpJ1VcYshpjW99Yc1TAL1m2XBqJyXrxcZQgBMo8sszw2zm626yjpA3pWMhjpsahLrWdmvX9cqhd4ZEUchuBuFYy"}}),m=yield b.text();v(m);const g=JSON.parse(m);let y=0,$=0;for(let e of g.contents)try{y=parseInt(e.metadata.operation_result.consumed_gas)||0,$=parseInt(e.metadata.operation_result.paid_storage_size_diff)||0}catch(e){}return{gas:y,storageCost:$}}))}}(t.TezosNodeWriter||(t.TezosNodeWriter={}))}).call(this,r(0).Buffer)},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";var n=r(17),o=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=p;var s=r(15);s.inherits=r(1);var i=r(35),a=r(22);s.inherits(p,i);for(var u=o(a.prototype),c=0;c=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,o=(r-n)/4294967296;this._block.writeUInt32BE(o,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var s=this._hash();return e?s.toString(e):s},o.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=o},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{static setFetch(e){this.actualFetch=e}}t.default=n,n.fetch=(e,t)=>n.actualFetch(e,t)},function(e,t,r){(function(e){function r(e){return Object.prototype.toString.call(e)}t.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===r(e)},t.isBoolean=function(e){return"boolean"==typeof e},t.isNull=function(e){return null===e},t.isNullOrUndefined=function(e){return null==e},t.isNumber=function(e){return"number"==typeof e},t.isString=function(e){return"string"==typeof e},t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=function(e){return void 0===e},t.isRegExp=function(e){return"[object RegExp]"===r(e)},t.isObject=function(e){return"object"==typeof e&&null!==e},t.isDate=function(e){return"[object Date]"===r(e)},t.isError=function(e){return"[object Error]"===r(e)||e instanceof Error},t.isFunction=function(e){return"function"==typeof e},t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=e.isBuffer}).call(this,r(0).Buffer)},function(e,t){var r,n,o=e.exports={};function s(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(r===setTimeout)return setTimeout(e,0);if((r===s||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:s}catch(e){r=s}try{n="function"==typeof clearTimeout?clearTimeout:i}catch(e){n=i}}();var u,c=[],l=!1,p=-1;function f(){l&&u&&(l=!1,u.length?c=u.concat(c):p=-1,c.length&&h())}function h(){if(!l){var e=a(f);l=!0;for(var t=c.length;t;){for(u=c,c=[];++p1)for(var r=1;r0)throw new Error("RegExp has capture groups: "+m+"\nUse (?: … ) instead");if(!h.lineBreaks&&m.test("\n"))throw new Error("Rule should declare lineBreaks: "+m);p.push(s(b))}}var g=n&&n.fallback,y=r&&!g?"ym":"gm",$=r||g?"":"|";return{regexp:new RegExp(i(p)+$,y),groups:c,fast:o,error:n||l}}function f(e,t,r){var n=e&&(e.push||e.next);if(n&&!r[n])throw new Error("Missing state '"+n+"' (in token '"+e.defaultType+"' of state '"+t+"')");if(e&&e.pop&&1!=+e.pop)throw new Error("pop must be 1 (in token '"+e.defaultType+"' of state '"+t+"')")}var h=function(e,t){this.startState=t,this.states=e,this.buffer="",this.stack=[],this.reset()};h.prototype.reset=function(e,t){return this.buffer=e||"",this.index=0,this.line=t?t.line:1,this.col=t?t.col:1,this.queuedToken=t?t.queuedToken:null,this.queuedThrow=t?t.queuedThrow:null,this.setState(t?t.state:this.startState),this.stack=t&&t.stack?t.stack.slice():[],this},h.prototype.save=function(){return{line:this.line,col:this.col,state:this.state,stack:this.stack.slice(),queuedToken:this.queuedToken,queuedThrow:this.queuedThrow}},h.prototype.setState=function(e){if(e&&this.state!==e){this.state=e;var t=this.states[e];this.groups=t.groups,this.error=t.error,this.re=t.regexp,this.fast=t.fast}},h.prototype.popState=function(){this.setState(this.stack.pop())},h.prototype.pushState=function(e){this.stack.push(this.state),this.setState(e)};var d=r?function(e,t){return e.exec(t)}:function(e,t){var r=e.exec(t);return 0===r[0].length?null:r};function b(){return this.value}if(h.prototype._getGroup=function(e){for(var t=this.groups.length,r=0;r0&&i.length>o&&!i.warned){i.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=i.length,a=u,console&&console.warn&&console.warn(a)}return e}function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=f.bind(n);return o.listener=r,n.wrapFn=o,o}function d(e,t,r){var n=e._events;if(void 0===n)return[];var o=n[t];return void 0===o?[]:"function"==typeof o?r?[o.listener||o]:[o]:r?function(e){for(var t=new Array(e.length),r=0;r0&&(i=t[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var u=o[e];if(void 0===u)return!1;if("function"==typeof u)s(u,this,t);else{var c=u.length,l=m(u,c);for(r=0;r=0;s--)if(r[s]===t||r[s].listener===t){i=r[s].listener,o=s;break}if(o<0)return this;0===o?r.shift():function(e,t){for(;t+1=0;n--)this.removeListener(e,t[n]);return this},a.prototype.listeners=function(e){return d(this,e,!0)},a.prototype.rawListeners=function(e){return d(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):b.call(e,t)},a.prototype.listenerCount=b,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(e,t,r){(t=e.exports=r(35)).Stream=t,t.Readable=t,t.Writable=r(22),t.Duplex=r(11),t.Transform=r(38),t.PassThrough=r(58)},function(e,t,r){"use strict";(function(t,n,o){var s=r(17);function i(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var o=n.callback;t.pendingcb--,o(r),n=n.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=y;var a,u=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?n:s.nextTick;y.WritableState=g;var c=r(15);c.inherits=r(1);var l={deprecate:r(57)},p=r(36),f=r(2).Buffer,h=o.Uint8Array||function(){};var d,b=r(37);function m(){}function g(e,t){a=a||r(11),e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,c=e.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:n&&(c||0===c)?c:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var p=!1===e.decodeStrings;this.decodeStrings=!p,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,o=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,o){--t.pendingcb,r?(s.nextTick(o,n),s.nextTick(I,e,t),e._writableState.errorEmitted=!0,e.emit("error",n)):(o(n),e._writableState.errorEmitted=!0,e.emit("error",n),I(e,t))}(e,r,n,t,o);else{var i=_(r);i||r.corked||r.bufferProcessing||!r.bufferedRequest||P(e,r),n?u(D,e,r,i,o):D(e,r,i,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new i(this)}function y(e){if(a=a||r(11),!(d.call(y,this)||this instanceof a))return new y(e);this._writableState=new g(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),p.call(this)}function $(e,t,r,n,o,s,i){t.writelen=n,t.writecb=i,t.writing=!0,t.sync=!0,r?e._writev(o,t.onwrite):e._write(o,s,t.onwrite),t.sync=!1}function D(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),I(e,t)}function P(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,o=new Array(n),s=t.corkedRequestsFree;s.entry=r;for(var a=0,u=!0;r;)o[a]=r,r.isBuf||(u=!1),r=r.next,a+=1;o.allBuffers=u,$(e,t,!0,t.length,o,"",s.finish),t.pendingcb++,t.lastBufferedRequest=null,s.next?(t.corkedRequestsFree=s.next,s.next=null):t.corkedRequestsFree=new i(t),t.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,l=r.encoding,p=r.callback;if($(e,t,!1,t.objectMode?1:c.length,c,l,p),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function _(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function v(e,t){e._final((function(r){t.pendingcb--,r&&e.emit("error",r),t.prefinished=!0,e.emit("prefinish"),I(e,t)}))}function I(e,t){var r=_(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,s.nextTick(v,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),r}c.inherits(y,p),g.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(g.prototype,"buffer",{get:l.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(d=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!d.call(this,e)||this===y&&(e&&e._writableState instanceof g)}})):d=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},y.prototype.write=function(e,t,r){var n,o=this._writableState,i=!1,a=!o.objectMode&&(n=e,f.isBuffer(n)||n instanceof h);return a&&!f.isBuffer(e)&&(e=function(e){return f.from(e)}(e)),"function"==typeof t&&(r=t,t=null),a?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof r&&(r=m),o.ended?function(e,t){var r=new Error("write after end");e.emit("error",r),s.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var o=!0,i=!1;return null===r?i=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||t.objectMode||(i=new TypeError("Invalid non-string/buffer chunk")),i&&(e.emit("error",i),s.nextTick(n,i),o=!1),o}(this,o,e,r))&&(o.pendingcb++,i=function(e,t,r,n,o,s){if(!r){var i=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=f.from(t,r));return t}(t,n,o);n!==i&&(r=!0,o="buffer",n=i)}var a=t.objectMode?1:n.length;t.length+=a;var u=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(y.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),y.prototype._write=function(e,t,r){r(new Error("_write() is not implemented"))},y.prototype._writev=null,y.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,I(e,t),r&&(t.finished?s.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=b.destroy,y.prototype._undestroy=b.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(16),r(55).setImmediate,r(10))},function(e,t,r){"use strict";var n=r(2).Buffer,o=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function s(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(n.isEncoding===o||!o(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=c,t=4;break;case"utf8":this.fillLast=a,t=4;break;case"base64":this.text=l,this.end=p,t=3;break;default:return this.write=f,void(this.end=h)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function i(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function l(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function p(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function f(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=s,s.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return o>0&&(e.lastNeed=o-1),o;if(--n=0)return o>0&&(e.lastNeed=o-2),o;if(--n=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},s.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.OperationGroupWatermark="03",e.DefaultTransactionStorageLimit=496,e.DefaultTransactionGasLimit=10600,e.DefaultDelegationStorageLimit=0,e.DefaultDelegationGasLimit=1e4,e.DefaultAccountOriginationStorageLimit=496,e.DefaultAccountOriginationGasLimit=10600,e.DefaultAccountOriginationFee=1266,e.DefaultKeyRevealFee=1270,e.DefaultDelegationFee=1258,e.P005ManagerContractWithdrawalGasLimit=26283,e.P005ManagerContractDepositGasLimit=15285,e.P005ManagerContractWithdrawalStorageLimit=496,e.DefaultBatchDelay=25,e.DefaultBlockTime=60}(t.TezosConstants||(t.TezosConstants={}))},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const o=r(26),s=r(18),i=r(27);!function(e){function t(e,t,r,o){return n(this,void 0,void 0,(function*(){return i.ConseilDataClient.executeEntityQuery(e,"tezos",t,r,o)}))}function r(e,r){return n(this,void 0,void 0,(function*(){const n=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.addOrdering(o.ConseilQueryBuilder.blankQuery(),"level",s.ConseilSortDirection.DESC),1);return(yield t(e,r,"blocks",n))[0]}))}function a(e,r,o){return n(this,void 0,void 0,(function*(){return t(e,r,"blocks",o)}))}function u(e,r,o){return n(this,void 0,void 0,(function*(){return t(e,r,"operations",o)}))}function c(e,t,i,a,c=60){return n(this,void 0,void 0,(function*(){if(a<=0)throw new Error("Invalid duration");const n=(yield r(e,t)).level;let l=n,p=o.ConseilQueryBuilder.blankQuery();for(p=o.ConseilQueryBuilder.addPredicate(p,"operation_group_hash",s.ConseilOperator.EQ,[i],!1),p=o.ConseilQueryBuilder.addPredicate(p,"timestamp",s.ConseilOperator.AFTER,[(new Date).getTime()-6e4],!1),p=o.ConseilQueryBuilder.setLimit(p,1);n+a>l;){const o=yield u(e,t,p);if(o.length>0)return o[0];if(l=(yield r(e,t)).level,n+asetTimeout(e,1e3*c))}throw new Error(`Did not observe ${i} on ${t} in ${a} block${a>1?"s":""} since ${n}`)}))}e.getTezosEntityData=t,e.getBlockHead=r,e.getBlock=function(e,i,a){return n(this,void 0,void 0,(function*(){if("head"===a)return r(e,i);const n=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.addPredicate(o.ConseilQueryBuilder.blankQuery(),"hash",s.ConseilOperator.EQ,[a],!1),1);return(yield t(e,i,"blocks",n))[0]}))},e.getBlockByLevel=function(e,r,i){return n(this,void 0,void 0,(function*(){const n=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.addPredicate(o.ConseilQueryBuilder.blankQuery(),"level",s.ConseilOperator.EQ,[i],!1),1);return(yield t(e,r,"blocks",n))[0]}))},e.getAccount=function(e,r,i){return n(this,void 0,void 0,(function*(){const n=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.addPredicate(o.ConseilQueryBuilder.blankQuery(),"account_id",s.ConseilOperator.EQ,[i],!1),1);return(yield t(e,r,"accounts",n))[0]}))},e.getOperationGroup=function(e,r,i){return n(this,void 0,void 0,(function*(){const n=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.addPredicate(o.ConseilQueryBuilder.blankQuery(),"hash",s.ConseilOperator.EQ,[i],!1),1);return(yield t(e,r,"operation_groups",n))[0]}))},e.getOperation=function(e,r,i){return n(this,void 0,void 0,(function*(){const n=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.addPredicate(o.ConseilQueryBuilder.blankQuery(),"operation_group_hash",s.ConseilOperator.EQ,[i],!1),1);return(yield t(e,r,"operations",n))[0]}))},e.getBlocks=a,e.getAccounts=function(e,r,o){return n(this,void 0,void 0,(function*(){return t(e,r,"accounts",o)}))},e.getOperationGroups=function(e,r,o){return n(this,void 0,void 0,(function*(){return t(e,r,"operation_groups",o)}))},e.getOperations=u,e.getFeeStatistics=function(e,r,i){return n(this,void 0,void 0,(function*(){let n=o.ConseilQueryBuilder.blankQuery();return n=o.ConseilQueryBuilder.addPredicate(n,"kind",s.ConseilOperator.EQ,[i]),n=o.ConseilQueryBuilder.addOrdering(n,"timestamp",s.ConseilSortDirection.DESC),n=o.ConseilQueryBuilder.setLimit(n,1),t(e,r,"fees",n)}))},e.getProposals=function(e,r,o){return n(this,void 0,void 0,(function*(){return t(e,r,"proposals",o)}))},e.getBakers=function(e,r,o){return n(this,void 0,void 0,(function*(){return t(e,r,"bakers",o)}))},e.getBallots=function(e,r,o){return n(this,void 0,void 0,(function*(){return t(e,r,"ballots",o)}))},e.awaitOperationConfirmation=c,e.awaitOperationForkConfirmation=function(e,t,i,u,l){return n(this,void 0,void 0,(function*(){const n=yield c(e,t,i,u),p=n.block_level,f=n.block_hash;let h=p;for(yield new Promise(e=>setTimeout(e,50*l*1e3));h=p+l)break;yield new Promise(e=>setTimeout(e,6e4))}let d=o.ConseilQueryBuilder.blankQuery();d=o.ConseilQueryBuilder.addFields(d,"level","hash","predecessor"),d=o.ConseilQueryBuilder.addPredicate(d,"level",s.ConseilOperator.BETWEEN,[p-1,p+l]),d=o.ConseilQueryBuilder.setLimit(d,2*l);const b=yield a(e,t,d);return b.length===l+2?function(e,t,r){try{return e.sort((e,t)=>parseInt(e.level)-parseInt(t.level)).reduce((n,o,s)=>{if(!n)throw new Error("Block sequence mismatch");return s>1?o.predecessor===e[s-1].hash:1===s?n&&o.level===t&&o.hash===r&&o.predecessor===e[s-1].hash:0===s||void 0},!0)}catch(e){return!1}}(b,p,f):function(e,t,r,n){throw new Error("Not implemented")}()}))},e.getBigMapData=function(e,r){return n(this,void 0,void 0,(function*(){if(!r.startsWith("KT1"))throw new Error("Invalid address");const n=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.addFields(o.ConseilQueryBuilder.addPredicate(o.ConseilQueryBuilder.blankQuery(),"account_id",s.ConseilOperator.EQ,[r],!1),"big_map_id"),100),i=yield t(e,e.network,"originated_account_maps",n);if(i.length<1)return;const a=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.addPredicate(o.ConseilQueryBuilder.blankQuery(),"big_map_id",i.length>1?s.ConseilOperator.IN:s.ConseilOperator.EQ,i.map(e=>e.big_map_id),!1),100),u=yield t(e,e.network,"big_maps",a),c=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.addFields(o.ConseilQueryBuilder.addPredicate(o.ConseilQueryBuilder.blankQuery(),"big_map_id",i.length>1?s.ConseilOperator.IN:s.ConseilOperator.EQ,i.map(e=>e.big_map_id),!1),"big_map_id","key","value"),1e3),l=yield t(e,e.network,"big_map_contents",c);let p=[];for(const e of u){const t={index:Number(e.big_map_id),key:e.key_type,value:e.value_type};let r=[];for(const e of l.filter(e=>e.big_map_id===t.index))r.push({key:JSON.stringify(e.key),value:JSON.stringify(e.value)});p.push({definition:t,content:r})}return{contract:r,maps:p}}))},e.getEntityQueryForId=function(e){let t=o.ConseilQueryBuilder.setLimit(o.ConseilQueryBuilder.blankQuery(),1);if("number"==typeof e){if(Number(e)<0)throw new Error("Invalid numeric id parameter");return{entity:"blocks",query:o.ConseilQueryBuilder.addPredicate(t,"level",s.ConseilOperator.EQ,[e],!1)}}if("string"==typeof e){const r=String(e);if(r.startsWith("tz1")||r.startsWith("tz2")||r.startsWith("tz3")||r.startsWith("KT1"))return{entity:"accounts",query:o.ConseilQueryBuilder.addPredicate(t,"account_id",s.ConseilOperator.EQ,[e],!1)};if(r.startsWith("B"))return{entity:"blocks",query:o.ConseilQueryBuilder.addPredicate(t,"hash",s.ConseilOperator.EQ,[e],!1)};if(r.startsWith("o"))return t=o.ConseilQueryBuilder.setLimit(t,1e3),{entity:"operations",query:o.ConseilQueryBuilder.addPredicate(t,"operation_group_hash",s.ConseilOperator.EQ,[e],!1)}}throw new Error("Invalid id parameter")}}(t.TezosConseilClient||(t.TezosConseilClient={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(18);!function(e){e.blankQuery=function(){return{fields:[],predicates:[],orderBy:[],aggregation:[],limit:100}},e.addFields=function(e,...t){let r=Object.assign({},e),n=new Set(e.fields);return t.forEach(e=>n.add(e)),r.fields=Array.from(n.values()),r},e.addPredicate=function(e,t,r,o,s=!1,i){if(r===n.ConseilOperator.BETWEEN&&2!==o.length)throw new Error("BETWEEN operation requires a list of two values.");if(r===n.ConseilOperator.IN&&o.length<2)throw new Error("IN operation requires a list of two or more values.");if(1!==o.length&&r!==n.ConseilOperator.IN&&r!==n.ConseilOperator.BETWEEN&&r!==n.ConseilOperator.ISNULL)throw new Error(`invalid values list for ${r}.`);let a=Object.assign({},e);return a.predicates.push({field:t,operation:r,set:o,inverse:s,group:i}),a},e.addOrdering=function(e,t,r=n.ConseilSortDirection.ASC){let o=Object.assign({},e);return o.orderBy.push({field:t,direction:r}),o},e.setLimit=function(e,t){if(t<1)throw new Error("Limit cannot be less than one.");let r=Object.assign({},e);return r.limit=t,r},e.setOutputType=function(e,t){let r=Object.assign({},e);return r.output=t,r},e.addAggregationFunction=function(e,t,r){if(!e.fields.includes(t))throw new Error("Cannot apply an aggregation function on a field not being returned.");let n=Object.assign({},e);return n.aggregation.push({field:t,function:r}),n}}(t.ConseilQueryBuilder||(t.ConseilQueryBuilder={}))},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(28),i=o(r(14)),a=o(r(12)).default.log,u=i.default.fetch;!function(e){e.executeEntityQuery=function(e,t,r,o,i){return n(this,void 0,void 0,(function*(){const n=`${e.url}/v2/data/${t}/${r}/${o}`;return a.debug(`ConseilDataClient.executeEntityQuery request: ${n}, ${JSON.stringify(i)}`),u(n,{method:"post",headers:{apiKey:e.apiKey,"Content-Type":"application/json"},body:JSON.stringify(i)}).then(e=>{if(!e.ok)throw a.error(`ConseilDataClient.executeEntityQuery request: ${n}, ${JSON.stringify(i)}, failed with ${e.statusText}(${e.status})`),new s.ConseilRequestError(e.status,e.statusText,n,i);return e}).then(e=>{const t=e.headers.get("content-type").toLowerCase().includes("application/json"),r=t?e.json():e.text();return a.debug(`ConseilDataClient.executeEntityQuery response: ${t?JSON.stringify(r):r}`),r})}))}}(t.ConseilDataClient||(t.ConseilDataClient={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(29);class o extends n.ServiceRequestError{constructor(e,t,r,n){super(e,t,r,null),this.conseilQuery=n}toString(){return`ConseilRequestError for ${this.serverURL} with ${this.httpStatus} and ${this.httpMessage}`}}t.ConseilRequestError=o;class s extends n.ServiceResponseError{constructor(e,t,r,n,o){super(e,t,r,null,o),this.conseilQuery=n}}t.ConseilResponseError=s},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n extends Error{constructor(e,t,r,n){super(),this.httpStatus=e,this.httpMessage=t,this.serverURL=r,this.data=n}}t.ServiceRequestError=n;class o extends Error{constructor(e,t,r,n,o){super(),this.httpStatus=e,this.httpMessage=t,this.serverURL=r,this.data=n,this.response=o}}t.ServiceResponseError=o},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){(function(e){var n,o=function(e){"use strict";var t=9007199254740992,r=l(t),n="function"==typeof BigInt;function s(e,t,r,n){return void 0===e?s[0]:void 0!==t&&(10!=+t||r)?L(e,t,r,n):W(e)}function i(e,t){this.value=e,this.sign=t,this.isSmall=!1}function a(e){this.value=e,this.sign=e<0,this.isSmall=!0}function u(e){this.value=e}function c(e){return-t0?Math.floor(e):Math.ceil(e)}function b(e,t){var r,n,o=e.length,s=t.length,i=new Array(o),a=0;for(n=0;n=1e7?1:0,i[n]=r-1e7*a;for(;n0&&i.push(a),i}function m(e,t){return e.length>=t.length?b(e,t):b(t,e)}function g(e,t){var r,n,o=e.length,s=new Array(o);for(n=0;n0;)s[n++]=t%1e7,t=Math.floor(t/1e7);return s}function y(e,t){var r,n,o=e.length,s=t.length,i=new Array(o),a=0;for(r=0;r0;)s[n++]=i%1e7,i=Math.floor(i/1e7);return s}function _(e,t){for(var r=[];t-- >0;)r.push(0);return r.concat(e)}function v(e,t,r){return new i(e<1e7?P(t,e):D(t,l(e)),r)}function I(e){var t,r,n,o,s=e.length,i=h(s+s);for(n=0;n=0;--r)o=(s=1e7*o+e[r])-(n=d(s/t))*t,a[r]=0|n;return[a,0|o]}function w(e,t){var r,o=W(t);if(n)return[new u(e.value/o.value),new u(e.value%o.value)];var c,b=e.value,m=o.value;if(0===m)throw new Error("Cannot divide by zero");if(e.isSmall)return o.isSmall?[new a(d(b/m)),new a(b%m)]:[s[0],e];if(o.isSmall){if(1===m)return[e,s[0]];if(-1==m)return[e.negate(),s[0]];var g=Math.abs(m);if(g<1e7){c=p((r=A(b,g))[0]);var $=r[1];return e.sign&&($=-$),"number"==typeof c?(e.sign!==o.sign&&(c=-c),[new a(c),new a($)]):[new i(c,e.sign!==o.sign),new a($)]}m=l(g)}var D=E(b,m);if(-1===D)return[s[0],e];if(0===D)return[s[e.sign===o.sign?1:-1],s[0]];c=(r=b.length+m.length<=200?function(e,t){var r,n,o,s,i,a,u,c=e.length,l=t.length,f=h(t.length),d=t[l-1],b=Math.ceil(1e7/(2*d)),m=P(e,b),g=P(t,b);for(m.length<=c&&m.push(0),g.push(0),d=g[l-1],n=c-l;n>=0;n--){for(r=1e7-1,m[n+l]!==d&&(r=Math.floor((1e7*m[n+l]+m[n+l-1])/d)),o=0,s=0,a=g.length,i=0;iu&&(o=1e7*(o+1)),r=Math.ceil(o/s);do{if(E(i=P(t,r),l)<=0)break;r--}while(r);c.push(r),l=y(l,i)}return c.reverse(),[p(c),p(l)]}(b,m))[0];var _=e.sign!==o.sign,v=r[1],I=e.sign;return"number"==typeof c?(_&&(c=-c),c=new a(c)):c=new i(c,_),"number"==typeof v?(I&&(v=-v),v=new a(v)):v=new i(v,I),[c,v]}function E(e,t){if(e.length!==t.length)return e.length>t.length?1:-1;for(var r=e.length-1;r>=0;r--)if(e[r]!==t[r])return e[r]>t[r]?1:-1;return 0}function S(e){var t=e.abs();return!t.isUnit()&&(!!(t.equals(2)||t.equals(3)||t.equals(5))||!(t.isEven()||t.isDivisibleBy(3)||t.isDivisibleBy(5))&&(!!t.lesser(49)||void 0))}function R(e,t){for(var r,n,s,i=e.prev(),a=i,u=0;a.isEven();)a=a.divide(2),u++;e:for(n=0;n=0?n=y(e,t):(n=y(t,e),r=!r),"number"==typeof(n=p(n))?(r&&(n=-n),new a(n)):new i(n,r)}(r,n,this.sign)},i.prototype.minus=i.prototype.subtract,a.prototype.subtract=function(e){var t=W(e),r=this.value;if(r<0!==t.sign)return this.add(t.negate());var n=t.value;return t.isSmall?new a(r-n):$(n,Math.abs(r),r>=0)},a.prototype.minus=a.prototype.subtract,u.prototype.subtract=function(e){return new u(this.value-W(e).value)},u.prototype.minus=u.prototype.subtract,i.prototype.negate=function(){return new i(this.value,!this.sign)},a.prototype.negate=function(){var e=this.sign,t=new a(-this.value);return t.sign=!e,t},u.prototype.negate=function(){return new u(-this.value)},i.prototype.abs=function(){return new i(this.value,!1)},a.prototype.abs=function(){return new a(Math.abs(this.value))},u.prototype.abs=function(){return new u(this.value>=0?this.value:-this.value)},i.prototype.multiply=function(e){var t,r,n,o=W(e),a=this.value,u=o.value,c=this.sign!==o.sign;if(o.isSmall){if(0===u)return s[0];if(1===u)return this;if(-1===u)return this.negate();if((t=Math.abs(u))<1e7)return new i(P(a,t),c);u=l(t)}return r=a.length,n=u.length,new i(-.012*r-.012*n+15e-6*r*n>0?function e(t,r){var n=Math.max(t.length,r.length);if(n<=30)return D(t,r);n=Math.ceil(n/2);var o=t.slice(n),s=t.slice(0,n),i=r.slice(n),a=r.slice(0,n),u=e(s,a),c=e(o,i),l=e(m(s,o),m(a,i)),p=m(m(u,_(y(y(l,u),c),n)),_(c,2*n));return f(p),p}(a,u):D(a,u),c)},i.prototype.times=i.prototype.multiply,a.prototype._multiplyBySmall=function(e){return c(e.value*this.value)?new a(e.value*this.value):v(Math.abs(e.value),l(Math.abs(this.value)),this.sign!==e.sign)},i.prototype._multiplyBySmall=function(e){return 0===e.value?s[0]:1===e.value?this:-1===e.value?this.negate():v(Math.abs(e.value),this.value,this.sign!==e.sign)},a.prototype.multiply=function(e){return W(e)._multiplyBySmall(this)},a.prototype.times=a.prototype.multiply,u.prototype.multiply=function(e){return new u(this.value*W(e).value)},u.prototype.times=u.prototype.multiply,i.prototype.square=function(){return new i(I(this.value),!1)},a.prototype.square=function(){var e=this.value*this.value;return c(e)?new a(e):new i(I(l(Math.abs(this.value))),!1)},u.prototype.square=function(e){return new u(this.value*this.value)},i.prototype.divmod=function(e){var t=w(this,e);return{quotient:t[0],remainder:t[1]}},u.prototype.divmod=a.prototype.divmod=i.prototype.divmod,i.prototype.divide=function(e){return w(this,e)[0]},u.prototype.over=u.prototype.divide=function(e){return new u(this.value/W(e).value)},a.prototype.over=a.prototype.divide=i.prototype.over=i.prototype.divide,i.prototype.mod=function(e){return w(this,e)[1]},u.prototype.mod=u.prototype.remainder=function(e){return new u(this.value%W(e).value)},a.prototype.remainder=a.prototype.mod=i.prototype.remainder=i.prototype.mod,i.prototype.pow=function(e){var t,r,n,o=W(e),i=this.value,u=o.value;if(0===u)return s[1];if(0===i)return s[0];if(1===i)return s[1];if(-1===i)return o.isEven()?s[1]:s[-1];if(o.sign)return s[0];if(!o.isSmall)throw new Error("The exponent "+o.toString()+" is too large.");if(this.isSmall&&c(t=Math.pow(i,u)))return new a(d(t));for(r=this,n=s[1];!0&u&&(n=n.times(r),--u),0!==u;)u/=2,r=r.square();return n},a.prototype.pow=i.prototype.pow,u.prototype.pow=function(e){var t=W(e),r=this.value,n=t.value,o=BigInt(0),i=BigInt(1),a=BigInt(2);if(n===o)return s[1];if(r===o)return s[0];if(r===i)return s[1];if(r===BigInt(-1))return t.isEven()?s[1]:s[-1];if(t.isNegative())return new u(o);for(var c=this,l=s[1];(n&i)===i&&(l=l.times(c),--n),n!==o;)n/=a,c=c.square();return l},i.prototype.modPow=function(e,t){if(e=W(e),(t=W(t)).isZero())throw new Error("Cannot take modPow with modulus 0");var r=s[1],n=this.mod(t);for(e.isNegative()&&(e=e.multiply(s[-1]),n=n.modInv(t));e.isPositive();){if(n.isZero())return s[0];e.isOdd()&&(r=r.multiply(n).mod(t)),e=e.divide(2),n=n.square().mod(t)}return r},u.prototype.modPow=a.prototype.modPow=i.prototype.modPow,i.prototype.compareAbs=function(e){var t=W(e),r=this.value,n=t.value;return t.isSmall?1:E(r,n)},a.prototype.compareAbs=function(e){var t=W(e),r=Math.abs(this.value),n=t.value;return t.isSmall?r===(n=Math.abs(n))?0:r>n?1:-1:-1},u.prototype.compareAbs=function(e){var t=this.value,r=W(e).value;return(t=t>=0?t:-t)===(r=r>=0?r:-r)?0:t>r?1:-1},i.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=W(e),r=this.value,n=t.value;return this.sign!==t.sign?t.sign?1:-1:t.isSmall?this.sign?-1:1:E(r,n)*(this.sign?-1:1)},i.prototype.compareTo=i.prototype.compare,a.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=W(e),r=this.value,n=t.value;return t.isSmall?r==n?0:r>n?1:-1:r<0!==t.sign?r<0?-1:1:r<0?1:-1},a.prototype.compareTo=a.prototype.compare,u.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=this.value,r=W(e).value;return t===r?0:t>r?1:-1},u.prototype.compareTo=u.prototype.compare,i.prototype.equals=function(e){return 0===this.compare(e)},u.prototype.eq=u.prototype.equals=a.prototype.eq=a.prototype.equals=i.prototype.eq=i.prototype.equals,i.prototype.notEquals=function(e){return 0!==this.compare(e)},u.prototype.neq=u.prototype.notEquals=a.prototype.neq=a.prototype.notEquals=i.prototype.neq=i.prototype.notEquals,i.prototype.greater=function(e){return this.compare(e)>0},u.prototype.gt=u.prototype.greater=a.prototype.gt=a.prototype.greater=i.prototype.gt=i.prototype.greater,i.prototype.lesser=function(e){return this.compare(e)<0},u.prototype.lt=u.prototype.lesser=a.prototype.lt=a.prototype.lesser=i.prototype.lt=i.prototype.lesser,i.prototype.greaterOrEquals=function(e){return this.compare(e)>=0},u.prototype.geq=u.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals=i.prototype.geq=i.prototype.greaterOrEquals,i.prototype.lesserOrEquals=function(e){return this.compare(e)<=0},u.prototype.leq=u.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals=i.prototype.leq=i.prototype.lesserOrEquals,i.prototype.isEven=function(){return 0==(1&this.value[0])},a.prototype.isEven=function(){return 0==(1&this.value)},u.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)},i.prototype.isOdd=function(){return 1==(1&this.value[0])},a.prototype.isOdd=function(){return 1==(1&this.value)},u.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)},i.prototype.isPositive=function(){return!this.sign},a.prototype.isPositive=function(){return this.value>0},u.prototype.isPositive=a.prototype.isPositive,i.prototype.isNegative=function(){return this.sign},a.prototype.isNegative=function(){return this.value<0},u.prototype.isNegative=a.prototype.isNegative,i.prototype.isUnit=function(){return!1},a.prototype.isUnit=function(){return 1===Math.abs(this.value)},u.prototype.isUnit=function(){return this.abs().value===BigInt(1)},i.prototype.isZero=function(){return!1},a.prototype.isZero=function(){return 0===this.value},u.prototype.isZero=function(){return this.value===BigInt(0)},i.prototype.isDivisibleBy=function(e){var t=W(e);return!t.isZero()&&(!!t.isUnit()||(0===t.compareAbs(2)?this.isEven():this.mod(t).isZero()))},u.prototype.isDivisibleBy=a.prototype.isDivisibleBy=i.prototype.isDivisibleBy,i.prototype.isPrime=function(e){var t=S(this);if(void 0!==t)return t;var r=this.abs(),n=r.bitLength();if(n<=64)return R(r,[2,3,5,7,11,13,17,19,23,29,31,37]);for(var s=Math.log(2)*n.toJSNumber(),i=Math.ceil(!0===e?2*Math.pow(s,2):s),a=[],u=0;u-t?new a(e-1):new i(r,!0)},u.prototype.prev=function(){return new u(this.value-BigInt(1))};for(var T=[1];2*T[T.length-1]<=1e7;)T.push(2*T[T.length-1]);var C=T.length,U=T[C-1];function O(e){return Math.abs(e)<=1e7}function N(e,t,r){t=W(t);for(var n=e.isNegative(),s=t.isNegative(),i=n?e.not():e,a=s?t.not():t,u=0,c=0,l=null,p=null,f=[];!i.isZero()||!a.isZero();)u=(l=w(i,U))[1].toJSNumber(),n&&(u=U-1-u),c=(p=w(a,U))[1].toJSNumber(),s&&(c=U-1-c),i=l[0],a=p[0],f.push(r(u,c));for(var h=0!==r(n?1:0,s?1:0)?o(-1):o(0),d=f.length-1;d>=0;d-=1)h=h.multiply(U).add(o(f[d]));return h}i.prototype.shiftLeft=function(e){var t=W(e).toJSNumber();if(!O(t))throw new Error(String(t)+" is too large for shifting.");if(t<0)return this.shiftRight(-t);var r=this;if(r.isZero())return r;for(;t>=C;)r=r.multiply(U),t-=C-1;return r.multiply(T[t])},u.prototype.shiftLeft=a.prototype.shiftLeft=i.prototype.shiftLeft,i.prototype.shiftRight=function(e){var t,r=W(e).toJSNumber();if(!O(r))throw new Error(String(r)+" is too large for shifting.");if(r<0)return this.shiftLeft(-r);for(var n=this;r>=C;){if(n.isZero()||n.isNegative()&&n.isUnit())return n;n=(t=w(n,U))[1].isNegative()?t[0].prev():t[0],r-=C-1}return(t=w(n,T[r]))[1].isNegative()?t[0].prev():t[0]},u.prototype.shiftRight=a.prototype.shiftRight=i.prototype.shiftRight,i.prototype.not=function(){return this.negate().prev()},u.prototype.not=a.prototype.not=i.prototype.not,i.prototype.and=function(e){return N(this,e,(function(e,t){return e&t}))},u.prototype.and=a.prototype.and=i.prototype.and,i.prototype.or=function(e){return N(this,e,(function(e,t){return e|t}))},u.prototype.or=a.prototype.or=i.prototype.or,i.prototype.xor=function(e){return N(this,e,(function(e,t){return e^t}))},u.prototype.xor=a.prototype.xor=i.prototype.xor;function x(e){var t=e.value,r="number"==typeof t?t|1<<30:"bigint"==typeof t?t|BigInt(1<<30):t[0]+1e7*t[1]|1073758208;return r&-r}function M(e,t){return e=W(e),t=W(t),e.greater(t)?e:t}function k(e,t){return e=W(e),t=W(t),e.lesser(t)?e:t}function F(e,t){if(e=W(e).abs(),t=W(t).abs(),e.equals(t))return e;if(e.isZero())return t;if(t.isZero())return e;for(var r,n,o=s[1];e.isEven()&&t.isEven();)r=k(x(e),x(t)),e=e.divide(r),t=t.divide(r),o=o.multiply(r);for(;e.isEven();)e=e.divide(x(e));do{for(;t.isEven();)t=t.divide(x(t));e.greater(t)&&(n=t,t=e,e=n),t=t.subtract(e)}while(!t.isZero());return o.isUnit()?e:e.multiply(o)}i.prototype.bitLength=function(){var e=this;return e.compareTo(o(0))<0&&(e=e.negate().subtract(o(1))),0===e.compareTo(o(0))?o(0):o(function e(t,r){if(r.compareTo(t)<=0){var n=e(t,r.square(r)),s=n.p,i=n.e,a=s.multiply(r);return a.compareTo(t)<=0?{p:a,e:2*i+1}:{p:s,e:2*i}}return{p:o(1),e:0}}(e,o(2)).e).add(o(1))},u.prototype.bitLength=a.prototype.bitLength=i.prototype.bitLength;var L=function(e,t,r,n){r=r||"0123456789abcdefghijklmnopqrstuvwxyz",e=String(e),n||(e=e.toLowerCase(),r=r.toLowerCase());var o,s=e.length,i=Math.abs(t),a={};for(o=0;o=i)){if("1"===l&&1===i)continue;throw new Error(l+" is not a valid digit in base "+t+".")}}t=W(t);var u=[],c="-"===e[0];for(o=c?1:0;o"!==e[o]&&o=0;n--)o=o.add(e[n].times(i)),i=i.times(t);return r?o.negate():o}function B(e,t){if((t=o(t)).isZero()){if(e.isZero())return{value:[0],isNegative:!1};throw new Error("Cannot convert nonzero numbers to base 0.")}if(t.equals(-1)){if(e.isZero())return{value:[0],isNegative:!1};if(e.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-e.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:!1};var r=Array.apply(null,Array(e.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);return r.unshift([1]),{value:[].concat.apply([],r),isNegative:!1}}var n=!1;if(e.isNegative()&&t.isPositive()&&(n=!0,e=e.abs()),t.isUnit())return e.isZero()?{value:[0],isNegative:!1}:{value:Array.apply(null,Array(e.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:n};for(var s,i=[],a=e;a.isNegative()||a.compareAbs(t)>=0;){s=a.divmod(t),a=s.quotient;var u=s.remainder;u.isNegative()&&(u=t.minus(u).abs(),a=a.next()),i.push(u.toJSNumber())}return i.push(a.toJSNumber()),{value:i.reverse(),isNegative:n}}function z(e,t,r){var n=B(e,t);return(n.isNegative?"-":"")+n.value.map((function(e){return function(e,t){return e<(t=t||"0123456789abcdefghijklmnopqrstuvwxyz").length?t[e]:"<"+e+">"}(e,r)})).join("")}function j(e){if(c(+e)){var t=+e;if(t===d(t))return n?new u(BigInt(t)):new a(t);throw new Error("Invalid integer: "+e)}var r="-"===e[0];r&&(e=e.slice(1));var o=e.split(/e/i);if(o.length>2)throw new Error("Invalid integer: "+o.join("e"));if(2===o.length){var s=o[1];if("+"===s[0]&&(s=s.slice(1)),(s=+s)!==d(s)||!c(s))throw new Error("Invalid integer: "+s+" is not a valid exponent.");var l=o[0],p=l.indexOf(".");if(p>=0&&(s-=l.length-p-1,l=l.slice(0,p)+l.slice(p+1)),s<0)throw new Error("Cannot include negative exponent part for integers");e=l+=new Array(s+1).join("0")}if(!/^([0-9][0-9]*)$/.test(e))throw new Error("Invalid integer: "+e);if(n)return new u(BigInt(r?"-"+e:e));for(var h=[],b=e.length,m=b-7;b>0;)h.push(+e.slice(m,b)),(m-=7)<0&&(m=0),b-=7;return f(h),new i(h,r)}function W(e){return"number"==typeof e?function(e){if(n)return new u(BigInt(e));if(c(e)){if(e!==d(e))throw new Error(e+" is not an integer.");return new a(e)}return j(e.toString())}(e):"string"==typeof e?j(e):"bigint"==typeof e?new u(e):e}i.prototype.toArray=function(e){return B(this,e)},a.prototype.toArray=function(e){return B(this,e)},u.prototype.toArray=function(e){return B(this,e)},i.prototype.toString=function(e,t){if(void 0===e&&(e=10),10!==e)return z(this,e,t);for(var r,n=this.value,o=n.length,s=String(n[--o]);--o>=0;)r=String(n[o]),s+="0000000".slice(r.length)+r;return(this.sign?"-":"")+s},a.prototype.toString=function(e,t){return void 0===e&&(e=10),10!=e?z(this,e,t):String(this.value)},u.prototype.toString=a.prototype.toString,u.prototype.toJSON=i.prototype.toJSON=a.prototype.toJSON=function(){return this.toString()},i.prototype.valueOf=function(){return parseInt(this.toString(),10)},i.prototype.toJSNumber=i.prototype.valueOf,a.prototype.valueOf=function(){return this.value},a.prototype.toJSNumber=a.prototype.valueOf,u.prototype.valueOf=u.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};for(var H=0;H<1e3;H++)s[H]=W(H),H>0&&(s[-H]=W(-H));return s.one=s[1],s.zero=s[0],s.minusOne=s[-1],s.max=M,s.min=k,s.gcd=F,s.lcm=function(e,t){return e=W(e).abs(),t=W(t).abs(),e.divide(F(e,t)).multiply(t)},s.isInstance=function(e){return e instanceof i||e instanceof a||e instanceof u},s.randBetween=function(e,t,r){e=W(e),t=W(t);var n=r||Math.random,o=k(e,t),i=M(e,t).subtract(o).add(1);if(i.isSmall)return o.add(Math.floor(n()*i));for(var a=B(i,1e7).value,u=[],c=!0,l=0;l0&&t.push(" ⬆ ︎"+n+" more lines identical to this"),n=0,t.push(" "+i)),r=i}},s.prototype.getSymbolDisplay=function(e){var t=typeof e;if("string"===t)return e;if("object"===t&&e.literal)return JSON.stringify(e.literal);if("object"===t&&e instanceof RegExp)return"character matching "+e;if("object"===t&&e.type)return e.type+" token";throw new Error("Unknown symbol type: "+e)},s.prototype.buildFirstStateStack=function(e,t){if(-1!==t.indexOf(e))return null;if(0===e.wantedBy.length)return[e];var r=e.wantedBy[0],n=[e].concat(t),o=this.buildFirstStateStack(r,n);return null===o?null:[e].concat(o)},s.prototype.save=function(){var e=this.table[this.current];return e.lexerState=this.lexerState,e},s.prototype.restore=function(e){var t=e.index;this.current=t,this.table[t]=e,this.table.splice(t+1),this.lexerState=e.lexerState,this.results=this.finish()},s.prototype.rewind=function(e){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[e])},s.prototype.finish=function(){var e=[],t=this.grammar.start;return this.table[this.table.length-1].states.forEach((function(r){r.rule.name===t&&r.dot===r.rule.symbols.length&&0===r.reference&&r.data!==s.fail&&e.push(r)})),e.map((function(e){return e.data}))},{Parser:s,Grammar:n,Rule:e}},e.exports?e.exports=o():n.nearley=o()},function(e,t,r){"use strict";var n=r(2).Buffer,o=r(34).Transform;function s(e){o.call(this),this._block=n.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(1)(s,o),s.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},s.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},s.prototype.update=function(e,t){if(function(e,t){if(!n.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");n.isBuffer(e)||(e=n.from(e,t));for(var r=this._block,o=0;this._blockOffset+e.length-o>=this._blockSize;){for(var s=this._blockOffset;s0;++i)this._length[i]+=a,(a=this._length[i]/4294967296|0)>0&&(this._length[i]-=4294967296*a);return this},s.prototype._update=function(){throw new Error("_update is not implemented")},s.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},s.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=s},function(e,t,r){e.exports=o;var n=r(20).EventEmitter;function o(){n.call(this)}r(1)(o,n),o.Readable=r(21),o.Writable=r(59),o.Duplex=r(60),o.Transform=r(61),o.PassThrough=r(62),o.Stream=o,o.prototype.pipe=function(e,t){var r=this;function o(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function s(){r.readable&&r.resume&&r.resume()}r.on("data",o),e.on("drain",s),e._isStdio||t&&!1===t.end||(r.on("end",a),r.on("close",u));var i=!1;function a(){i||(i=!0,e.end())}function u(){i||(i=!0,"function"==typeof e.destroy&&e.destroy())}function c(e){if(l(),0===n.listenerCount(this,"error"))throw e}function l(){r.removeListener("data",o),e.removeListener("drain",s),r.removeListener("end",a),r.removeListener("close",u),r.removeListener("error",c),e.removeListener("error",c),r.removeListener("end",l),r.removeListener("close",l),e.removeListener("close",l)}return r.on("error",c),e.on("error",c),r.on("end",l),r.on("close",l),e.on("close",l),e.emit("pipe",r),e}},function(e,t,r){"use strict";(function(t,n){var o=r(17);e.exports=$;var s,i=r(30);$.ReadableState=y;r(20).EventEmitter;var a=function(e,t){return e.listeners(t).length},u=r(36),c=r(2).Buffer,l=t.Uint8Array||function(){};var p=r(15);p.inherits=r(1);var f=r(52),h=void 0;h=f&&f.debuglog?f.debuglog("stream"):function(){};var d,b=r(53),m=r(37);p.inherits($,u);var g=["error","close","destroy","pause","resume"];function y(e,t){e=e||{};var n=t instanceof(s=s||r(11));this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,i=e.readableHighWaterMark,a=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:n&&(i||0===i)?i:a,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new b,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(d||(d=r(23).StringDecoder),this.decoder=new d(e.encoding),this.encoding=e.encoding)}function $(e){if(s=s||r(11),!(this instanceof $))return new $(e);this._readableState=new y(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),u.call(this)}function D(e,t,r,n,o){var s,i=e._readableState;null===t?(i.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,v(e)}(e,i)):(o||(s=function(e,t){var r;n=t,c.isBuffer(n)||n instanceof l||"string"==typeof t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));var n;return r}(i,t)),s?e.emit("error",s):i.objectMode||t&&t.length>0?("string"==typeof t||i.objectMode||Object.getPrototypeOf(t)===c.prototype||(t=function(e){return c.from(e)}(t)),n?i.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):P(e,i,t,!0):i.ended?e.emit("error",new Error("stream.push() after EOF")):(i.reading=!1,i.decoder&&!r?(t=i.decoder.write(t),i.objectMode||0!==t.length?P(e,i,t,!1):A(e,i)):P(e,i,t,!1))):n||(i.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function v(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(h("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(I,e):I(e))}function I(e){h("emit readable"),e.emit("readable"),R(e)}function A(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(w,e,t))}function w(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;es.length?s.length:e;if(i===s.length?o+=s:o+=s.slice(0,e),0===(e-=i)){i===s.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=s.slice(i));break}++n}return t.length-=n,o}(e,t):function(e,t){var r=c.allocUnsafe(e),n=t.head,o=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var s=n.data,i=e>s.length?s.length:e;if(s.copy(r,r.length-e,0,i),0===(e-=i)){i===s.length?(++o,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=s.slice(i));break}++o}return t.length-=o,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function C(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(U,t,e))}function U(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function O(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return h("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?C(this):v(this),null;if(0===(e=_(e,t))&&t.ended)return 0===t.length&&C(this),null;var n,o=t.needReadable;return h("need readable",o),(0===t.length||t.length-e0?T(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&C(this)),null!==n&&this.emit("data",n),n},$.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},$.prototype.pipe=function(e,t){var r=this,s=this._readableState;switch(s.pipesCount){case 0:s.pipes=e;break;case 1:s.pipes=[s.pipes,e];break;default:s.pipes.push(e)}s.pipesCount+=1,h("pipe count=%d opts=%j",s.pipesCount,t);var u=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?l:$;function c(t,n){h("onunpipe"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,h("cleanup"),e.removeListener("close",g),e.removeListener("finish",y),e.removeListener("drain",p),e.removeListener("error",m),e.removeListener("unpipe",c),r.removeListener("end",l),r.removeListener("end",$),r.removeListener("data",b),f=!0,!s.awaitDrain||e._writableState&&!e._writableState.needDrain||p())}function l(){h("onend"),e.end()}s.endEmitted?o.nextTick(u):r.once("end",u),e.on("unpipe",c);var p=function(e){return function(){var t=e._readableState;h("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&a(e,"data")&&(t.flowing=!0,R(e))}}(r);e.on("drain",p);var f=!1;var d=!1;function b(t){h("ondata"),d=!1,!1!==e.write(t)||d||((1===s.pipesCount&&s.pipes===e||s.pipesCount>1&&-1!==O(s.pipes,e))&&!f&&(h("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,d=!0),r.pause())}function m(t){h("onerror",t),$(),e.removeListener("error",m),0===a(e,"error")&&e.emit("error",t)}function g(){e.removeListener("finish",y),$()}function y(){h("onfinish"),e.removeListener("close",g),$()}function $(){h("unpipe"),r.unpipe(e)}return r.on("data",b),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?i(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",m),e.once("close",g),e.once("finish",y),e.emit("pipe",r),s.flowing||(h("pipe resume"),r.resume()),e},$.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var s=0;s>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function f(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function h(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}n(u,o),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,o=0|this._b,s=0|this._c,a=0|this._d,u=0|this._e,d=0|this._f,b=0|this._g,m=0|this._h,g=0;g<16;++g)r[g]=e.readInt32BE(4*g);for(;g<64;++g)r[g]=0|(((t=r[g-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[g-7]+h(r[g-15])+r[g-16];for(var y=0;y<64;++y){var $=m+f(u)+c(u,d,b)+i[y]+r[y]|0,D=p(n)+l(n,o,s)|0;m=b,b=d,d=u,u=a+$|0,a=s,s=o,o=n,n=$+D|0}this._a=n+this._a|0,this._b=o+this._b|0,this._c=s+this._c|0,this._d=a+this._d|0,this._e=u+this._e|0,this._f=d+this._f|0,this._g=b+this._g|0,this._h=m+this._h|0},u.prototype._hash=function(){var e=s.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=u},function(e,t,r){var n=r(1),o=r(13),s=r(2).Buffer,i=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],a=new Array(160);function u(){this.init(),this._w=a,o.call(this,128,112)}function c(e,t,r){return r^e&(t^r)}function l(e,t,r){return e&t|r&(e|t)}function p(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function f(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function h(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function b(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function m(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function g(e,t){return e>>>0>>0?1:0}n(u,o),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,o=0|this._ch,s=0|this._dh,a=0|this._eh,u=0|this._fh,y=0|this._gh,$=0|this._hh,D=0|this._al,P=0|this._bl,_=0|this._cl,v=0|this._dl,I=0|this._el,A=0|this._fl,w=0|this._gl,E=0|this._hl,S=0;S<32;S+=2)t[S]=e.readInt32BE(4*S),t[S+1]=e.readInt32BE(4*S+4);for(;S<160;S+=2){var R=t[S-30],T=t[S-30+1],C=h(R,T),U=d(T,R),O=b(R=t[S-4],T=t[S-4+1]),N=m(T,R),x=t[S-14],M=t[S-14+1],k=t[S-32],F=t[S-32+1],L=U+M|0,G=C+x+g(L,U)|0;G=(G=G+O+g(L=L+N|0,N)|0)+k+g(L=L+F|0,F)|0,t[S]=G,t[S+1]=L}for(var B=0;B<160;B+=2){G=t[B],L=t[B+1];var z=l(r,n,o),j=l(D,P,_),W=p(r,D),H=p(D,r),Q=f(a,I),q=f(I,a),J=i[B],K=i[B+1],Y=c(a,u,y),V=c(I,A,w),Z=E+q|0,X=$+Q+g(Z,E)|0;X=(X=(X=X+Y+g(Z=Z+V|0,V)|0)+J+g(Z=Z+K|0,K)|0)+G+g(Z=Z+L|0,L)|0;var ee=H+j|0,te=W+z+g(ee,H)|0;$=y,E=w,y=u,w=A,u=a,A=I,a=s+X+g(I=v+Z|0,v)|0,s=o,v=_,o=n,_=P,n=r,P=D,r=X+te+g(D=Z+ee|0,Z)|0}this._al=this._al+D|0,this._bl=this._bl+P|0,this._cl=this._cl+_|0,this._dl=this._dl+v|0,this._el=this._el+I|0,this._fl=this._fl+A|0,this._gl=this._gl+w|0,this._hl=this._hl+E|0,this._ah=this._ah+r+g(this._al,D)|0,this._bh=this._bh+n+g(this._bl,P)|0,this._ch=this._ch+o+g(this._cl,_)|0,this._dh=this._dh+s+g(this._dl,v)|0,this._eh=this._eh+a+g(this._el,I)|0,this._fh=this._fh+u+g(this._fl,A)|0,this._gh=this._gh+y+g(this._gl,w)|0,this._hh=this._hh+$+g(this._hl,E)|0},u.prototype._hash=function(){var e=s.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=u},function(e,t,r){(function(t){function r(e){return(4294967296+e).toString(16).substring(1)}e.exports={normalizeInput:function(e){var r;if(e instanceof Uint8Array)r=e;else if(e instanceof t)r=new Uint8Array(e);else{if("string"!=typeof e)throw new Error("Input must be an string, Buffer or Uint8Array");r=new Uint8Array(t.from(e,"utf8"))}return r},toHex:function(e){return Array.prototype.map.call(e,(function(e){return(e<16?"0":"")+e.toString(16)})).join("")},debugPrint:function(e,t,n){for(var o="\n"+e+" = ",s=0;s0?i-4:i;for(r=0;r>16&255,u[l++]=t>>8&255,u[l++]=255&t;2===a&&(t=o[e.charCodeAt(r)]<<2|o[e.charCodeAt(r+1)]>>4,u[l++]=255&t);1===a&&(t=o[e.charCodeAt(r)]<<10|o[e.charCodeAt(r+1)]<<4|o[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t);return u},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,s=[],i=0,a=r-o;ia?a:i+16383));1===o?(t=e[r-1],s.push(n[t>>2]+n[t<<4&63]+"==")):2===o&&(t=(e[r-2]<<8)+e[r-1],s.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return s.join("")};for(var n=[],o=[],s="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,u=i.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function l(e,t,r){for(var o,s,i=[],a=t;a>18&63]+n[s>>12&63]+n[s>>6&63]+n[63&s]);return i.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,r,n,o){var s,i,a=8*o-n-1,u=(1<>1,l=-7,p=r?o-1:0,f=r?-1:1,h=e[t+p];for(p+=f,s=h&(1<<-l)-1,h>>=-l,l+=a;l>0;s=256*s+e[t+p],p+=f,l-=8);for(i=s&(1<<-l)-1,s>>=-l,l+=n;l>0;i=256*i+e[t+p],p+=f,l-=8);if(0===s)s=1-c;else{if(s===u)return i?NaN:1/0*(h?-1:1);i+=Math.pow(2,n),s-=c}return(h?-1:1)*i*Math.pow(2,s-n)},t.write=function(e,t,r,n,o,s){var i,a,u,c=8*s-o-1,l=(1<>1,f=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:s-1,d=n?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,i=l):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+p>=1?f/u:f*Math.pow(2,1-p))*u>=2&&(i++,u/=2),i+p>=l?(a=0,i=l):i+p>=1?(a=(t*u-1)*Math.pow(2,o),i+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,o),i=0));o>=8;e[r+h]=255&a,h+=d,a/=256,o-=8);for(i=i<0;e[r+h]=255&i,h+=d,i/=256,c-=8);e[r+h-d]|=128*b}},function(e,t,r){"use strict";function n(e){return e[0]}Object.defineProperty(t,"__esModule",{value:!0});const o=r(19),s=r(31),i=['"parameter"','"storage"','"code"','"False"','"Elt"','"Left"','"None"','"Pair"','"Right"','"Some"','"True"','"Unit"','"PACK"','"UNPACK"','"BLAKE2B"','"SHA256"','"SHA512"','"ABS"','"ADD"','"AMOUNT"','"AND"','"BALANCE"','"CAR"','"CDR"','"CHECK_SIGNATURE"','"COMPARE"','"CONCAT"','"CONS"','"CREATE_ACCOUNT"','"CREATE_CONTRACT"','"IMPLICIT_ACCOUNT"','"DIP"','"DROP"','"DUP"','"EDIV"','"EMPTY_MAP"','"EMPTY_SET"','"EQ"','"EXEC"','"FAILWITH"','"GE"','"GET"','"GT"','"HASH_KEY"','"IF"','"IF_CONS"','"IF_LEFT"','"IF_NONE"','"INT"','"LAMBDA"','"LE"','"LEFT"','"LOOP"','"LSL"','"LSR"','"LT"','"MAP"','"MEM"','"MUL"','"NEG"','"NEQ"','"NIL"','"NONE"','"NOT"','"NOW"','"OR"','"PAIR"','"PUSH"','"RIGHT"','"SIZE"','"SOME"','"SOURCE"','"SENDER"','"SELF"','"STEPS_TO_QUOTA"','"SUB"','"SWAP"','"TRANSFER_TOKENS"','"SET_DELEGATE"','"UNIT"','"UPDATE"','"XOR"','"ITER"','"LOOP_LEFT"','"ADDRESS"','"CONTRACT"','"ISNAT"','"CAST"','"RENAME"','"bool"','"contract"','"int"','"key"','"key_hash"','"lambda"','"list"','"map"','"big_map"','"nat"','"option"','"or"','"pair"','"set"','"signature"','"string"','"bytes"','"mutez"','"timestamp"','"unit"','"operation"','"address"','"SLICE"','"DIG"','"DUG"','"EMPTY_BIG_MAP"','"APPLY"','"chain_id"','"CHAIN_ID"'],a=o.compile({keyword:i,lbrace:"{",rbrace:"}",lbracket:"[",rbracket:"]",colon:":",comma:",",_:/[ \t]+/,quotedValue:/\"[\S\s]*?\"/}),u=e=>("00"+i.indexOf(e).toString(16)).slice(-2),c=e=>("0000000"+e.toString(16)).slice(-8),l=e=>{if(0===e)return"00";const t=s(e).abs(),r=t.bitLength().toJSNumber();let n=[],o=t;for(let t=0;t("0"+e.toString(16)).slice(-2)).join("")},p={Lexer:a,ParserRules:[{name:"main",symbols:["staticObject"],postprocess:n},{name:"main",symbols:["primBare"],postprocess:n},{name:"main",symbols:["primArg"],postprocess:n},{name:"main",symbols:["primAnn"],postprocess:n},{name:"main",symbols:["primArgAnn"],postprocess:n},{name:"main",symbols:["anyArray"],postprocess:n},{name:"staticInt$ebnf$1",symbols:[]},{name:"staticInt$ebnf$1",symbols:["staticInt$ebnf$1",a.has("_")?{type:"_"}:_],postprocess:e=>e[0].concat([e[1]])},{name:"staticInt",symbols:[a.has("lbrace")?{type:"lbrace"}:lbrace,a.has("_")?{type:"_"}:_,{literal:'"int"'},"staticInt$ebnf$1",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("quotedValue")?{type:"quotedValue"}:quotedValue,a.has("_")?{type:"_"}:_,a.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{const t=e[6].toString();return"00"+l(parseInt(t.substring(1,t.length-1)))}},{name:"staticString$ebnf$1",symbols:[]},{name:"staticString$ebnf$1",symbols:["staticString$ebnf$1",a.has("_")?{type:"_"}:_],postprocess:e=>e[0].concat([e[1]])},{name:"staticString",symbols:[a.has("lbrace")?{type:"lbrace"}:lbrace,a.has("_")?{type:"_"}:_,{literal:'"string"'},"staticString$ebnf$1",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("quotedValue")?{type:"quotedValue"}:quotedValue,a.has("_")?{type:"_"}:_,a.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{let t=e[6].toString();t=t.substring(1,t.length-1);const r=c(t.length);return t=t.split("").map(e=>e.charCodeAt(0).toString(16)).join(""),"01"+r+t}},{name:"staticBytes$ebnf$1",symbols:[]},{name:"staticBytes$ebnf$1",symbols:["staticBytes$ebnf$1",a.has("_")?{type:"_"}:_],postprocess:e=>e[0].concat([e[1]])},{name:"staticBytes",symbols:[a.has("lbrace")?{type:"lbrace"}:lbrace,a.has("_")?{type:"_"}:_,{literal:'"bytes"'},"staticBytes$ebnf$1",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("quotedValue")?{type:"quotedValue"}:quotedValue,a.has("_")?{type:"_"}:_,a.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{let t=e[6].toString();return t=t.substring(1,t.length-1),"0a"+c(t.length/2)+t}},{name:"staticObject",symbols:["staticInt"],postprocess:n},{name:"staticObject",symbols:["staticString"],postprocess:n},{name:"staticObject",symbols:["staticBytes"],postprocess:n},{name:"primBare$ebnf$1",symbols:[]},{name:"primBare$ebnf$1",symbols:["primBare$ebnf$1",a.has("_")?{type:"_"}:_],postprocess:e=>e[0].concat([e[1]])},{name:"primBare",symbols:[a.has("lbrace")?{type:"lbrace"}:lbrace,a.has("_")?{type:"_"}:_,{literal:'"prim"'},"primBare$ebnf$1",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("keyword")?{type:"keyword"}:keyword,a.has("_")?{type:"_"}:_,a.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>"03"+u(e[6].toString())},{name:"primArg$ebnf$1",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArg$ebnf$1",symbols:[],postprocess:()=>null},{name:"primArg$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArg$ebnf$2",symbols:[],postprocess:()=>null},{name:"primArg$ebnf$3$subexpression$1$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"primArg$ebnf$3$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"primArg$ebnf$3$subexpression$1$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArg$ebnf$3$subexpression$1$ebnf$2",symbols:[],postprocess:()=>null},{name:"primArg$ebnf$3$subexpression$1",symbols:["any","primArg$ebnf$3$subexpression$1$ebnf$1","primArg$ebnf$3$subexpression$1$ebnf$2"]},{name:"primArg$ebnf$3",symbols:["primArg$ebnf$3$subexpression$1"]},{name:"primArg$ebnf$3$subexpression$2$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"primArg$ebnf$3$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"primArg$ebnf$3$subexpression$2$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArg$ebnf$3$subexpression$2$ebnf$2",symbols:[],postprocess:()=>null},{name:"primArg$ebnf$3$subexpression$2",symbols:["any","primArg$ebnf$3$subexpression$2$ebnf$1","primArg$ebnf$3$subexpression$2$ebnf$2"]},{name:"primArg$ebnf$3",symbols:["primArg$ebnf$3","primArg$ebnf$3$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"primArg",symbols:[a.has("lbrace")?{type:"lbrace"}:lbrace,a.has("_")?{type:"_"}:_,{literal:'"prim"'},"primArg$ebnf$1",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("keyword")?{type:"keyword"}:keyword,a.has("comma")?{type:"comma"}:comma,a.has("_")?{type:"_"}:_,{literal:'"args"'},"primArg$ebnf$2",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("lbracket")?{type:"lbracket"}:lbracket,a.has("_")?{type:"_"}:_,"primArg$ebnf$3",a.has("_")?{type:"_"}:_,a.has("rbracket")?{type:"rbracket"}:rbracket,a.has("_")?{type:"_"}:_,a.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{let t="05";2==e[15].length?t="07":e[15].length>2&&(t="09");const r=u(e[6].toString());let n=e[15].map(e=>e[0]).join("");return"09"===t&&(n=("0000000"+(n.length/2).toString(16)).slice(-8)+n,n+="00000000"),t+r+n}},{name:"primAnn$ebnf$1",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primAnn$ebnf$1",symbols:[],postprocess:()=>null},{name:"primAnn$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primAnn$ebnf$2",symbols:[],postprocess:()=>null},{name:"primAnn$ebnf$3$subexpression$1$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"primAnn$ebnf$3$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"primAnn$ebnf$3$subexpression$1$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primAnn$ebnf$3$subexpression$1$ebnf$2",symbols:[],postprocess:()=>null},{name:"primAnn$ebnf$3$subexpression$1",symbols:[a.has("quotedValue")?{type:"quotedValue"}:quotedValue,"primAnn$ebnf$3$subexpression$1$ebnf$1","primAnn$ebnf$3$subexpression$1$ebnf$2"]},{name:"primAnn$ebnf$3",symbols:["primAnn$ebnf$3$subexpression$1"]},{name:"primAnn$ebnf$3$subexpression$2$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"primAnn$ebnf$3$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"primAnn$ebnf$3$subexpression$2$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primAnn$ebnf$3$subexpression$2$ebnf$2",symbols:[],postprocess:()=>null},{name:"primAnn$ebnf$3$subexpression$2",symbols:[a.has("quotedValue")?{type:"quotedValue"}:quotedValue,"primAnn$ebnf$3$subexpression$2$ebnf$1","primAnn$ebnf$3$subexpression$2$ebnf$2"]},{name:"primAnn$ebnf$3",symbols:["primAnn$ebnf$3","primAnn$ebnf$3$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"primAnn",symbols:[a.has("lbrace")?{type:"lbrace"}:lbrace,a.has("_")?{type:"_"}:_,{literal:'"prim"'},"primAnn$ebnf$1",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("keyword")?{type:"keyword"}:keyword,a.has("comma")?{type:"comma"}:comma,a.has("_")?{type:"_"}:_,{literal:'"annots"'},"primAnn$ebnf$2",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("lbracket")?{type:"lbracket"}:lbracket,a.has("_")?{type:"_"}:_,"primAnn$ebnf$3",a.has("_")?{type:"_"}:_,a.has("rbracket")?{type:"rbracket"}:rbracket,a.has("_")?{type:"_"}:_,a.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{const t=u(e[6].toString());let r=e[15].map(e=>{let t=e[0].toString();return t=t.substring(1,t.length-1),t}).join(" ");return r=r.split("").map(e=>e.charCodeAt(0).toString(16)).join(""),r=c(r.length/2)+r,"04"+t+r}},{name:"primArgAnn$ebnf$1",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArgAnn$ebnf$1",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArgAnn$ebnf$2",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$3$subexpression$1$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"primArgAnn$ebnf$3$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$3$subexpression$1$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArgAnn$ebnf$3$subexpression$1$ebnf$2",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$3$subexpression$1",symbols:["any","primArgAnn$ebnf$3$subexpression$1$ebnf$1","primArgAnn$ebnf$3$subexpression$1$ebnf$2"]},{name:"primArgAnn$ebnf$3",symbols:["primArgAnn$ebnf$3$subexpression$1"]},{name:"primArgAnn$ebnf$3$subexpression$2$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"primArgAnn$ebnf$3$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$3$subexpression$2$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArgAnn$ebnf$3$subexpression$2$ebnf$2",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$3$subexpression$2",symbols:["any","primArgAnn$ebnf$3$subexpression$2$ebnf$1","primArgAnn$ebnf$3$subexpression$2$ebnf$2"]},{name:"primArgAnn$ebnf$3",symbols:["primArgAnn$ebnf$3","primArgAnn$ebnf$3$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"primArgAnn$ebnf$4",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArgAnn$ebnf$4",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$5$subexpression$1$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"primArgAnn$ebnf$5$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$5$subexpression$1$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArgAnn$ebnf$5$subexpression$1$ebnf$2",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$5$subexpression$1",symbols:[a.has("quotedValue")?{type:"quotedValue"}:quotedValue,"primArgAnn$ebnf$5$subexpression$1$ebnf$1","primArgAnn$ebnf$5$subexpression$1$ebnf$2"]},{name:"primArgAnn$ebnf$5",symbols:["primArgAnn$ebnf$5$subexpression$1"]},{name:"primArgAnn$ebnf$5$subexpression$2$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"primArgAnn$ebnf$5$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$5$subexpression$2$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"primArgAnn$ebnf$5$subexpression$2$ebnf$2",symbols:[],postprocess:()=>null},{name:"primArgAnn$ebnf$5$subexpression$2",symbols:[a.has("quotedValue")?{type:"quotedValue"}:quotedValue,"primArgAnn$ebnf$5$subexpression$2$ebnf$1","primArgAnn$ebnf$5$subexpression$2$ebnf$2"]},{name:"primArgAnn$ebnf$5",symbols:["primArgAnn$ebnf$5","primArgAnn$ebnf$5$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"primArgAnn",symbols:[a.has("lbrace")?{type:"lbrace"}:lbrace,a.has("_")?{type:"_"}:_,{literal:'"prim"'},"primArgAnn$ebnf$1",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("keyword")?{type:"keyword"}:keyword,a.has("comma")?{type:"comma"}:comma,a.has("_")?{type:"_"}:_,{literal:'"args"'},"primArgAnn$ebnf$2",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("lbracket")?{type:"lbracket"}:lbracket,a.has("_")?{type:"_"}:_,"primArgAnn$ebnf$3",a.has("_")?{type:"_"}:_,a.has("rbracket")?{type:"rbracket"}:rbracket,a.has("comma")?{type:"comma"}:comma,a.has("_")?{type:"_"}:_,{literal:'"annots"'},"primArgAnn$ebnf$4",a.has("colon")?{type:"colon"}:colon,a.has("_")?{type:"_"}:_,a.has("lbracket")?{type:"lbracket"}:lbracket,a.has("_")?{type:"_"}:_,"primArgAnn$ebnf$5",a.has("_")?{type:"_"}:_,a.has("rbracket")?{type:"rbracket"}:rbracket,a.has("_")?{type:"_"}:_,a.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{let t="06";2==e[15].length?t="08":e[15].length>2&&(t="09");const r=u(e[6].toString());let n=e[15].map(e=>e[0]).join(""),o=e[26].map(e=>{let t=e[0].toString();return t=t.substring(1,t.length-1),t}).join(" ");return o=o.split("").map(e=>e.charCodeAt(0).toString(16)).join(""),o=c(o.length/2)+o,"09"===t&&(n=("0000000"+(n.length/2).toString(16)).slice(-8)+n),t+r+n+o}},{name:"primAny",symbols:["primBare"],postprocess:n},{name:"primAny",symbols:["primArg"],postprocess:n},{name:"primAny",symbols:["primAnn"],postprocess:n},{name:"primAny",symbols:["primArgAnn"],postprocess:n},{name:"any",symbols:["primAny"],postprocess:n},{name:"any",symbols:["staticObject"],postprocess:n},{name:"any",symbols:["anyArray"],postprocess:n},{name:"anyArray",symbols:[a.has("lbracket")?{type:"lbracket"}:lbracket,a.has("rbracket")?{type:"rbracket"}:rbracket],postprocess:function(e){return"0200000000"}},{name:"anyArray$ebnf$1$subexpression$1$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"anyArray$ebnf$1$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"anyArray$ebnf$1$subexpression$1$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"anyArray$ebnf$1$subexpression$1$ebnf$2",symbols:[],postprocess:()=>null},{name:"anyArray$ebnf$1$subexpression$1",symbols:["any","anyArray$ebnf$1$subexpression$1$ebnf$1","anyArray$ebnf$1$subexpression$1$ebnf$2"]},{name:"anyArray$ebnf$1",symbols:["anyArray$ebnf$1$subexpression$1"]},{name:"anyArray$ebnf$1$subexpression$2$ebnf$1",symbols:[a.has("comma")?{type:"comma"}:comma],postprocess:n},{name:"anyArray$ebnf$1$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"anyArray$ebnf$1$subexpression$2$ebnf$2",symbols:[a.has("_")?{type:"_"}:_],postprocess:n},{name:"anyArray$ebnf$1$subexpression$2$ebnf$2",symbols:[],postprocess:()=>null},{name:"anyArray$ebnf$1$subexpression$2",symbols:["any","anyArray$ebnf$1$subexpression$2$ebnf$1","anyArray$ebnf$1$subexpression$2$ebnf$2"]},{name:"anyArray$ebnf$1",symbols:["anyArray$ebnf$1","anyArray$ebnf$1$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"anyArray",symbols:[a.has("lbracket")?{type:"lbracket"}:lbracket,a.has("_")?{type:"_"}:_,"anyArray$ebnf$1",a.has("_")?{type:"_"}:_,a.has("rbracket")?{type:"rbracket"}:rbracket],postprocess:e=>{const t=e[2].map(e=>e[0]).join("");return"02"+c(t.length/2)+t}}],ParserStart:"main"};t.default=p},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){"use strict";function n(e){return e[0]}Object.defineProperty(t,"__esModule",{value:!0});const o=r(19),s=/SET_C[AD]+R/,i=/DII+P/,a=/DUU+P/,u=new RegExp(i),c=new RegExp(a),l=["ASSERT","ASSERT_EQ","ASSERT_NEQ","ASSERT_GT","ASSERT_LT","ASSERT_GE","ASSERT_LE","ASSERT_NONE","ASSERT_SOME","ASSERT_LEFT","ASSERT_RIGHT","ASSERT_CMPEQ","ASSERT_CMPNEQ","ASSERT_CMPGT","ASSERT_CMPLT","ASSERT_CMPGE","ASSERT_CMPLE"],p=["IFCMPEQ","IFCMPNEQ","IFCMPLT","IFCMPGT","IFCMPLE","IFCMPGE"],f=["CMPEQ","CMPNEQ","CMPLT","CMPGT","CMPLE","CMPGE"],h=["IFEQ","IFNEQ","IFLT","IFGT","IFLE","IFGE"],d=o.compile({annot:/[\@\%\:][a-z_A-Z0-9]+/,lparen:"(",rparen:")",lbrace:"{",rbrace:"}",ws:/[ \t]+/,semicolon:";",bytes:/0x[0-9a-fA-F]+/,number:/-?[0-9]+(?!x)/,parameter:["parameter","Parameter"],storage:["Storage","storage"],code:["Code","code"],comparableType:["int","nat","string","bytes","mutez","bool","key_hash","timestamp","chain_id"],constantType:["key","unit","signature","operation","address"],singleArgType:["option","list","set","contract"],doubleArgType:["pair","or","lambda","map","big_map"],baseInstruction:["ABS","ADD","ADDRESS","AMOUNT","AND","BALANCE","BLAKE2B","CAR","CAST","CDR","CHECK_SIGNATURE","COMPARE","CONCAT","CONS","CONTRACT","DIP","DUP","EDIV","EMPTY_SET","EQ","EXEC","FAIL","FAILWITH","GE","GET","GT","HASH_KEY","IF","IF_CONS","IF_LEFT","IF_NONE","IF_RIGHT","IMPLICIT_ACCOUNT","INT","ISNAT","ITER","LAMBDA","LE","LEFT","LOOP","LOOP_LEFT","LSL","LSR","LT","MAP","MEM","MUL","NEG","NEQ","NIL","NONE","NOT","NOW","OR","PACK","PAIR","REDUCE","RENAME","RIGHT","SELF","SENDER","SET_DELEGATE","SHA256","SHA512","SIZE","SLICE","SOME","SOURCE","STEPS_TO_QUOTA","SUB","SWAP","TRANSFER_TOKENS","UNIT","UNPACK","UPDATE","XOR","UNPAIR","UNPAPAIR","IF_SOME","IFCMPEQ","IFCMPNEQ","IFCMPLT","IFCMPGT","IFCMPLE","IFCMPGE","CMPEQ","CMPNEQ","CMPLT","CMPGT","CMPLE","CMPGE","IFEQ","NEQ","IFLT","IFGT","IFLE","IFGE","EMPTY_BIG_MAP","APPLY","CHAIN_ID"],macroCADR:/C[AD]+R/,macroDIP:i,macroDUP:a,macroSETCADR:s,macroASSERTlist:l,constantData:["Unit","True","False","None","instruction"],singleArgData:["Left","Right","Some"],doubleArgData:["Pair"],elt:"Elt",word:/[a-zA-Z_0-9]+/,string:/"(?:\\["\\]|[^\n"\\])*"/}),b=e=>new RegExp("^C(A|D)(A|D)+R$").test(e),m=e=>f.includes(e),g=e=>c.test(e),y=e=>l.includes(e),$=e=>"FAIL"===e,D=e=>p.includes(e)||h.includes(e)||"IF_SOME"===e,P=(e,t,r,n)=>{const o=n?`, "annots": [${n}]`:"";switch(e){case"IFCMPEQ":return`[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFCMPGE":return`[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFCMPGT":return`[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFCMPLE":return`[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFCMPLT":return`[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFCMPNEQ":return`[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFEQ":return`[{"prim":"EQ"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFGE":return`[{"prim":"GE"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFGT":return`[{"prim":"GT"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFLE":return`[{"prim":"LE"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFLT":return`[{"prim":"LT"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IFNEQ":return`[{"prim":"NEQ"},{"prim":"IF","args":[ [${t}] , [${r}]]${o}}]`;case"IF_SOME":return`[{"prim":"IF_NONE","args":[ [${r}], [${t}]]${o}}]`;default:return""}},_=e=>u.test(e),v=(e,t,r)=>{let n="";if(u.test(e)){const o=e.length-2;for(let e=0;e"UNPAIR"==e||"UNPAPAIR"==e,A=e=>s.test(e),w=e=>{if(0===e.length)return"";const t=e.charAt(0);if(1===e.length){if("A"===t)return'[{"prim": "CDR","annots":["@%%"]}, {"prim": "SWAP"}, {"prim": "PAIR","annots":["%","%@"]}]';if("D"===t)return'[{"prim": "CAR","annots":["@%%"]}, {"prim": "PAIR","annots":["%@","%"]}]'}return"A"===t?`[{"prim": "DUP"}, {"prim": "DIP", "args": [[{"prim": "CAR","annots":["@%%"]}, ${w(e.slice(1))}]]}, {"prim": "CDR","annots":["@%%"]}, {"prim": "SWAP"}, {"prim": "PAIR","annots":["%@","%@"]}]`:"D"===t?`[{"prim": "DUP"}, {"prim": "DIP", "args": [[{"prim": "CDR","annots":["@%%"]}, ${w(e.slice(1))}]]}, {"prim": "CAR","annots":["@%%"]}, {"prim": "PAIR","annots":["%@","%@"]}]`:void 0},E=e=>!!y(e)||(!!m(e)||(!!_(e)||(!!g(e)||(!!$(e)||(!!D(e)||(!!b(e)||(!!I(e)||(!!A(e)||void 0)))))))),S=(e,t)=>b(e)?((e,t)=>{var r=e.slice(1,-1).split("").map(e=>"A"===e?'{ "prim": "CAR" }':'{ "prim": "CDR" }');if(null!=t){const n=e.slice(-2,-1);"A"===n?r[r.length-1]=`{ "prim": "CAR", "annots": [${t}] }`:"D"===n&&(r[r.length-1]=`{ "prim": "CDR", "annots": [${t}] }`)}return`[${r.join(", ")}]`})(e,t):y(e)?((e,t)=>{const r=t?`, "annots": [${t}]`:"";switch(e){case"ASSERT":return`[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_CMPEQ":return`[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_CMPGE":return`[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_CMPGT":return`[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_CMPLE":return`[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_CMPLT":return`[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_CMPNEQ":return`[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_EQ":return`[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]]`;case"ASSERT_GE":return`[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_GT":return`[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_LE":return`[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_LT":return`[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;case"ASSERT_NEQ":return`[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${r}}]]]}]`;default:return""}})(e,t):m(e)?((e,t)=>{var r=e.substring(3),n=C([`${r}`]);return null!=t&&(n=`{ "prim": "${r}", "annots": [${t}] }`),`[${C(["COMPARE"])}, ${n}]`})(e,t):_(e)?v(e,t):g(e)?((e,t)=>{let r="";if(c.test(e)){const n=e.length-3;for(let e=0;enull==t?'[ { "prim": "UNIT" }, { "prim": "FAILWITH" } ]':`[ { "prim": "UNIT" }, { "prim": "FAILWITH", "annots": [${t}] } ]`)(0,t):D(e)?P(e,t):I(e)?((e,t)=>"UNPAIR"==e?null==t?'[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]':1==t.length?`[ [ { "prim": "DUP" }, { "prim": "CAR", "annots": [${t}] }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]`:2==t.length?`[ [ { "prim": "DUP" }, { "prim": "CAR", "annots": [${t[0]}] }, { "prim": "DIP", "args": [ [ { "prim": "CDR", "annots": [${t[1]}] } ] ] } ] ]`:"":"UNPAPAIR"==e?null==t?'[ [ { "prim": "DUP" },\n { "prim": "CAR" },\n { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ],\n {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]]}]]]}]':`[ [ { "prim": "DUP" },\n { "prim": "CAR" },\n { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ],\n {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]],"annots": [${t}]}]]]}]`:void 0)(e,t):A(e)?((e,t)=>w(e.slice(5,-1)))(e):void 0,R=e=>`{ "int": "${parseInt(e[0])}" }`,T=e=>`{ "string": ${e[0]} }`,C=e=>{const t=e[0].toString();if(1==e.length)return E(t)?[S(t,null)]:`{ "prim": "${e[0]}" }`;{const r=e[1].map(e=>`"${e[1]}"`);return E(t)?[S(t,r)]:`{ "prim": "${e[0]}", "annots": [${r}] }`}},U=e=>`{ "prim": "${e[0]}", "args": [ ${e[2]} ] }`,O=e=>{const t=e[3].map(e=>`"${e[1]}"`);return`{ "prim": "${e[2]}", "annots": [${t}] }`},N=e=>{const t=`${e[0].toString()}`,r=e[1].map(e=>`"${e[1]}"`);return _(t)?v(t,e[2],r):`{ "prim": "${e[0]}", "args": [ ${e[3]} ], "annots": [${r}] }`},x=e=>`{ "prim": "${e[2]}", "args": [ ${e[4+(7===e.length?0:2)]} ] }`,M=e=>`{ "prim": "${e[0]}", "args": [ ${e[2]}, ${e[4]} ] }`,k=e=>`{ "prim": "${e[2]}", "args": [ ${e[4]}, ${e[6]} ] }`,F=e=>Array.isArray(e)&&Array.isArray(e[0])?e[0]:e,L=e=>`${e[2].map(e=>e[0]).map(e=>F(e))}`,G=e=>`[ ${e[2].map(e=>e[0]).map(e=>F(e))} ]`,B=e=>{const t=e[1].map(e=>`"${e[1]}"`);return`{ "prim": "${e[0]}", "args": [ ${e[4]}, ${e[6]} ], "annots": [${t}] }`},z=e=>e.length>4?`{ "prim": "${e[0]}", "args": [ { "int": "${e[2]}" }, [ ${e[4]} ] ] }`:`{ "prim": "${e[0]}", "args": [ ${e[2]} ] }`,j=e=>`{ "prim": "${e[0]}", "args": [ { "int": "${e[2]}" } ] }`,W={Lexer:d,ParserRules:[{name:"main",symbols:["instruction"],postprocess:n},{name:"main",symbols:["data"],postprocess:n},{name:"main",symbols:["type"],postprocess:n},{name:"main",symbols:["parameter"],postprocess:n},{name:"main",symbols:["storage"],postprocess:n},{name:"main",symbols:["code"],postprocess:n},{name:"main",symbols:["script"],postprocess:n},{name:"main",symbols:["parameterValue"],postprocess:n},{name:"main",symbols:["storageValue"],postprocess:n},{name:"main",symbols:["typeData"],postprocess:n},{name:"script",symbols:["parameter","_","storage","_","code"],postprocess:e=>`[ ${e[0]}, ${e[2]}, { "prim": "code", "args": [ [ ${e[4]} ] ] } ]`},{name:"parameterValue",symbols:[d.has("parameter")?{type:"parameter"}:parameter,"_","typeData","_","semicolons"],postprocess:U},{name:"storageValue",symbols:[d.has("storage")?{type:"storage"}:storage,"_","typeData","_","semicolons"],postprocess:U},{name:"parameter",symbols:[d.has("parameter")?{type:"parameter"}:parameter,"_","type","_","semicolons"],postprocess:U},{name:"storage",symbols:[d.has("storage")?{type:"storage"}:storage,"_","type","_","semicolons"],postprocess:U},{name:"code",symbols:[d.has("code")?{type:"code"}:code,"_","subInstruction","_","semicolons","_"],postprocess:e=>e[2]},{name:"code",symbols:[d.has("code")?{type:"code"}:code,"_",{literal:"{};"}],postprocess:e=>"code {}"},{name:"type",symbols:[d.has("comparableType")?{type:"comparableType"}:comparableType],postprocess:C},{name:"type",symbols:[d.has("constantType")?{type:"constantType"}:constantType],postprocess:C},{name:"type",symbols:[d.has("singleArgType")?{type:"singleArgType"}:singleArgType,"_","type"],postprocess:U},{name:"type",symbols:[d.has("lparen")?{type:"lparen"}:lparen,"_",d.has("singleArgType")?{type:"singleArgType"}:singleArgType,"_","type","_",d.has("rparen")?{type:"rparen"}:rparen],postprocess:x},{name:"type",symbols:[d.has("lparen")?{type:"lparen"}:lparen,"_",d.has("singleArgType")?{type:"singleArgType"}:singleArgType,"_",d.has("lparen")?{type:"lparen"}:lparen,"_","type","_",d.has("rparen")?{type:"rparen"}:rparen,"_",d.has("rparen")?{type:"rparen"}:rparen],postprocess:x},{name:"type",symbols:[d.has("doubleArgType")?{type:"doubleArgType"}:doubleArgType,"_","type","_","type"],postprocess:M},{name:"type",symbols:[d.has("lparen")?{type:"lparen"}:lparen,"_",d.has("doubleArgType")?{type:"doubleArgType"}:doubleArgType,"_","type","_","type","_",d.has("rparen")?{type:"rparen"}:rparen],postprocess:k},{name:"type$ebnf$1$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$1",symbols:["type$ebnf$1$subexpression$1"]},{name:"type$ebnf$1$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$1",symbols:["type$ebnf$1","type$ebnf$1$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"type",symbols:[d.has("comparableType")?{type:"comparableType"}:comparableType,"type$ebnf$1"],postprocess:C},{name:"type$ebnf$2$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$2",symbols:["type$ebnf$2$subexpression$1"]},{name:"type$ebnf$2$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$2",symbols:["type$ebnf$2","type$ebnf$2$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"type",symbols:[d.has("constantType")?{type:"constantType"}:constantType,"type$ebnf$2"],postprocess:C},{name:"type$ebnf$3$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$3",symbols:["type$ebnf$3$subexpression$1"]},{name:"type$ebnf$3$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$3",symbols:["type$ebnf$3","type$ebnf$3$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"type",symbols:[d.has("lparen")?{type:"lparen"}:lparen,"_",d.has("comparableType")?{type:"comparableType"}:comparableType,"type$ebnf$3","_",d.has("rparen")?{type:"rparen"}:rparen],postprocess:O},{name:"type$ebnf$4$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$4",symbols:["type$ebnf$4$subexpression$1"]},{name:"type$ebnf$4$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$4",symbols:["type$ebnf$4","type$ebnf$4$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"type",symbols:[d.has("lparen")?{type:"lparen"}:lparen,"_",d.has("constantType")?{type:"constantType"}:constantType,"type$ebnf$4","_",d.has("rparen")?{type:"rparen"}:rparen],postprocess:O},{name:"type$ebnf$5$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$5",symbols:["type$ebnf$5$subexpression$1"]},{name:"type$ebnf$5$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$5",symbols:["type$ebnf$5","type$ebnf$5$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"type",symbols:[d.has("lparen")?{type:"lparen"}:lparen,"_",d.has("singleArgType")?{type:"singleArgType"}:singleArgType,"type$ebnf$5","_","type",d.has("rparen")?{type:"rparen"}:rparen],postprocess:e=>{const t=e[3].map(e=>`"${e[1]}"`);return`{ "prim": "${e[2]}", "args": [ ${e[5]} ], "annots": [${t}] }`}},{name:"type$ebnf$6$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$6",symbols:["type$ebnf$6$subexpression$1"]},{name:"type$ebnf$6$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"type$ebnf$6",symbols:["type$ebnf$6","type$ebnf$6$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"type",symbols:[d.has("lparen")?{type:"lparen"}:lparen,"_",d.has("doubleArgType")?{type:"doubleArgType"}:doubleArgType,"type$ebnf$6","_","type","_","type",d.has("rparen")?{type:"rparen"}:rparen],postprocess:e=>{const t=e[3].map(e=>`"${e[1]}"`);return`{ "prim": "${e[2]}", "args": [ ${e[5]}, ${e[7]} ], "annots": [${t}] }`}},{name:"typeData",symbols:[d.has("singleArgType")?{type:"singleArgType"}:singleArgType,"_","typeData"],postprocess:U},{name:"typeData",symbols:[d.has("lparen")?{type:"lparen"}:lparen,"_",d.has("singleArgType")?{type:"singleArgType"}:singleArgType,"_","typeData","_",d.has("rparen")?{type:"rparen"}:rparen],postprocess:x},{name:"typeData",symbols:[d.has("doubleArgType")?{type:"doubleArgType"}:doubleArgType,"_","typeData","_","typeData"],postprocess:M},{name:"typeData",symbols:[d.has("lparen")?{type:"lparen"}:lparen,"_",d.has("doubleArgType")?{type:"doubleArgType"}:doubleArgType,"_","typeData","_","typeData","_",d.has("rparen")?{type:"rparen"}:rparen],postprocess:k},{name:"typeData",symbols:["subTypeData"],postprocess:n},{name:"typeData",symbols:["subTypeElt"],postprocess:n},{name:"typeData",symbols:[d.has("number")?{type:"number"}:number],postprocess:R},{name:"typeData",symbols:[d.has("string")?{type:"string"}:string],postprocess:T},{name:"typeData",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>[]},{name:"data",symbols:[d.has("constantData")?{type:"constantData"}:constantData],postprocess:C},{name:"data",symbols:[d.has("singleArgData")?{type:"singleArgData"}:singleArgData,"_","data"],postprocess:U},{name:"data",symbols:[d.has("doubleArgData")?{type:"doubleArgData"}:doubleArgData,"_","data","_","data"],postprocess:M},{name:"data",symbols:["subData"],postprocess:n},{name:"data",symbols:["subElt"],postprocess:n},{name:"data",symbols:[d.has("string")?{type:"string"}:string],postprocess:T},{name:"data",symbols:[d.has("bytes")?{type:"bytes"}:bytes],postprocess:e=>`{ "bytes": "${e[0].toString().slice(2)}" }`},{name:"data",symbols:[d.has("number")?{type:"number"}:number],postprocess:R},{name:"subData",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>"[]"},{name:"subData$ebnf$1$subexpression$1",symbols:["data","_"]},{name:"subData$ebnf$1",symbols:["subData$ebnf$1$subexpression$1"]},{name:"subData$ebnf$1$subexpression$2",symbols:["data","_"]},{name:"subData$ebnf$1",symbols:["subData$ebnf$1","subData$ebnf$1$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subData",symbols:[{literal:"("},"_","subData$ebnf$1",{literal:")"}],postprocess:L},{name:"subData$ebnf$2$subexpression$1$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subData$ebnf$2$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"subData$ebnf$2$subexpression$1",symbols:["data","_","subData$ebnf$2$subexpression$1$ebnf$1","_"]},{name:"subData$ebnf$2",symbols:["subData$ebnf$2$subexpression$1"]},{name:"subData$ebnf$2$subexpression$2$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subData$ebnf$2$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"subData$ebnf$2$subexpression$2",symbols:["data","_","subData$ebnf$2$subexpression$2$ebnf$1","_"]},{name:"subData$ebnf$2",symbols:["subData$ebnf$2","subData$ebnf$2$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subData",symbols:[{literal:"{"},"_","subData$ebnf$2",{literal:"}"}],postprocess:G},{name:"subElt",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>"[]"},{name:"subElt$ebnf$1$subexpression$1$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subElt$ebnf$1$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"subElt$ebnf$1$subexpression$1",symbols:["elt","subElt$ebnf$1$subexpression$1$ebnf$1","_"]},{name:"subElt$ebnf$1",symbols:["subElt$ebnf$1$subexpression$1"]},{name:"subElt$ebnf$1$subexpression$2$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subElt$ebnf$1$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"subElt$ebnf$1$subexpression$2",symbols:["elt","subElt$ebnf$1$subexpression$2$ebnf$1","_"]},{name:"subElt$ebnf$1",symbols:["subElt$ebnf$1","subElt$ebnf$1$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subElt",symbols:[{literal:"{"},"_","subElt$ebnf$1",{literal:"}"}],postprocess:G},{name:"elt",symbols:[d.has("elt")?{type:"elt"}:elt,"_","data","_","data"],postprocess:M},{name:"subTypeData",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>"[]"},{name:"subTypeData$ebnf$1$subexpression$1$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeData$ebnf$1$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeData$ebnf$1$subexpression$1",symbols:["data","subTypeData$ebnf$1$subexpression$1$ebnf$1","_"]},{name:"subTypeData$ebnf$1",symbols:["subTypeData$ebnf$1$subexpression$1"]},{name:"subTypeData$ebnf$1$subexpression$2$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeData$ebnf$1$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeData$ebnf$1$subexpression$2",symbols:["data","subTypeData$ebnf$1$subexpression$2$ebnf$1","_"]},{name:"subTypeData$ebnf$1",symbols:["subTypeData$ebnf$1","subTypeData$ebnf$1$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subTypeData",symbols:[{literal:"{"},"_","subTypeData$ebnf$1",{literal:"}"}],postprocess:L},{name:"subTypeData$ebnf$2$subexpression$1$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeData$ebnf$2$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeData$ebnf$2$subexpression$1",symbols:["data","subTypeData$ebnf$2$subexpression$1$ebnf$1","_"]},{name:"subTypeData$ebnf$2",symbols:["subTypeData$ebnf$2$subexpression$1"]},{name:"subTypeData$ebnf$2$subexpression$2$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeData$ebnf$2$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeData$ebnf$2$subexpression$2",symbols:["data","subTypeData$ebnf$2$subexpression$2$ebnf$1","_"]},{name:"subTypeData$ebnf$2",symbols:["subTypeData$ebnf$2","subTypeData$ebnf$2$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subTypeData",symbols:[{literal:"("},"_","subTypeData$ebnf$2",{literal:")"}],postprocess:L},{name:"subTypeElt",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>"[]"},{name:"subTypeElt$ebnf$1$subexpression$1$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeElt$ebnf$1$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeElt$ebnf$1$subexpression$1",symbols:["typeElt","subTypeElt$ebnf$1$subexpression$1$ebnf$1","_"]},{name:"subTypeElt$ebnf$1",symbols:["subTypeElt$ebnf$1$subexpression$1"]},{name:"subTypeElt$ebnf$1$subexpression$2$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeElt$ebnf$1$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeElt$ebnf$1$subexpression$2",symbols:["typeElt","subTypeElt$ebnf$1$subexpression$2$ebnf$1","_"]},{name:"subTypeElt$ebnf$1",symbols:["subTypeElt$ebnf$1","subTypeElt$ebnf$1$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subTypeElt",symbols:[{literal:"{"},"_","subTypeElt$ebnf$1",{literal:"}"}],postprocess:L},{name:"subTypeElt$ebnf$2$subexpression$1$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeElt$ebnf$2$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeElt$ebnf$2$subexpression$1",symbols:["typeElt","subTypeElt$ebnf$2$subexpression$1$ebnf$1","_"]},{name:"subTypeElt$ebnf$2",symbols:["subTypeElt$ebnf$2$subexpression$1"]},{name:"subTypeElt$ebnf$2$subexpression$2$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeElt$ebnf$2$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeElt$ebnf$2$subexpression$2",symbols:["typeElt","subTypeElt$ebnf$2$subexpression$2$ebnf$1","_"]},{name:"subTypeElt$ebnf$2",symbols:["subTypeElt$ebnf$2","subTypeElt$ebnf$2$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subTypeElt",symbols:[{literal:"("},"_","subTypeElt$ebnf$2",{literal:")"}],postprocess:L},{name:"subTypeElt$ebnf$3$subexpression$1$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeElt$ebnf$3$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeElt$ebnf$3$subexpression$1",symbols:["typeElt","_","subTypeElt$ebnf$3$subexpression$1$ebnf$1","_"]},{name:"subTypeElt$ebnf$3",symbols:["subTypeElt$ebnf$3$subexpression$1"]},{name:"subTypeElt$ebnf$3$subexpression$2$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeElt$ebnf$3$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeElt$ebnf$3$subexpression$2",symbols:["typeElt","_","subTypeElt$ebnf$3$subexpression$2$ebnf$1","_"]},{name:"subTypeElt$ebnf$3",symbols:["subTypeElt$ebnf$3","subTypeElt$ebnf$3$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subTypeElt",symbols:[{literal:"{"},"_","subTypeElt$ebnf$3",{literal:"}"}],postprocess:L},{name:"subTypeElt$ebnf$4$subexpression$1$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeElt$ebnf$4$subexpression$1$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeElt$ebnf$4$subexpression$1",symbols:["typeElt","_","subTypeElt$ebnf$4$subexpression$1$ebnf$1","_"]},{name:"subTypeElt$ebnf$4",symbols:["subTypeElt$ebnf$4$subexpression$1"]},{name:"subTypeElt$ebnf$4$subexpression$2$ebnf$1",symbols:[{literal:";"}],postprocess:n},{name:"subTypeElt$ebnf$4$subexpression$2$ebnf$1",symbols:[],postprocess:()=>null},{name:"subTypeElt$ebnf$4$subexpression$2",symbols:["typeElt","_","subTypeElt$ebnf$4$subexpression$2$ebnf$1","_"]},{name:"subTypeElt$ebnf$4",symbols:["subTypeElt$ebnf$4","subTypeElt$ebnf$4$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subTypeElt",symbols:[{literal:"("},"_","subTypeElt$ebnf$4",{literal:")"}],postprocess:L},{name:"typeElt",symbols:[d.has("elt")?{type:"elt"}:elt,"_","typeData","_","typeData"],postprocess:M},{name:"subInstruction",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>""},{name:"subInstruction",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_","instruction","_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>e[2]},{name:"subInstruction$ebnf$1$subexpression$1",symbols:["instruction","_",d.has("semicolon")?{type:"semicolon"}:semicolon,"_"]},{name:"subInstruction$ebnf$1",symbols:["subInstruction$ebnf$1$subexpression$1"]},{name:"subInstruction$ebnf$1$subexpression$2",symbols:["instruction","_",d.has("semicolon")?{type:"semicolon"}:semicolon,"_"]},{name:"subInstruction$ebnf$1",symbols:["subInstruction$ebnf$1","subInstruction$ebnf$1$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subInstruction",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_","subInstruction$ebnf$1","instruction","_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>e[2].map(e=>e[0]).concat(e[3]).map(e=>F(e))},{name:"subInstruction$ebnf$2$subexpression$1",symbols:["instruction","_",d.has("semicolon")?{type:"semicolon"}:semicolon,"_"]},{name:"subInstruction$ebnf$2",symbols:["subInstruction$ebnf$2$subexpression$1"]},{name:"subInstruction$ebnf$2$subexpression$2",symbols:["instruction","_",d.has("semicolon")?{type:"semicolon"}:semicolon,"_"]},{name:"subInstruction$ebnf$2",symbols:["subInstruction$ebnf$2","subInstruction$ebnf$2$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"subInstruction",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_","subInstruction$ebnf$2",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:L},{name:"instructions",symbols:[d.has("baseInstruction")?{type:"baseInstruction"}:baseInstruction]},{name:"instructions",symbols:[d.has("macroCADR")?{type:"macroCADR"}:macroCADR]},{name:"instructions",symbols:[d.has("macroDIP")?{type:"macroDIP"}:macroDIP]},{name:"instructions",symbols:[d.has("macroDUP")?{type:"macroDUP"}:macroDUP]},{name:"instructions",symbols:[d.has("macroSETCADR")?{type:"macroSETCADR"}:macroSETCADR]},{name:"instructions",symbols:[d.has("macroASSERTlist")?{type:"macroASSERTlist"}:macroASSERTlist]},{name:"instruction",symbols:["instructions"],postprocess:C},{name:"instruction$ebnf$1$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$1",symbols:["instruction$ebnf$1$subexpression$1"]},{name:"instruction$ebnf$1$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$1",symbols:["instruction$ebnf$1","instruction$ebnf$1$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:["instructions","instruction$ebnf$1","_"],postprocess:C},{name:"instruction",symbols:["instructions","_","subInstruction"],postprocess:e=>{const t=`${e[0].toString()}`;return _(t)?v(t,e[2]):`{ "prim": "${e[0]}", "args": [ [ ${e[2]} ] ] }`}},{name:"instruction$ebnf$2$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$2",symbols:["instruction$ebnf$2$subexpression$1"]},{name:"instruction$ebnf$2$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$2",symbols:["instruction$ebnf$2","instruction$ebnf$2$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:["instructions","instruction$ebnf$2","_","subInstruction"],postprocess:N},{name:"instruction",symbols:["instructions","_","type"],postprocess:U},{name:"instruction$ebnf$3$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$3",symbols:["instruction$ebnf$3$subexpression$1"]},{name:"instruction$ebnf$3$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$3",symbols:["instruction$ebnf$3","instruction$ebnf$3$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:["instructions","instruction$ebnf$3","_","type"],postprocess:N},{name:"instruction",symbols:["instructions","_","data"],postprocess:U},{name:"instruction$ebnf$4$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$4",symbols:["instruction$ebnf$4$subexpression$1"]},{name:"instruction$ebnf$4$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$4",symbols:["instruction$ebnf$4","instruction$ebnf$4$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:["instructions","instruction$ebnf$4","_","data"],postprocess:N},{name:"instruction",symbols:["instructions","_","type","_","type","_","subInstruction"],postprocess:e=>`{ "prim": "${e[0]}", "args": [ ${e[2]}, ${e[4]}, [${e[6]}] ] }`},{name:"instruction$ebnf$5$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$5",symbols:["instruction$ebnf$5$subexpression$1"]},{name:"instruction$ebnf$5$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$5",symbols:["instruction$ebnf$5","instruction$ebnf$5$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:["instructions","instruction$ebnf$5","_","type","_","type","_","subInstruction"],postprocess:e=>{const t=e[1].map(e=>`"${e[1]}"`);return`{ "prim": "${e[0]}", "args": [ ${e[3]}, ${e[5]}, ${e[7]} ], "annots": [${t}] }`}},{name:"instruction",symbols:["instructions","_","subInstruction","_","subInstruction"],postprocess:e=>{const t=`${e[0].toString()}`;return D(t)?P(t,e[2],e[4]):`{ "prim": "${e[0]}", "args": [ [${e[2]}], [${e[4]}] ] }`}},{name:"instruction$ebnf$6$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$6",symbols:["instruction$ebnf$6$subexpression$1"]},{name:"instruction$ebnf$6$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$6",symbols:["instruction$ebnf$6","instruction$ebnf$6$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:["instructions","instruction$ebnf$6","_","subInstruction","_","subInstruction"],postprocess:B},{name:"instruction",symbols:["instructions","_","type","_","type"],postprocess:M},{name:"instruction$ebnf$7$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$7",symbols:["instruction$ebnf$7$subexpression$1"]},{name:"instruction$ebnf$7$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$7",symbols:["instruction$ebnf$7","instruction$ebnf$7$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:["instructions","instruction$ebnf$7","_","type","_","type"],postprocess:B},{name:"instruction",symbols:[{literal:"PUSH"},"_","type","_","data"],postprocess:M},{name:"instruction",symbols:[{literal:"PUSH"},"_","type","_",d.has("lbrace")?{type:"lbrace"}:lbrace,d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>`{ "prim": "${e[0]}", "args": [${e[2]}, []] }`},{name:"instruction$ebnf$8$subexpression$1",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$8",symbols:["instruction$ebnf$8$subexpression$1"]},{name:"instruction$ebnf$8$subexpression$2",symbols:["_",d.has("annot")?{type:"annot"}:annot]},{name:"instruction$ebnf$8",symbols:["instruction$ebnf$8","instruction$ebnf$8$subexpression$2"],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:[{literal:"PUSH"},"instruction$ebnf$8","_","type","_","data"],postprocess:e=>{const t=e[1].map(e=>`"${e[1]}"`);return`{ "prim": "PUSH", "args": [ ${e[3]}, ${e[5]} ], "annots": [${t}] }`}},{name:"instruction$ebnf$9",symbols:[/[0-9]/]},{name:"instruction$ebnf$9",symbols:["instruction$ebnf$9",/[0-9]/],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:[{literal:"DIP"},"_","instruction$ebnf$9","_","subInstruction"],postprocess:z},{name:"instruction$ebnf$10",symbols:[/[0-9]/]},{name:"instruction$ebnf$10",symbols:["instruction$ebnf$10",/[0-9]/],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:[{literal:"DUP"},"_","instruction$ebnf$10","_","subInstruction"],postprocess:z},{name:"instruction$ebnf$11",symbols:[/[0-9]/]},{name:"instruction$ebnf$11",symbols:["instruction$ebnf$11",/[0-9]/],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:[{literal:"DIG"},"_","instruction$ebnf$11"],postprocess:j},{name:"instruction$ebnf$12",symbols:[/[0-9]/]},{name:"instruction$ebnf$12",symbols:["instruction$ebnf$12",/[0-9]/],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:[{literal:"DUG"},"_","instruction$ebnf$12"],postprocess:j},{name:"instruction$ebnf$13",symbols:[/[0-9]/]},{name:"instruction$ebnf$13",symbols:["instruction$ebnf$13",/[0-9]/],postprocess:e=>e[0].concat([e[1]])},{name:"instruction",symbols:[{literal:"DROP"},"_","instruction$ebnf$13"],postprocess:e=>`{ "prim": "${e[0]}", "args": [ { "int": "${e[2]}" } ] }`},{name:"instruction",symbols:[{literal:"DROP"}],postprocess:C},{name:"instruction",symbols:[d.has("lbrace")?{type:"lbrace"}:lbrace,"_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>""},{name:"instruction",symbols:[{literal:"CREATE_CONTRACT"},"_",d.has("lbrace")?{type:"lbrace"}:lbrace,"_","parameter","_","storage","_","code","_",d.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>`{ "prim":"CREATE_CONTRACT", "args": [ [ ${e[4]}, ${e[6]}, {"prim": "code" , "args":[ [ ${e[8]} ] ] } ] ] }`},{name:"instruction",symbols:[{literal:"EMPTY_MAP"},"_","type","_","type"],postprocess:M},{name:"instruction",symbols:[{literal:"EMPTY_MAP"},"_",d.has("lparen")?{type:"lparen"}:lparen,"_","type","_",d.has("rparen")?{type:"rparen"}:rparen,"_","type"],postprocess:e=>`{ "prim": "${e[0]}", "args": [ ${e[4]}, ${e[8]} ] }`},{name:"_$ebnf$1",symbols:[]},{name:"_$ebnf$1",symbols:["_$ebnf$1",/[\s]/],postprocess:e=>e[0].concat([e[1]])},{name:"_",symbols:["_$ebnf$1"]},{name:"semicolons$ebnf$1",symbols:[/[;]/],postprocess:n},{name:"semicolons$ebnf$1",symbols:[],postprocess:()=>null},{name:"semicolons",symbols:["semicolons$ebnf$1"]}],ParserStart:"main"};t.default=W},function(e,t,r){"use strict";var n=r(50),o=r(70);e.exports=o((function(e){var t=n("sha256").update(e).digest();return n("sha256").update(t).digest()}))},function(e,t,r){"use strict";var n=r(1),o=r(51),s=r(63),i=r(64),a=r(69);function u(e){a.call(this,"digest"),this._hash=e}n(u,a),u.prototype._update=function(e){this._hash.update(e)},u.prototype._final=function(){return this._hash.digest()},e.exports=function(e){return"md5"===(e=e.toLowerCase())?new o:"rmd160"===e||"ripemd160"===e?new s:new u(i(e))}},function(e,t,r){"use strict";var n=r(1),o=r(33),s=r(2).Buffer,i=new Array(16);function a(){o.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function u(e,t){return e<>>32-t}function c(e,t,r,n,o,s,i){return u(e+(t&r|~t&n)+o+s|0,i)+t|0}function l(e,t,r,n,o,s,i){return u(e+(t&n|r&~n)+o+s|0,i)+t|0}function p(e,t,r,n,o,s,i){return u(e+(t^r^n)+o+s|0,i)+t|0}function f(e,t,r,n,o,s,i){return u(e+(r^(t|~n))+o+s|0,i)+t|0}n(a,o),a.prototype._update=function(){for(var e=i,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,o=this._c,s=this._d;r=c(r,n,o,s,e[0],3614090360,7),s=c(s,r,n,o,e[1],3905402710,12),o=c(o,s,r,n,e[2],606105819,17),n=c(n,o,s,r,e[3],3250441966,22),r=c(r,n,o,s,e[4],4118548399,7),s=c(s,r,n,o,e[5],1200080426,12),o=c(o,s,r,n,e[6],2821735955,17),n=c(n,o,s,r,e[7],4249261313,22),r=c(r,n,o,s,e[8],1770035416,7),s=c(s,r,n,o,e[9],2336552879,12),o=c(o,s,r,n,e[10],4294925233,17),n=c(n,o,s,r,e[11],2304563134,22),r=c(r,n,o,s,e[12],1804603682,7),s=c(s,r,n,o,e[13],4254626195,12),o=c(o,s,r,n,e[14],2792965006,17),r=l(r,n=c(n,o,s,r,e[15],1236535329,22),o,s,e[1],4129170786,5),s=l(s,r,n,o,e[6],3225465664,9),o=l(o,s,r,n,e[11],643717713,14),n=l(n,o,s,r,e[0],3921069994,20),r=l(r,n,o,s,e[5],3593408605,5),s=l(s,r,n,o,e[10],38016083,9),o=l(o,s,r,n,e[15],3634488961,14),n=l(n,o,s,r,e[4],3889429448,20),r=l(r,n,o,s,e[9],568446438,5),s=l(s,r,n,o,e[14],3275163606,9),o=l(o,s,r,n,e[3],4107603335,14),n=l(n,o,s,r,e[8],1163531501,20),r=l(r,n,o,s,e[13],2850285829,5),s=l(s,r,n,o,e[2],4243563512,9),o=l(o,s,r,n,e[7],1735328473,14),r=p(r,n=l(n,o,s,r,e[12],2368359562,20),o,s,e[5],4294588738,4),s=p(s,r,n,o,e[8],2272392833,11),o=p(o,s,r,n,e[11],1839030562,16),n=p(n,o,s,r,e[14],4259657740,23),r=p(r,n,o,s,e[1],2763975236,4),s=p(s,r,n,o,e[4],1272893353,11),o=p(o,s,r,n,e[7],4139469664,16),n=p(n,o,s,r,e[10],3200236656,23),r=p(r,n,o,s,e[13],681279174,4),s=p(s,r,n,o,e[0],3936430074,11),o=p(o,s,r,n,e[3],3572445317,16),n=p(n,o,s,r,e[6],76029189,23),r=p(r,n,o,s,e[9],3654602809,4),s=p(s,r,n,o,e[12],3873151461,11),o=p(o,s,r,n,e[15],530742520,16),r=f(r,n=p(n,o,s,r,e[2],3299628645,23),o,s,e[0],4096336452,6),s=f(s,r,n,o,e[7],1126891415,10),o=f(o,s,r,n,e[14],2878612391,15),n=f(n,o,s,r,e[5],4237533241,21),r=f(r,n,o,s,e[12],1700485571,6),s=f(s,r,n,o,e[3],2399980690,10),o=f(o,s,r,n,e[10],4293915773,15),n=f(n,o,s,r,e[1],2240044497,21),r=f(r,n,o,s,e[8],1873313359,6),s=f(s,r,n,o,e[15],4264355552,10),o=f(o,s,r,n,e[6],2734768916,15),n=f(n,o,s,r,e[13],1309151649,21),r=f(r,n,o,s,e[4],4149444226,6),s=f(s,r,n,o,e[11],3174756917,10),o=f(o,s,r,n,e[2],718787259,15),n=f(n,o,s,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+o|0,this._d=this._d+s|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=s.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=a},function(e,t){},function(e,t,r){"use strict";var n=r(2).Buffer,o=r(54);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,o,s=n.allocUnsafe(e>>>0),i=this.head,a=0;i;)t=i.data,r=s,o=a,t.copy(r,o),a+=i.data.length,i=i.next;return s},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,r){(function(e){var n=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function s(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new s(o.call(setTimeout,n,arguments),clearTimeout)},t.setInterval=function(){return new s(o.call(setInterval,n,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},s.prototype.unref=s.prototype.ref=function(){},s.prototype.close=function(){this._clearFn.call(n,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},r(56),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(10))},function(e,t,r){(function(e,t){!function(e,r){"use strict";if(!e.setImmediate){var n,o,s,i,a,u=1,c={},l=!1,p=e.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(e);f=f&&f.setTimeout?f:e,"[object process]"==={}.toString.call(e.process)?n=function(e){t.nextTick((function(){d(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=r,t}}()?e.MessageChannel?((s=new MessageChannel).port1.onmessage=function(e){d(e.data)},n=function(e){s.port2.postMessage(e)}):p&&"onreadystatechange"in p.createElement("script")?(o=p.documentElement,n=function(e){var t=p.createElement("script");t.onreadystatechange=function(){d(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):n=function(e){setTimeout(d,0,e)}:(i="setImmediate$"+Math.random()+"$",a=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(i)&&d(+t.data.slice(i.length))},e.addEventListener?e.addEventListener("message",a,!1):e.attachEvent("onmessage",a),n=function(t){e.postMessage(i+t,"*")}),f.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r>>32-t}function b(e,t,r,n,o,s,i,a){return d(e+(t^r^n)+s+i|0,a)+o|0}function m(e,t,r,n,o,s,i,a){return d(e+(t&r|~t&n)+s+i|0,a)+o|0}function g(e,t,r,n,o,s,i,a){return d(e+((t|~r)^n)+s+i|0,a)+o|0}function y(e,t,r,n,o,s,i,a){return d(e+(t&n|r&~n)+s+i|0,a)+o|0}function $(e,t,r,n,o,s,i,a){return d(e+(t^(r|~n))+s+i|0,a)+o|0}o(h,s),h.prototype._update=function(){for(var e=i,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,o=0|this._c,s=0|this._d,h=0|this._e,D=0|this._a,P=0|this._b,_=0|this._c,v=0|this._d,I=0|this._e,A=0;A<80;A+=1){var w,E;A<16?(w=b(r,n,o,s,h,e[a[A]],p[0],c[A]),E=$(D,P,_,v,I,e[u[A]],f[0],l[A])):A<32?(w=m(r,n,o,s,h,e[a[A]],p[1],c[A]),E=y(D,P,_,v,I,e[u[A]],f[1],l[A])):A<48?(w=g(r,n,o,s,h,e[a[A]],p[2],c[A]),E=g(D,P,_,v,I,e[u[A]],f[2],l[A])):A<64?(w=y(r,n,o,s,h,e[a[A]],p[3],c[A]),E=m(D,P,_,v,I,e[u[A]],f[3],l[A])):(w=$(r,n,o,s,h,e[a[A]],p[4],c[A]),E=b(D,P,_,v,I,e[u[A]],f[4],l[A])),r=h,h=s,s=d(o,10),o=n,n=w,D=I,I=v,v=d(_,10),_=P,P=E}var S=this._b+o+v|0;this._b=this._c+s+I|0,this._c=this._d+h+D|0,this._d=this._e+r+P|0,this._e=this._a+n+_|0,this._a=S},h.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=n.alloc?n.alloc(20):new n(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=h},function(e,t,r){(t=e.exports=function(e){e=e.toLowerCase();var r=t[e];if(!r)throw new Error(e+" is not supported (we accept pull requests)");return new r}).sha=r(65),t.sha1=r(66),t.sha224=r(67),t.sha256=r(39),t.sha384=r(68),t.sha512=r(40)},function(e,t,r){var n=r(1),o=r(13),s=r(2).Buffer,i=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function u(){this.init(),this._w=a,o.call(this,64,56)}function c(e){return e<<30|e>>>2}function l(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(u,o),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,o=0|this._b,s=0|this._c,a=0|this._d,u=0|this._e,p=0;p<16;++p)r[p]=e.readInt32BE(4*p);for(;p<80;++p)r[p]=r[p-3]^r[p-8]^r[p-14]^r[p-16];for(var f=0;f<80;++f){var h=~~(f/20),d=0|((t=n)<<5|t>>>27)+l(h,o,s,a)+u+r[f]+i[h];u=a,a=s,s=c(o),o=n,n=d}this._a=n+this._a|0,this._b=o+this._b|0,this._c=s+this._c|0,this._d=a+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=s.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=u},function(e,t,r){var n=r(1),o=r(13),s=r(2).Buffer,i=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function u(){this.init(),this._w=a,o.call(this,64,56)}function c(e){return e<<5|e>>>27}function l(e){return e<<30|e>>>2}function p(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(u,o),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,o=0|this._b,s=0|this._c,a=0|this._d,u=0|this._e,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<80;++f)r[f]=(t=r[f-3]^r[f-8]^r[f-14]^r[f-16])<<1|t>>>31;for(var h=0;h<80;++h){var d=~~(h/20),b=c(n)+p(d,o,s,a)+u+r[h]+i[d]|0;u=a,a=s,s=l(o),o=n,n=b}this._a=n+this._a|0,this._b=o+this._b|0,this._c=s+this._c|0,this._d=a+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=s.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=u},function(e,t,r){var n=r(1),o=r(39),s=r(13),i=r(2).Buffer,a=new Array(64);function u(){this.init(),this._w=a,s.call(this,64,56)}n(u,o),u.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},u.prototype._hash=function(){var e=i.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=u},function(e,t,r){var n=r(1),o=r(40),s=r(13),i=r(2).Buffer,a=new Array(160);function u(){this.init(),this._w=a,s.call(this,128,112)}n(u,o),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){var e=i.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=u},function(e,t,r){var n=r(2).Buffer,o=r(34).Transform,s=r(23).StringDecoder;function i(e){o.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(1)(i,o),i.prototype.update=function(e,t,r){"string"==typeof e&&(e=n.from(e,t));var o=this._update(e);return this.hashMode?this:(r&&(o=this._toString(o,r)),o)},i.prototype.setAutoPadding=function(){},i.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},i.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},i.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},i.prototype._transform=function(e,t,r){var n;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){n=e}finally{r(n)}},i.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},i.prototype._finalOrDigest=function(e){var t=this.__final()||n.alloc(0);return e&&(t=this._toString(t,e,!0)),t},i.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new s(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var n=this._decoder.write(e);return r&&(n+=this._decoder.end()),n},e.exports=i},function(e,t,r){"use strict";var n=r(71),o=r(2).Buffer;e.exports=function(e){function t(t){var r=t.slice(0,-4),n=t.slice(-4),o=e(r);if(!(n[0]^o[0]|n[1]^o[1]|n[2]^o[2]|n[3]^o[3]))return r}return{encode:function(t){var r=e(t);return n.encode(o.concat([t,r],t.length+4))},decode:function(e){var r=t(n.decode(e));if(!r)throw new Error("Invalid checksum");return r},decodeUnsafe:function(e){var r=n.decodeUnsafe(e);if(r)return t(r)}}}},function(e,t,r){var n=r(72);e.exports=n("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},function(e,t,r){"use strict";var n=r(2).Buffer;e.exports=function(e){if(e.length>=255)throw new TypeError("Alphabet too long");var t=new Uint8Array(256);t.fill(255);for(var r=0;r>>0,l=new Uint8Array(c);e[r];){var p=t[e.charCodeAt(r)];if(255===p)return;for(var f=0,h=c-1;(0!==p||f>>0,l[h]=p%256>>>0,p=p/256>>>0;if(0!==p)throw new Error("Non-zero carry");s=f,r++}if(" "!==e[r]){for(var d=c-s;d!==c&&0===l[d];)d++;var b=n.allocUnsafe(o+(c-d));b.fill(0,0,o);for(var m=o;d!==c;)b[m++]=l[d++];return b}}}return{encode:function(t){if(!n.isBuffer(t))throw new TypeError("Expected Buffer");if(0===t.length)return"";for(var r=0,o=0,s=0,u=t.length;s!==u&&0===t[s];)s++,r++;for(var l=(u-s)*c+1>>>0,p=new Uint8Array(l);s!==u;){for(var f=t[s],h=0,d=l-1;(0!==f||h>>0,p[d]=f%i>>>0,f=f/i>>>0;if(0!==f)throw new Error("Non-zero carry");o=h,s++}for(var b=l-o;b!==l&&0===p[b];)b++;for(var m=a.repeat(r);b=4294967296&&o++,e[t]=n,e[t+1]=o}function s(e,t,r,n){var o=e[t]+r;r<0&&(o+=4294967296);var s=e[t+1]+n;o>=4294967296&&s++,e[t]=o,e[t+1]=s}function i(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function a(e,t,r,n,i,a){var u=p[i],c=p[i+1],f=p[a],h=p[a+1];o(l,e,t),s(l,e,u,c);var d=l[n]^l[e],b=l[n+1]^l[e+1];l[n]=b,l[n+1]=d,o(l,r,n),d=l[t]^l[r],b=l[t+1]^l[r+1],l[t]=d>>>24^b<<8,l[t+1]=b>>>24^d<<8,o(l,e,t),s(l,e,f,h),d=l[n]^l[e],b=l[n+1]^l[e+1],l[n]=d>>>16^b<<16,l[n+1]=b>>>16^d<<16,o(l,r,n),d=l[t]^l[r],b=l[t+1]^l[r+1],l[t]=b>>>31^d<<1,l[t+1]=d>>>31^b<<1}var u=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),c=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3].map((function(e){return 2*e}))),l=new Uint32Array(32),p=new Uint32Array(32);function f(e,t){var r=0;for(r=0;r<16;r++)l[r]=e.h[r],l[r+16]=u[r];for(l[24]=l[24]^e.t,l[25]=l[25]^e.t/4294967296,t&&(l[28]=~l[28],l[29]=~l[29]),r=0;r<32;r++)p[r]=i(e.b,4*r);for(r=0;r<12;r++)a(0,8,16,24,c[16*r+0],c[16*r+1]),a(2,10,18,26,c[16*r+2],c[16*r+3]),a(4,12,20,28,c[16*r+4],c[16*r+5]),a(6,14,22,30,c[16*r+6],c[16*r+7]),a(0,10,20,30,c[16*r+8],c[16*r+9]),a(2,12,22,24,c[16*r+10],c[16*r+11]),a(4,14,16,26,c[16*r+12],c[16*r+13]),a(6,8,18,28,c[16*r+14],c[16*r+15]);for(r=0;r<16;r++)e.h[r]=e.h[r]^l[r]^l[r+16]}function h(e,t){if(0===e||e>64)throw new Error("Illegal output length, expected 0 < length <= 64");if(t&&t.length>64)throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");for(var r={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:e},n=0;n<16;n++)r.h[n]=u[n];var o=t?t.length:0;return r.h[0]^=16842752^o<<8^e,t&&(d(r,t),r.c=128),r}function d(e,t){for(var r=0;r>2]>>8*(3&r);return t}function m(e,t,r){r=r||64,e=n.normalizeInput(e);var o=h(r,t);return d(o,e),b(o)}e.exports={blake2b:m,blake2bHex:function(e,t,r){var o=m(e,t,r);return n.toHex(o)},blake2bInit:h,blake2bUpdate:d,blake2bFinal:b}},function(e,t,r){var n=r(41);function o(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function s(e,t,r,n,o,s){c[e]=c[e]+c[t]+o,c[n]=i(c[n]^c[e],16),c[r]=c[r]+c[n],c[t]=i(c[t]^c[r],12),c[e]=c[e]+c[t]+s,c[n]=i(c[n]^c[e],8),c[r]=c[r]+c[n],c[t]=i(c[t]^c[r],7)}function i(e,t){return e>>>t^e<<32-t}var a=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),u=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),c=new Uint32Array(16),l=new Uint32Array(16);function p(e,t){var r=0;for(r=0;r<8;r++)c[r]=e.h[r],c[r+8]=a[r];for(c[12]^=e.t,c[13]^=e.t/4294967296,t&&(c[14]=~c[14]),r=0;r<16;r++)l[r]=o(e.b,4*r);for(r=0;r<10;r++)s(0,4,8,12,l[u[16*r+0]],l[u[16*r+1]]),s(1,5,9,13,l[u[16*r+2]],l[u[16*r+3]]),s(2,6,10,14,l[u[16*r+4]],l[u[16*r+5]]),s(3,7,11,15,l[u[16*r+6]],l[u[16*r+7]]),s(0,5,10,15,l[u[16*r+8]],l[u[16*r+9]]),s(1,6,11,12,l[u[16*r+10]],l[u[16*r+11]]),s(2,7,8,13,l[u[16*r+12]],l[u[16*r+13]]),s(3,4,9,14,l[u[16*r+14]],l[u[16*r+15]]);for(r=0;r<8;r++)e.h[r]^=c[r]^c[r+8]}function f(e,t){if(!(e>0&&e<=32))throw new Error("Incorrect output length, should be in [1, 32]");var r=t?t.length:0;if(t&&!(r>0&&r<=32))throw new Error("Incorrect key length, should be in [1, 32]");var n={h:new Uint32Array(a),b:new Uint32Array(64),c:0,t:0,outlen:e};return n.h[0]^=16842752^r<<8^e,r>0&&(h(n,t),n.c=64),n}function h(e,t){for(var r=0;r>2]>>8*(3&r)&255;return t}function b(e,t,r){r=r||32,e=n.normalizeInput(e);var o=f(r,t);return h(o,e),d(o)}e.exports={blake2s:b,blake2sHex:function(e,t,r){var o=b(e,t,r);return n.toHex(o)},blake2sInit:f,blake2sUpdate:h,blake2sFinal:d}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(19).compile({wspace:/[ \t]+/,lparen:"(",rparen:")",annot:/:[^ );]+|%[^ );]+/,parameter:"parameter",or:"or",pair:"pair",data:["bytes","int","nat","bool","string","timestamp","signature","key","key_hash","mutez","address","unit","operation","chain_id"],singleArgData:["option","list","contract","set"],doubleArgData:["lambda","map","big_map"],semicolon:";"}),o=e=>{let t=void 0,r=void 0;if(e.length>=3){const n=e[2].toString();"%"===n.charAt(0)?r=a(n):t=u(n)}if(5===e.length){const n=e[4].toString();n.startsWith("%")&&void 0===r&&(r=a(n)),n.startsWith(":")&&void 0===t&&(t=u(n))}return[{name:r,parameters:[{name:t||r,type:e[0].toString()}],structure:"$PARAM",generateInvocationString(...e){if(this.parameters.length!==e.length)throw new Error(`Incorrect number of parameters provided; expected ${this.parameters.length}, got ${e.length}`);let t=this.structure;for(let r=0;r{switch(e.type){case"string":return'"Tacos"';case"int":return-1;case"nat":return 99;case"address":return'"KT1EGbAxguaWQFkV3Egb2Z1r933MWuEYyrJS"';case"key_hash":return'"tz1SQnJaocpquTztY3zMgydTPoQBBQrDGonJ"';case"timestamp":return`"${(new Date).toISOString()}"`;case"mutez":return 5e5;case"unit":return"Unit";case"bytes":case"bool":case"signature":case"key":case"operation":case"chain_id":default:return e.type}});return this.generateInvocationString(...e)}}]},s=(...e)=>{const t=e.find(e=>e.startsWith("%"));return t?a(t):void 0},i=(...e)=>{const t=e.find(e=>e.startsWith(":"));return t?u(t):void 0},a=e=>{if(!e.startsWith("%"))throw new Error(`${e} must start with '%'`);return e.replace(/^%_Liq_entry_/,"").replace("%","")},u=e=>{if(!e.startsWith(":"))throw new Error(`${e} must start with ':'`);return e.replace(":","")},c={Lexer:n,ParserRules:[{name:"entry",symbols:[n.has("parameter")?{type:"parameter"}:parameter,"__","parameters","_",n.has("semicolon")?{type:"semicolon"}:semicolon],postprocess:e=>e[2]},{name:"parameters",symbols:[n.has("lparen")?{type:"lparen"}:lparen,"_","parameters","_",n.has("rparen")?{type:"rparen"}:rparen],postprocess:e=>e[2]},{name:"parameters",symbols:[n.has("or")?{type:"or"}:or,"_",n.has("annot")?{type:"annot"}:annot,"__",n.has("annot")?{type:"annot"}:annot,"__","parameters","__","parameters"],postprocess:e=>{e[2],e[4];const t=e[6],r=e[8],n=[];for(const e of t){const t={name:e.name,parameters:e.parameters,structure:"(Left "+e.structure+")",generateInvocationString:e.generateInvocationString,generateInvocationPair:e.generateInvocationPair,generateSampleInvocation:e.generateSampleInvocation};n.push(t)}for(const e of r){const t={name:e.name,parameters:e.parameters,structure:"(Right "+e.structure+")",generateInvocationString:e.generateInvocationString,generateInvocationPair:e.generateInvocationPair,generateSampleInvocation:e.generateSampleInvocation};n.push(t)}return n}},{name:"parameters",symbols:[n.has("or")?{type:"or"}:or,"_",n.has("annot")?{type:"annot"}:annot,"__","parameters","__","parameters"],postprocess:e=>{const t=e[2],r=e[4],n=e[6],o=[];for(const e of r){const r={name:`${t}.${e.name}`,parameters:e.parameters,structure:"(Left "+e.structure+")",generateInvocationString:e.generateInvocationString,generateInvocationPair:e.generateInvocationPair,generateSampleInvocation:e.generateSampleInvocation};o.push(r)}for(const e of n){const r={name:`${t}.${e.name}`,parameters:e.parameters,structure:"(Right "+e.structure+")",generateInvocationString:e.generateInvocationString,generateInvocationPair:e.generateInvocationPair,generateSampleInvocation:e.generateSampleInvocation};o.push(r)}return o}},{name:"parameters",symbols:[n.has("or")?{type:"or"}:or,"_","parameters","__","parameters"],postprocess:e=>{const t=e[2],r=e[4],n=[];for(const e of t)1===e.parameters.length&&e.parameters[0].name===e.name&&(e.parameters[0].name=void 0),n.push(Object.assign(Object.assign({},e),{structure:`(Left ${e.structure})`}));for(const e of r)1===e.parameters.length&&e.parameters[0].name===e.name&&(e.parameters[0].name=void 0),n.push(Object.assign(Object.assign({},e),{structure:`(Right ${e.structure})`}));return n}},{name:"parameters",symbols:[n.has("pair")?{type:"pair"}:pair,"__",n.has("annot")?{type:"annot"}:annot,"__",n.has("annot")?{type:"annot"}:annot,"__","parameters","__","parameters"],postprocess:e=>{const t=e[2],r=e[4],n=e[6],o=e[8],s=[];for(const e of n)for(const n of o){const o={name:i(t.toString(),r.toString()),parameters:e.parameters.concat(n.parameters),structure:`(Pair ${e.structure} ${n.structure})`,generateInvocationString:e.generateInvocationString,generateInvocationPair:e.generateInvocationPair,generateSampleInvocation:e.generateSampleInvocation};s.push(o)}return s}},{name:"parameters",symbols:[n.has("pair")?{type:"pair"}:pair,"__",n.has("annot")?{type:"annot"}:annot,"__","parameters","__","parameters"],postprocess:e=>{const t=e[2],r=e[4],n=e[6],o=[];for(const e of r)for(const r of n){const n={name:i(t.toString())||s(t.toString())||void 0,parameters:e.parameters.concat(r.parameters),structure:`(Pair ${e.structure} ${r.structure})`,generateInvocationString:e.generateInvocationString,generateInvocationPair:e.generateInvocationPair,generateSampleInvocation:e.generateSampleInvocation};o.push(n)}return o}},{name:"parameters",symbols:[n.has("pair")?{type:"pair"}:pair,"__","parameters","__","parameters"],postprocess:e=>{const t=e[2],r=e[4],n=[];for(const e of t)for(const t of r){const r={name:void 0,parameters:e.parameters.concat(t.parameters),structure:`(Pair ${e.structure} ${t.structure})`,generateInvocationString:e.generateInvocationString,generateInvocationPair:e.generateInvocationPair,generateSampleInvocation:e.generateSampleInvocation};n.push(r)}return n}},{name:"parameters",symbols:[n.has("singleArgData")?{type:"singleArgData"}:singleArgData,"_",n.has("annot")?{type:"annot"}:annot,"__",n.has("annot")?{type:"annot"}:annot,"__","parameters"],postprocess:e=>{const t=e[0].toString(),r=e[2].toString(),n=e[4].toString(),o=e[6];return o[0].name=s(r,n),o[0].parameters[0].constituentType=o[0].parameters[0].type,"option"===t&&(o[0].parameters[0].optional=!0),o[0].parameters[0].type=`${t} (${o[0].parameters[0].type})`,o[0].structure=`(${o[0].structure})`,o}},{name:"parameters",symbols:[n.has("singleArgData")?{type:"singleArgData"}:singleArgData,"_",n.has("annot")?{type:"annot"}:annot,"__","parameters"],postprocess:e=>{const t=e[0].toString(),r=e[2].toString(),n=e[4];return n[0].name=s(r),n[0].parameters[0].constituentType=n[0].parameters[0].type,"option"===t&&(n[0].parameters[0].optional=!0),n[0].parameters[0].type=`${t} (${n[0].parameters[0].type})`,n[0].structure=`(${n[0].structure})`,n}},{name:"parameters",symbols:[n.has("singleArgData")?{type:"singleArgData"}:singleArgData,"_","parameters"],postprocess:e=>{const t=e[0].toString(),r=e[2];return r[0].parameters[0].constituentType=r[0].parameters[0].type,"option"===t&&(r[0].parameters[0].optional=!0),r[0].parameters[0].type=`${t} (${r[0].parameters[0].type})`,r[0].structure=`(${r[0].structure})`,r}},{name:"parameters",symbols:[n.has("doubleArgData")?{type:"doubleArgData"}:doubleArgData,"_",n.has("annot")?{type:"annot"}:annot,"__",n.has("annot")?{type:"annot"}:annot,"__","parameters","__","parameters"],postprocess:e=>{const t=e[0].toString(),r=e[2].toString(),n=e[4].toString(),o=e[6],i=e[8];return o[0].name=s(r,n),o[0].parameters[0].type=`${t} (${o[0].parameters[0].type}) (${i[0].parameters[0].type})`,o[0].structure=`(${o[0].structure})`,o}},{name:"parameters",symbols:[n.has("doubleArgData")?{type:"doubleArgData"}:doubleArgData,"_",n.has("annot")?{type:"annot"}:annot,"__","parameters","__","parameters"],postprocess:e=>{const t=e[0].toString(),r=e[2].toString(),n=e[4],o=e[6];return n[0].name=s(r),n[0].parameters[0].type=`${t} (${n[0].parameters[0].type}) (${o[0].parameters[0].type})`,n[0].structure=`(${n[0].structure})`,n}},{name:"parameters",symbols:[n.has("doubleArgData")?{type:"doubleArgData"}:doubleArgData,"_","parameters","__","parameters"],postprocess:e=>{const t=e[0].toString(),r=e[2],n=e[4];return r[0].parameters[0].type=`${t} (${r[0].parameters[0].type}) (${n[0].parameters[0].type})`,r[0].structure=`(${r[0].structure})`,r}},{name:"parameters",symbols:[n.has("data")?{type:"data"}:data,"__",n.has("annot")?{type:"annot"}:annot],postprocess:o},{name:"parameters",symbols:[n.has("data")?{type:"data"}:data,"__",n.has("annot")?{type:"annot"}:annot,"__",n.has("annot")?{type:"annot"}:annot],postprocess:o},{name:"parameters",symbols:[n.has("data")?{type:"data"}:data],postprocess:o},{name:"_$ebnf$1",symbols:[]},{name:"_$ebnf$1",symbols:["_$ebnf$1",/[\s]/],postprocess:e=>e[0].concat([e[1]])},{name:"_",symbols:["_$ebnf$1"]},{name:"__",symbols:[/[\s]/]}],ParserStart:"entry"};t.default=c},function(module,exports){var indexOf=function(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0;r{const r=s.get(t)||"";return e[r]>t?e:Object.assign(Object.assign({},e),{[r]:t})},new Map);!function(t){function r(e){return s.get(n.TezosMessageUtils.readInt(e))||""}function a(e){return r(e.substring(64,66))}function u(e,t,r=!0){switch(t){case"endorsement":case"seedNonceRevelation":case"doubleEndorsementEvidence":case"doubleBakingEvidence":case"accountActivation":case"proposal":throw new Error(`Unsupported operation type: ${t}`);case"ballot":return l(e,r);case"reveal":return f(e,r);case"transaction":return d(e,r);case"origination":return m(e,r);case"delegation":return y(e,r);default:throw new Error(`Unsupported operation type: ${t}`)}}function c(e){let t=n.TezosMessageUtils.writeInt(i.accountActivation);return t+=n.TezosMessageUtils.writeAddress(e.pkh).slice(4),t+=e.secret,t}function l(t,o=!0){if("ballot"!==r(o?t.substring(64,66):t.substring(0,2)))throw new Error("Provided operation is not a ballot");let s=0,i="";o?(i=n.TezosMessageUtils.readBranch(t.substring(s,s+64)),s+=66):s+=2;const a=n.TezosMessageUtils.readAddress(t.substring(s,s+42));s+=42;const u=parseInt(t.substring(s,s+8),16);s+=8;const c=n.TezosMessageUtils.readBufferWithHint(e.from(t.substring(s,s+64),"hex"),"p");s+=64;const l=parseInt(t.substring(s,s+1),16);let p;return s+=2,t.length>s&&(p=r(t.substring(s,s+2))),{operation:{kind:"ballot",source:a,period:u,proposal:c,vote:l},branch:i,next:p,nextoffset:p?s:-1}}function p(e){let t=n.TezosMessageUtils.writeInt(i.ballot);return t+=n.TezosMessageUtils.writeAddress(e.source).slice(2),t+=("00000000"+e.period.toString(16)).slice(-8),t+=n.TezosMessageUtils.writeBufferWithHint(e.proposal).toString("hex").slice(4),t+=("00"+e.vote.toString(16)).slice(-2),t}function f(e,t=!0){let o=t?e.substring(64,66):e.substring(0,2);if("reveal"!==r(o))throw new Error("Provided operation is not a reveal.");let s=0,i="";t?(i=n.TezosMessageUtils.readBranch(e.substring(s,s+64)),s+=66):s+=2;let a="";parseInt(o,16)<100?(a=n.TezosMessageUtils.readAddress(e.substring(s,s+44)),s+=44):(a=n.TezosMessageUtils.readAddress(e.substring(s,s+42)),s+=42);let u=n.TezosMessageUtils.findInt(e,s);s+=u.length;let c=n.TezosMessageUtils.findInt(e,s);s+=c.length;let l=n.TezosMessageUtils.findInt(e,s);s+=l.length;let p=n.TezosMessageUtils.findInt(e,s);s+=p.length;let f,h=n.TezosMessageUtils.readPublicKey(e.substring(s,s+66));return s+=66,e.length>s&&(f=r(e.substring(s,s+2))),{operation:{kind:"reveal",source:a,public_key:h,fee:u.value+"",gas_limit:l.value+"",storage_limit:p.value+"",counter:c.value+""},branch:i,next:f,nextoffset:f?s:-1}}function h(e){if("reveal"!==e.kind)throw new Error("Incorrect operation type.");let t=n.TezosMessageUtils.writeInt(i.reveal);return t+=n.TezosMessageUtils.writeAddress(e.source).slice(2),t+=n.TezosMessageUtils.writeInt(parseInt(e.fee)),t+=n.TezosMessageUtils.writeInt(parseInt(e.counter)),t+=n.TezosMessageUtils.writeInt(parseInt(e.gas_limit)),t+=n.TezosMessageUtils.writeInt(parseInt(e.storage_limit)),t+=n.TezosMessageUtils.writePublicKey(e.public_key),t}function d(t,s=!0){let i=s?t.substring(64,66):t.substring(0,2);if("transaction"!==r(i))throw new Error("Provided operation is not a transaction.");let a=0,u="";s?(u=n.TezosMessageUtils.readBranch(t.substring(a,a+64)),a+=66):a+=2;let c="";parseInt(i,16)<100?(c=n.TezosMessageUtils.readAddress(t.substring(a,a+44)),a+=44):(c=n.TezosMessageUtils.readAddress(t.substring(a,a+42)),a+=42);let l=n.TezosMessageUtils.findInt(t,a);a+=l.length;let p=n.TezosMessageUtils.findInt(t,a);a+=p.length;let f=n.TezosMessageUtils.findInt(t,a);a+=f.length;let h=n.TezosMessageUtils.findInt(t,a);a+=h.length;let d=n.TezosMessageUtils.findInt(t,a);a+=d.length;let b=n.TezosMessageUtils.readAddress(t.substring(a,a+44));a+=44;let m=n.TezosMessageUtils.readBoolean(t.substring(a,a+2));a+=2;let g,y="";if(m&&parseInt(i,16)<100){const e=parseInt(t.substring(a,a+8),16);a+=8;const r=o.TezosLanguageUtil.hexToMicheline(t.substring(a));if(y=r.code,r.consumed!==2*e)throw new Error("Failed to parse transaction parameters: length mismatch");a+=2*e}else if(m&&parseInt(i,16)>100){const r=parseInt(t.substring(a,a+2),16);a+=2;let n="";if(255===r){const r=parseInt(t.substring(a,a+2),16);a+=2,n=e.from(t.substring(a,a+2*r),"hex").toString(),a+=2*r}else 0===r?n="default":1===r?n="root":2===r?n="do":3===r?n="set_delegate":4===r&&(n="remove_delegate");const s=parseInt(t.substring(a,a+8),16);a+=8;const i=o.TezosLanguageUtil.hexToMicheline(t.substring(a)),u=i.code;if(i.consumed!==2*s)throw new Error("Failed to parse transaction parameters: length mismatch");a+=2*s,y={entrypoint:n,value:u}}return t.length>a&&(g=r(t.substring(a,a+2))),{operation:{kind:"transaction",source:c,destination:b,amount:d.value.toString(),fee:l.value.toString(),gas_limit:f.value.toString(),storage_limit:h.value.toString(),counter:p.value.toString(),parameters:y},branch:u,next:g,nextoffset:g?a:-1}}function b(e){if("transaction"!==e.kind)throw new Error("Incorrect operation type");let t=n.TezosMessageUtils.writeInt(i.transaction);if(t+=n.TezosMessageUtils.writeAddress(e.source).slice(2),t+=n.TezosMessageUtils.writeInt(parseInt(e.fee)),t+=n.TezosMessageUtils.writeInt(parseInt(e.counter)),t+=n.TezosMessageUtils.writeInt(parseInt(e.gas_limit)),t+=n.TezosMessageUtils.writeInt(parseInt(e.storage_limit)),t+=n.TezosMessageUtils.writeInt(parseInt(e.amount)),t+=n.TezosMessageUtils.writeAddress(e.destination),e.parameters){const r=e.parameters,n=o.TezosLanguageUtil.normalizeMichelineWhiteSpace(JSON.stringify(r.value)),s=o.TezosLanguageUtil.translateMichelineToHex(n);"default"!==r.entrypoint&&""!==r.entrypoint||"030b"!==s?(t+="ff","default"===r.entrypoint||""===r.entrypoint?t+="00":"root"===r.entrypoint?t+="01":"do"===r.entrypoint?t+="02":"set_delegate"===r.entrypoint?t+="03":"remove_delegate"===r.entrypoint?t+="04":t+="ff"+("0"+r.entrypoint.length.toString(16)).slice(-2)+r.entrypoint.split("").map(e=>e.charCodeAt(0).toString(16)).join(""),t+="030b"===s?"00":("0000000"+(s.length/2).toString(16)).slice(-8)+s):t+="00"}else t+="00";return t}function m(e,t=!0){let s=t?e.substring(64,66):e.substring(0,2);if("origination"!==r(s))throw new Error("Provided operation is not an origination.");let i=0,a="";t?(a=n.TezosMessageUtils.readBranch(e.substring(i,i+64)),i+=66):i+=2;let u="";parseInt(s,16)<100?(u=n.TezosMessageUtils.readAddress(e.substring(i,i+44)),i+=44):(u=n.TezosMessageUtils.readAddress(e.substring(i,i+42)),i+=42);let c=n.TezosMessageUtils.findInt(e,i);i+=c.length;let l=n.TezosMessageUtils.findInt(e,i);i+=l.length;let p=n.TezosMessageUtils.findInt(e,i);i+=p.length;let f=n.TezosMessageUtils.findInt(e,i);i+=f.length;let h="";parseInt(s,16)<100&&(h=n.TezosMessageUtils.readAddress(e.substring(i,i+42)),i+=42);let d=n.TezosMessageUtils.findInt(e,i);i+=d.length;let b=!1,m=!1;parseInt(s,16)<100&&(b=n.TezosMessageUtils.readBoolean(e.substring(i,i+2)),i+=2,m=n.TezosMessageUtils.readBoolean(e.substring(i,i+2)),i+=2);let g=n.TezosMessageUtils.readBoolean(e.substring(i,i+2));i+=2;let y="";g&&(y=n.TezosMessageUtils.readAddress(e.substring(i,i+42)),i+=42);let $=!0;parseInt(s,16)<100&&($=n.TezosMessageUtils.readBoolean(e.substring(i,i+2)),i+=2);let D,P={};if($){let t=parseInt(e.substring(i,i+8),16);i+=8;const r=o.TezosLanguageUtil.hexToMicheline(e.substring(i,i+2*t)).code;i+=2*t;let n=parseInt(e.substring(i,i+8),16);i+=8;const s=o.TezosLanguageUtil.hexToMicheline(e.substring(i,i+2*n)).code;i+=2*n,P=JSON.parse(`{ "script": [ ${r}, ${s} ] }`)}e.length>i&&(D=r(e.substring(i,i+2)));let _={kind:"origination",source:u,balance:d.value+"",delegate:g?y:void 0,fee:c.value+"",gas_limit:p.value+"",storage_limit:f.value+"",counter:l.value+"",script:$?P:void 0};return parseInt(s,16)<100&&(_.manager_pubkey=h,_.spendable=b,_.delegatable=m),{operation:_,branch:a,next:D,nextoffset:D?i:-1}}function g(e){if("origination"!==e.kind)throw new Error("Incorrect operation type");let t=n.TezosMessageUtils.writeInt(i.origination);if(t+=n.TezosMessageUtils.writeAddress(e.source).slice(2),t+=n.TezosMessageUtils.writeInt(parseInt(e.fee)),t+=n.TezosMessageUtils.writeInt(parseInt(e.counter)),t+=n.TezosMessageUtils.writeInt(parseInt(e.gas_limit)),t+=n.TezosMessageUtils.writeInt(parseInt(e.storage_limit)),t+=n.TezosMessageUtils.writeInt(parseInt(e.balance)),void 0!==e.delegate?(t+=n.TezosMessageUtils.writeBoolean(!0),t+=n.TezosMessageUtils.writeAddress(e.delegate).slice(2)):t+=n.TezosMessageUtils.writeBoolean(!1),e.script){let r=[];r.push(e.script.code),r.push(e.script.storage),t+=r.map(e=>o.TezosLanguageUtil.normalizeMichelineWhiteSpace(JSON.stringify(e))).map(e=>o.TezosLanguageUtil.translateMichelineToHex(e)).reduce((e,t)=>e+(("0000000"+(t.length/2).toString(16)).slice(-8)+t),"")}return t}function y(e,t=!0){let o=t?e.substring(64,66):e.substring(0,2);if("delegation"!==r(o))throw new Error("Provided operation is not a delegation.");let s=0,i="";t?(i=n.TezosMessageUtils.readBranch(e.substring(s,s+64)),s+=66):s+=2;let a="";parseInt(o,16)<100?(a=n.TezosMessageUtils.readAddress(e.substring(s,s+44)),s+=44):(a=n.TezosMessageUtils.readAddress(e.substring(s,s+42)),s+=42);let u=n.TezosMessageUtils.findInt(e,s);s+=u.length;let c=n.TezosMessageUtils.findInt(e,s);s+=c.length;let l=n.TezosMessageUtils.findInt(e,s);s+=l.length;let p=n.TezosMessageUtils.findInt(e,s);s+=p.length;let f=n.TezosMessageUtils.readBoolean(e.substring(s,s+2));s+=2;let h,d="";return f&&(d=n.TezosMessageUtils.readAddress(e.substring(s,s+42)),s+=42),e.length>s&&(h=r(e.substring(s,s+2))),{operation:{kind:"delegation",source:a,delegate:f?d:void 0,fee:u.value+"",gas_limit:l.value+"",storage_limit:p.value+"",counter:c.value+""},branch:i,next:h,nextoffset:h?s:-1}}function $(e){if("delegation"!==e.kind)throw new Error("Incorrect operation type");let t=n.TezosMessageUtils.writeInt(i.delegation);return t+=n.TezosMessageUtils.writeAddress(e.source).slice(2),t+=n.TezosMessageUtils.writeInt(parseInt(e.fee)),t+=n.TezosMessageUtils.writeInt(parseInt(e.counter)),t+=n.TezosMessageUtils.writeInt(parseInt(e.gas_limit)),t+=n.TezosMessageUtils.writeInt(parseInt(e.storage_limit)),void 0!==e.delegate&&""!==e.delegate?(t+=n.TezosMessageUtils.writeBoolean(!0),t+=n.TezosMessageUtils.writeAddress(e.delegate).slice(2)):t+=n.TezosMessageUtils.writeBoolean(!1),t}t.getOperationType=r,t.idFirstOperation=a,t.parseOperation=u,t.encodeOperation=function(e){if(e.hasOwnProperty("pkh")&&e.hasOwnProperty("secret"))return c(e);if(e.hasOwnProperty("kind")){const t=e;if("reveal"===t.kind)return h(e);if("transaction"===t.kind)return b(e);if("origination"===t.kind)return g(e);if("delegation"===t.kind)return $(e)}if(e.hasOwnProperty("vote"))return p(e);throw new Error("Unsupported message type")},t.encodeActivation=c,t.parseBallot=l,t.encodeBallot=p,t.parseReveal=f,t.encodeReveal=h,t.parseTransaction=d,t.encodeTransaction=b,t.parseOrigination=m,t.encodeOrigination=g,t.parseDelegation=y,t.encodeDelegation=$,t.parseOperationGroup=function(e){let t=[],r=u(e,a(e));t.push(r.operation);let n=0;for(;r.next;)n+=r.nextoffset,r=u(e.substring(n),r.next,!1),t.push(r.operation);return t}}(t.TezosMessageCodec||(t.TezosMessageCodec={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(24),i=r(3),a=r(9),u=o(r(12)).default.log;class c{constructor(e,t,r,n){this.triggerTimestamp=0,this.server=e,this.keyStore=r,this.signer=t,this.delay=n,this.operations=[]}static createQueue(e,t,r,n=s.TezosConstants.DefaultBatchDelay){return new c(e,t,r,n)}addOperations(...e){0===this.operations.length&&(this.triggerTimestamp=Date.now(),setTimeout(()=>{this.sendOperations()},1e3*this.delay)),e.forEach(e=>this.operations.push(e))}getStatus(){return this.operations.length}sendOperations(){return n(this,void 0,void 0,(function*(){let e=(yield i.TezosNodeReader.getCounterForAccount(this.server,this.keyStore.publicKeyHash))+1,t=[];const r=this.operations.length;for(let n=0;n0&&(this.triggerTimestamp=Date.now(),setTimeout(()=>{this.sendOperations()},1e3*this.delay));try{yield a.TezosNodeWriter.sendOperation(this.server,t,this.signer)}catch(e){u.error(`Error sending queued operations: ${e}`)}}))}}t.TezosOperationQueue=c},function(e,t,r){"use strict";(function(e){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=o(r(5)),i=r(8),a=r(4),u=r(3),c=r(9),l=o(r(7)),p=r(24);!function(t){function r(e,t,r,n,o,s,i){let a=`[ { "prim": "DROP" },\n { "prim": "NIL", "args": [ { "prim": "operation" } ] },\n { "prim": "PUSH", "args": [ { "prim": "key_hash" }, { "string": "${i}" } ] },\n { "prim": "IMPLICIT_ACCOUNT" },\n { "prim": "PUSH", "args": [ { "prim": "mutez" }, { "int": "${s}" } ] },\n { "prim": "UNIT" },\n { "prim": "TRANSFER_TOKENS" },\n { "prim": "CONS" } ]`;return c.TezosNodeWriter.sendContractInvocationOperation(e,t,r,n,0,o,p.TezosConstants.P005ManagerContractWithdrawalStorageLimit,p.TezosConstants.P005ManagerContractWithdrawalGasLimit,"do",a,l.TezosParameterFormat.Micheline)}t.verifyDestination=function(t,r){return n(this,void 0,void 0,(function*(){const n=yield u.TezosNodeReader.getAccountForBlock(t,"head",r);if(!n.script)throw new Error(`No code found at ${r}`);const o=e.from(s.blake2s(JSON.stringify(n.script.code),null,16)).toString("hex");if("d99cb8b4c7e40166f59c0f3c30724225"!==o)throw new Error(`Contract does not match the expected code hash: ${o}, 'd99cb8b4c7e40166f59c0f3c30724225'`);return!0}))},t.verifyScript=function(t){const r=e.from(s.blake2s(a.TezosLanguageUtil.preProcessMichelsonScript(t).join("\n"),null,16)).toString("hex");if("a585489ffaee60d07077059539d5bfc8"!==r)throw new Error(`Contract does not match the expected code hash: ${r}, 'a585489ffaee60d07077059539d5bfc8'`);return!0},t.getSimpleStorage=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield u.TezosNodeReader.getContractStorage(e,t);return{administrator:i.JSONPath({path:"$.string",json:r})[0]}}))},t.setDelegate=function(e,t,r,n,o,s){if(n.startsWith("KT1")){const i=`[{ "prim": "DROP" }, { "prim": "NIL", "args": [{ "prim": "operation" }] }, { "prim": "PUSH", "args": [{ "prim": "key_hash" }, { "string": "${o}" } ] }, { "prim": "SOME" }, { "prim": "SET_DELEGATE" }, { "prim": "CONS" } ]`;return c.TezosNodeWriter.sendContractInvocationOperation(e,t,r,n,0,s,0,p.TezosConstants.P005ManagerContractWithdrawalGasLimit,"do",i,l.TezosParameterFormat.Micheline)}return c.TezosNodeWriter.sendDelegationOperation(e,t,r,o,s)},t.unSetDelegate=function(e,t,r,n,o){if(n.startsWith("KT1")){const s='[{ "prim": "DROP" }, { "prim": "NIL", "args": [{ "prim": "operation" }] }, { "prim": "NONE", "args": [{ "prim": "key_hash" }] }, { "prim": "SET_DELEGATE" }, { "prim": "CONS" } ]';return c.TezosNodeWriter.sendContractInvocationOperation(e,t,r,n,0,o,0,p.TezosConstants.P005ManagerContractWithdrawalGasLimit,"do",s,l.TezosParameterFormat.Micheline)}return c.TezosNodeWriter.sendUndelegationOperation(e,t,r,o)},t.withdrawDelegatedFunds=function(e,t,n,o,s,i){return r(e,t,n,o,s,i,n.publicKeyHash)},t.sendDelegatedFunds=r,t.depositDelegatedFunds=function(e,t,r,n,o,s){return c.TezosNodeWriter.sendContractInvocationOperation(e,t,r,n,s,o,0,p.TezosConstants.P005ManagerContractDepositGasLimit,void 0,void 0)},t.deployManagerContract=function(e,t,r,n,o,s){const i=`{ "string": "${r.publicKeyHash}" }`;return c.TezosNodeWriter.sendContractOriginationOperation(e,t,r,s,n,o,600,2e4,'[ { "prim": "parameter",\n "args":\n [ { "prim": "or",\n "args":\n [ { "prim": "lambda",\n "args":\n [ { "prim": "unit" }, { "prim": "list", "args": [ { "prim": "operation" } ] } ], "annots": [ "%do" ] },\n { "prim": "unit", "annots": [ "%default" ] } ] } ] },\n { "prim": "storage", "args": [ { "prim": "key_hash" } ] },\n { "prim": "code",\n "args":\n [ [ [ [ { "prim": "DUP" }, { "prim": "CAR" },\n { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ],\n { "prim": "IF_LEFT",\n "args":\n [ [ { "prim": "PUSH", "args": [ { "prim": "mutez" }, { "int": "0" } ] },\n { "prim": "AMOUNT" },\n [ [ { "prim": "COMPARE" }, { "prim": "EQ" } ],\n { "prim": "IF", "args": [ [], [ [ { "prim": "UNIT" }, { "prim": "FAILWITH" } ] ] ] } ],\n [ { "prim": "DIP", "args": [ [ { "prim": "DUP" } ] ] },\n { "prim": "SWAP" } ],\n { "prim": "IMPLICIT_ACCOUNT" },\n { "prim": "ADDRESS" },\n { "prim": "SENDER" },\n [ [ { "prim": "COMPARE" }, { "prim": "EQ" } ],\n { "prim": "IF", "args": [ [], [ [ { "prim": "UNIT" },{ "prim": "FAILWITH" } ] ] ] } ],\n { "prim": "UNIT" }, { "prim": "EXEC" },\n { "prim": "PAIR" } ],\n [ { "prim": "DROP" },\n { "prim": "NIL", "args": [ { "prim": "operation" } ] },\n { "prim": "PAIR" } ] ] } ] ] } ]',i,l.TezosParameterFormat.Micheline)}}(t.BabylonDelegationHelper||(t.BabylonDelegationHelper={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";(function(e){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=o(r(5)),i=r(8),a=r(6),u=r(3),c=r(9),l=o(r(7));!function(t){function r(e){return e.replace(/\"/g,"").replace(/\n/,"")}t.verifyDestination=function(t,r){return n(this,void 0,void 0,(function*(){const n=yield u.TezosNodeReader.getAccountForBlock(t,"head",r);if(!n.script)throw new Error(`No code found at ${r}`);const o=e.from(s.blake2s(n.script.toString(),null,16)).toString("hex");if("c020219e31ee3b462ed93c33124f117f"!==o)throw new Error(`Contract at ${r} does not match the expected code hash: ${o}, 'c020219e31ee3b462ed93c33124f117f'`);return!0}))},t.registerName=function(e,t,o,s,i,a,u,p,f,h,d){return n(this,void 0,void 0,(function*(){const n=`(Pair ${u} (Pair "${i}" "${a}"))`;if(!h||!d){const t=yield c.TezosNodeWriter.testContractInvocationOperation(e,"main",o,s,p,f,6e3,5e5,"registerName",n,l.TezosParameterFormat.Michelson);h||(h=Number(t.storageCost)||0),d||(d=Number(t.gas)+300)}return r((yield c.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,p,f,6e3,3e5,"registerName",n,l.TezosParameterFormat.Michelson)).operationGroupID)}))},t.transferNameOwnership=function(e,t,o,s,i,a,u,p,f){return n(this,void 0,void 0,(function*(){const n=`(Pair "${i}" "${a}")`;if(!p||!f){const t=yield c.TezosNodeWriter.testContractInvocationOperation(e,"main",o,s,0,u,1e3,1e5,"transferNameOwnership",n,l.TezosParameterFormat.Michelson);p||(p=Number(t.storageCost)||0),f||(f=Number(t.gas)+300)}return r((yield c.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,u,p,f,"transferNameOwnership",n,l.TezosParameterFormat.Michelson)).operationGroupID)}))},t.updateResolver=function(e,t,o,s,i,a,u,p,f){return n(this,void 0,void 0,(function*(){const n=`(Pair "${i}" "${a}")`;if(!p||!f){const t=yield c.TezosNodeWriter.testContractInvocationOperation(e,"main",o,s,0,u,1e3,1e5,"updateResolver",n,l.TezosParameterFormat.Michelson);p||(p=Number(t.storageCost)||0),f||(f=Number(t.gas)+300)}return r((yield c.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,u,p,f,"updateResolver",n,l.TezosParameterFormat.Michelson)).operationGroupID)}))},t.updateRegistrationPeriod=function(e,t,o,s,i,a,u,p,f,h){return n(this,void 0,void 0,(function*(){const n=`(Pair "${i}" ${a})`;if(!f||!h){const t=yield c.TezosNodeWriter.testContractInvocationOperation(e,"main",o,s,u,p,1e3,1e5,"updateRegistrationPeriod",n,l.TezosParameterFormat.Michelson);f||(f=Number(t.storageCost)||0),h||(h=Number(t.gas)+300)}return r((yield c.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,u,p,f,h,"updateRegistrationPeriod",n,l.TezosParameterFormat.Michelson)).operationGroupID)}))},t.deleteName=function(e,t,o,s,i,a,u,p){return n(this,void 0,void 0,(function*(){const n=`"${i}"`;if(!u||!p){const t=yield c.TezosNodeWriter.testContractInvocationOperation(e,"main",o,s,0,a,1e3,1e5,"deleteName",n,l.TezosParameterFormat.Michelson);u||(u=Number(t.storageCost)||0),p||(p=Number(t.gas)+300)}return r((yield c.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,a,u,p,"deleteName",n,l.TezosParameterFormat.Michelson)).operationGroupID)}))},t.getNameForAddress=function(t,r,o){return n(this,void 0,void 0,(function*(){const n=a.TezosMessageUtils.encodeBigMapKey(e.from(a.TezosMessageUtils.writePackedData(o,"address"),"hex")),s=yield u.TezosNodeReader.getValueForBigMapKey(t,r,n);return i.JSONPath({path:"$.string",json:s})[0]}))},t.getNameInfo=function(t,r,o){return n(this,void 0,void 0,(function*(){const n=a.TezosMessageUtils.encodeBigMapKey(e.from(a.TezosMessageUtils.writePackedData(o,"string"),"hex")),s=yield u.TezosNodeReader.getValueForBigMapKey(t,r,n);return{name:o,owner:i.JSONPath({path:"$.args[0].args[1].args[1].string",json:s})[0],resolver:i.JSONPath({path:"$.args[1].args[1].args[1].string",json:s})[0],registeredAt:new Date(i.JSONPath({path:"$.args[1].args[0].string",json:s})[0]),registrationPeriod:i.JSONPath({path:"$.args[1].args[1].args[0].int",json:s})[0],modified:Boolean(i.JSONPath({path:"$.args[0].args[0].prim",json:s})[0])}}))},t.getSimpleStorage=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield u.TezosNodeReader.getContractStorage(e,t);return{addressMap:Number(i.JSONPath({path:"$.args[0].args[0].int",json:r})[0]),nameMap:Number(i.JSONPath({path:"$.args[1].args[1].args[0].int",json:r})[0]),manager:i.JSONPath({path:"$.args[0].args[1].args[0].string",json:r})[0],interval:Number(i.JSONPath({path:"$.args[0].args[1].args[1].int",json:r})[0]),maxDuration:Number(i.JSONPath({path:"$.args[1].args[0].int",json:r})[0]),intervalFee:Number(i.JSONPath({path:"$.args[1].args[1].args[1].int",json:r})[0])}}))}}(t.CryptonomicNameServiceHelper||(t.CryptonomicNameServiceHelper={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";(function(e){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=o(r(5)),i=r(8),a=r(6),u=r(3);!function(t){t.verifyDestination=function(t,r){return n(this,void 0,void 0,(function*(){const n=yield u.TezosNodeReader.getAccountForBlock(t,"head",r);if(!n.script)throw new Error(`No code found at ${r}`);if("1234"!==e.from(s.blake2s(n.script.toString(),null,16)).toString("hex"))throw new Error(`Contract at ${r} does not match the expected code hash`);return!0}))},t.getBasicStorage=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield u.TezosNodeReader.getContractStorage(e,t);return console.log("-----"),console.log(r),console.log("-----"),{mapid:Number(i.JSONPath({path:"$.args[0].int",json:r})[0]),totalSupply:Number(i.JSONPath({path:"$.args[1].int",json:r})[0])}}))},t.getAddressRecord=function(t,r,o){return n(this,void 0,void 0,(function*(){const n=a.TezosMessageUtils.encodeBigMapKey(e.from(a.TezosMessageUtils.writePackedData(o,"address"),"hex")),s=yield u.TezosNodeReader.getValueForBigMapKey(t,r,n);if(s)return{allowances:i.JSONPath({path:"$.args[0]",json:s})[0],balance:Number(i.JSONPath({path:"$.args[1].int",json:s})[0])}}))},t.deployContract=function(e,t,r){return n(this,void 0,void 0,(function*(){}))}}(t.DexterTokenHelper||(t.DexterTokenHelper={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";(function(e){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=o(r(5)),i=r(8),a=r(4),u=r(3),c=r(9),l=o(r(7));!function(t){t.verifyDestination=function(t,r){return n(this,void 0,void 0,(function*(){const n=yield u.TezosNodeReader.getAccountForBlock(t,"head",r);if(!n.script)throw new Error(`No code found at ${r}`);const o=e.from(s.blake2s(JSON.stringify(n.script.code),null,16)).toString("hex");if("914629850cfdad7b54a8c5a661d10bd0"!==o)throw new Error(`Contract does not match the expected code hash: ${o}, '914629850cfdad7b54a8c5a661d10bd0'`);return!0}))},t.verifyScript=function(t){const r=e.from(s.blake2s(a.TezosLanguageUtil.preProcessMichelsonScript(t).join("\n"),null,16)).toString("hex");if("ffcad1e376a6c8915780fe6676aceec6"!==r)throw new Error(`Contract does not match the expected code hash: ${r}, 'ffcad1e376a6c8915780fe6676aceec6'`);return!0},t.getSimpleStorage=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield u.TezosNodeReader.getContractStorage(e,t);return{counter:Number(i.JSONPath({path:"$.args[0].int",json:r})[0]),threshold:Number(i.JSONPath({path:"$.args[1].args[0].int",json:r})[0]),keys:i.JSONPath({path:"$.args[1].args[1]..string",json:r})}}))},t.deployContract=function(e,t,r,o,s,i,a,u,p){return n(this,void 0,void 0,(function*(){if(u>p.length)throw new Error("Number of keys provided is lower than the threshold");const n=`(Pair ${a} (Pair ${u} { "${p.join('" ; "')}" } ) )`,f=yield c.TezosNodeWriter.sendContractOriginationOperation(e,t,r,i,o,s,5e3,12e4,"parameter (pair (pair :payload (nat %counter) (or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))))) (list %sigs (option signature)));\n storage (pair (nat %stored_counter) (pair (nat %threshold) (list %keys key)));\n code\n {\n UNPAIR ; SWAP ; DUP ; DIP { SWAP } ;\n DIP\n {\n UNPAIR ;\n DUP ; SELF ; ADDRESS ; CHAIN_ID ; PAIR ; PAIR ;\n PACK ;\n DIP { UNPAIR @counter ; DIP { SWAP } } ; SWAP\n } ;\n UNPAIR @stored_counter; DIP { SWAP };\n ASSERT_CMPEQ ;\n DIP { SWAP } ; UNPAIR @threshold @keys;\n DIP\n {\n PUSH @valid nat 0; SWAP ;\n ITER\n {\n DIP { SWAP } ; SWAP ;\n IF_CONS\n {\n IF_SOME\n { SWAP ;\n DIP\n {\n SWAP ; DIIP { DUUP } ;\n CHECK_SIGNATURE ; ASSERT ;\n PUSH nat 1 ; ADD @valid } }\n { SWAP ; DROP }\n }\n {\n FAIL\n } ;\n SWAP\n }\n } ;\n ASSERT_CMPLE ;\n DROP ; DROP ;\n DIP { UNPAIR ; PUSH nat 1 ; ADD @new_counter ; PAIR} ;\n NIL operation ; SWAP ;\n IF_LEFT\n {\n UNPAIR ; UNIT ; TRANSFER_TOKENS ; CONS }\n { IF_LEFT {\n SET_DELEGATE ; CONS }\n {\n DIP { SWAP ; CAR } ; SWAP ; PAIR ; SWAP }} ;\n PAIR }",n,l.TezosParameterFormat.Michelson);return f.operationGroupID.replace(/\"/g,"").replace(/\n/,"")}))}}(t.MurbardMultisigHelper||(t.MurbardMultisigHelper={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";(function(e){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=o(r(5)),i=r(8),a=r(4),u=r(6),c=r(3),l=r(9),p=o(r(7));!function(t){t.verifyDestination=function(t,r){return n(this,void 0,void 0,(function*(){const n=yield c.TezosNodeReader.getAccountForBlock(t,"head",r);if(!n.script)throw new Error(`No code found at ${r}`);const o=e.from(s.blake2s(JSON.stringify(n.script.code),null,16)).toString("hex");if("0e3e137841a959521324b4ce20ca2df7"!==o)throw new Error(`Contract does not match the expected code hash: ${o}, '0e3e137841a959521324b4ce20ca2df7'`);return!0}))},t.verifyScript=function(t){const r=e.from(s.blake2s(a.TezosLanguageUtil.preProcessMichelsonScript(t).join("\n"),null,16)).toString("hex");if("b77ada691b1d630622bea243696c84d7"!==r)throw new Error(`Contract does not match the expected code hash: ${r}, 'b77ada691b1d630622bea243696c84d7'`);return!0},t.getAccountBalance=function(t,r,o){return n(this,void 0,void 0,(function*(){const n=u.TezosMessageUtils.encodeBigMapKey(e.from(u.TezosMessageUtils.writePackedData(o,"address"),"hex")),s=yield c.TezosNodeReader.getValueForBigMapKey(t,r,n);if(void 0===s)throw new Error(`Map ${r} does not contain a record for ${o}`);return Number(i.JSONPath({path:"$.int",json:s})[0])}))},t.getSimpleStorage=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield c.TezosNodeReader.getContractStorage(e,t);return{mapid:Number(i.JSONPath({path:"$.args[1].args[1].args[0].int",json:r})[0]),council:i.JSONPath({path:"$.args[0].args[0].args[1]..string",json:r}),stage:Number(i.JSONPath({path:"$.args[1].args[0].args[0].int",json:r})[0]),phase:Number(i.JSONPath({path:"$.args[1].args[0].args[0].int",json:r})[0])%4,supply:Number(i.JSONPath({path:"$.args[1].args[0].args[1].int",json:r})[0]),paused:i.JSONPath({path:"$.args[1].args[1].args[1].args[0].prim",json:r})[0].toString().toLowerCase().startsWith("t")}}))},t.transferBalance=function(e,t,r,o,s,i,a,u,c,f){return n(this,void 0,void 0,(function*(){const n=`(Right (Left (Left (Right (Pair "${i}" (Pair "${a}" ${u}))))))`,h=yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,r,o,0,s,f,c,"",n,p.TezosParameterFormat.Michelson);return h.operationGroupID.replace(/\"/g,"").replace(/\n/,"")}))}}(t.StakerDAOTokenHelper||(t.StakerDAOTokenHelper={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";(function(e){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=o(r(5)),i=r(8),a=r(6),u=r(3);!function(t){t.verifyDestination=function(t,r){return n(this,void 0,void 0,(function*(){const n=yield u.TezosNodeReader.getAccountForBlock(t,"head",r);if(!n.script)throw new Error(`No code found at ${r}`);if("1527ddf08bdf582dce0b28c051044897"!==e.from(s.blake2s(n.script.toString(),null,16)).toString("hex"))throw new Error(`Contract at ${r} does not match the expected code hash`);return!0}))},t.getSimpleStorage=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield u.TezosNodeReader.getContractStorage(e,t);return{mapid:parseInt(i.JSONPath({path:"$.args[0].int",json:r})[0]),owner:i.JSONPath({path:"$.args[1].args[0].string",json:r})[0],signupFee:parseInt(i.JSONPath({path:"$.args[1].args[1].args[0].int",json:r})[0]),updateFee:parseInt(i.JSONPath({path:"$.args[1].args[1].args[1].int",json:r})[0])}}))},t.updateRegistration=function(e,t,r,o,s,i,a){return n(this,void 0,void 0,(function*(){}))},t.queryRegistration=function(t,r,o){return n(this,void 0,void 0,(function*(){const n=a.TezosMessageUtils.encodeBigMapKey(e.from(a.TezosMessageUtils.writePackedData(o,"key_hash"),"hex")),s=yield u.TezosNodeReader.getValueForBigMapKey(t,r,n);if(!s)return;const c=new TextDecoder,l=Number(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[1].args[1].args[0].args[1].int",json:s})[0]);return{name:c.decode(e.from(i.JSONPath({path:"$.args[0].args[0].args[0].args[0].args[0].args[0].bytes",json:s})[0],"hex")),isAcceptingDelegation:Boolean(i.JSONPath({path:"$.args[0].args[0].args[0].args[0].args[0].args[1].prim",json:s})[0]),externalDataURL:c.decode(e.from(i.JSONPath({path:"$.args[0].args[0].args[0].args[0].args[1].bytes",json:s})[0],"hex")),split:Number(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[0].args[0].int",json:s})[0])/1e4,paymentAccounts:i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[0].args[1]..string",json:s}),minimumDelegation:Number(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[1].args[0].args[0].args[0].int",json:s})[0]),isGreedy:Boolean(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[1].args[0].args[0].args[1].prim",json:s})[0]),payoutDelay:Number(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[1].args[0].args[1].args[0].int",json:s})[0]),payoutFrequency:Number(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[1].args[0].args[1].args[1].args[0].int",json:s})[0]),minimumPayout:Number(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[1].args[0].args[1].args[1].args[1].int",json:s})[0]),isCheap:Boolean(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[1].args[1].args[0].args[0].prim",json:s})[0]),paymentConfig:{payForOwnBlocks:Boolean(1&l),payForEndorsements:Boolean(2&l),payGainedFees:Boolean(4&l),payForAccusationGains:Boolean(8&l),subtractLostDepositsWhenAccused:Boolean(16&l),subtractLostRewardsWhenAccused:Boolean(32&l),subtractLostFeesWhenAccused:Boolean(64&l),payForRevelation:Boolean(128&l),subtractLostRewardsWhenMissRevelation:Boolean(256&l),subtractLostFeesWhenMissRevelation:Boolean(512&l),compensateMissedBlocks:!Boolean(1024&l),payForStolenBlocks:Boolean(2048&l),compensateMissedEndorsements:!Boolean(4096&l),compensateLowPriorityEndorsementLoss:!Boolean(8192&l)},overdelegationThreshold:Number(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[1].args[1].args[1].args[0].int",json:s})[0]),subtractRewardsFromUninvitedDelegation:Boolean(i.JSONPath({path:"$.args[0].args[0].args[0].args[1].args[1].args[1].args[1].args[1].prim",json:s})[0]),recordManager:i.JSONPath({path:"$.args[0].args[1].args[0].string",json:s})[0],timestamp:new Date(i.JSONPath({path:"$.args[1].string",json:s})[0])}}))}}(t.TCFBakerRegistryHelper||(t.TCFBakerRegistryHelper={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";(function(e){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=o(r(5)),i=r(8),a=r(4),u=r(6),c=r(3),l=r(9),p=o(r(7));!function(t){function r(e){return e.replace(/\"/g,"").replace(/\n/,"")}t.verifyDestination=function(t,r){return n(this,void 0,void 0,(function*(){const n=yield c.TezosNodeReader.getAccountForBlock(t,"head",r);if(!n.script)throw new Error(`No code found at ${r}`);const o=e.from(s.blake2s(JSON.stringify(n.script.code),null,16)).toString("hex");if("0e3e137841a959521324b4ce20ca2df7"!==o)throw new Error(`Contract does not match the expected code hash: ${o}, '0e3e137841a959521324b4ce20ca2df7'`);return!0}))},t.verifyScript=function(t){const r=e.from(s.blake2s(a.TezosLanguageUtil.preProcessMichelsonScript(t).join("\n"),null,16)).toString("hex");if("b77ada691b1d630622bea243696c84d7"!==r)throw new Error(`Contract does not match the expected code hash: ${r}, 'b77ada691b1d630622bea243696c84d7'`);return!0},t.deployContract=function(e,t,o,s,i,a=!0,u=0,c=15e4,f=5e3){return n(this,void 0,void 0,(function*(){const n=`Pair {} (Pair "${i}" (Pair ${a?"True":"False"} ${u}))`;return r((yield l.TezosNodeWriter.sendContractOriginationOperation(e,t,o,0,void 0,s,f,c,'parameter (or (or (or (pair %transfer (address :from) (pair (address :to) (nat :value))) (pair %approve (address :spender) (nat :value))) (or (pair %getAllowance (pair (address :owner) (address :spender)) (contract nat)) (or (pair %getBalance (address :owner) (contract nat)) (pair %getTotalSupply unit (contract nat))))) (or (or (bool %setPause) (address %setAdministrator)) (or (pair %getAdministrator unit (contract address)) (or (pair %mint (address :to) (nat :value)) (pair %burn (address :from) (nat :value))))));\n storage (pair (big_map %ledger (address :user) (pair (nat :balance) (map :approvals (address :spender) (nat :value)))) (pair (address %admin) (pair (bool %paused) (nat %totalSupply))));\n code { CAST (pair (or (or (or (pair address (pair address nat)) (pair address nat)) (or (pair (pair address address) (contract nat)) (or (pair address (contract nat)) (pair unit (contract nat))))) (or (or bool address) (or (pair unit (contract address)) (or (pair address nat) (pair address nat))))) (pair (big_map address (pair nat (map address nat))) (pair address (pair bool nat)))); DUP; CAR; DIP { CDR }; IF_LEFT { IF_LEFT { IF_LEFT { DIP { DUP; CDR; CDR; CAR; IF { UNIT; PUSH string "TokenOperationsArePaused"; PAIR; FAILWITH } { } }; DUP; DUP; CDR; CAR; DIP { CAR }; COMPARE; EQ; IF { DROP } { DUP; CAR; SENDER; COMPARE; EQ; IF { } { DUP; DIP { DUP; DIP { DIP { DUP }; CAR; SENDER; PAIR; DUP; DIP { CDR; DIP { CAR }; GET; IF_NONE { EMPTY_MAP (address) nat } { CDR } }; CAR; GET; IF_NONE { PUSH nat 0 } { } }; DUP; CAR; DIP { SENDER; DIP { DUP; CDR; CDR; DIP { DIP { DUP }; SWAP }; SWAP; SUB; ISNAT; IF_NONE { DIP { DUP }; SWAP; DIP { DUP }; SWAP; CDR; CDR; PAIR; PUSH string "NotEnoughAllowance"; PAIR; FAILWITH } { } }; PAIR }; PAIR; DIP { DROP; DROP }; DIP { DUP }; SWAP; DIP { DUP; CAR }; SWAP; DIP { CAR }; GET; IF_NONE { PUSH nat 0; DIP { EMPTY_MAP (address) nat }; PAIR; EMPTY_MAP (address) nat } { DUP; CDR }; DIP { DIP { DUP }; SWAP }; SWAP; CDR; CDR; DUP; INT; EQ; IF { DROP; NONE nat } { SOME }; DIP { DIP { DIP { DUP }; SWAP }; SWAP }; SWAP; CDR; CAR; UPDATE; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; CAR; DIP { SOME }; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR } }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; CDR; CAR; DIP { CAR }; GET; IF_NONE { DUP; CDR; CDR; INT; EQ; IF { NONE (pair nat (map address nat)) } { DUP; CDR; CDR; DIP { EMPTY_MAP (address) nat }; PAIR; SOME } } { DIP { DUP }; SWAP; CDR; CDR; DIP { DUP; CAR }; ADD; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; SOME }; SWAP; DUP; DIP { CDR; CAR; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR }; DUP; DIP { CDR; CDR; INT; DIP { DUP; CDR; CDR; CDR }; ADD; ISNAT; IF_NONE { PUSH string "Internal: Negative total supply"; FAILWITH } { }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; CAR; DIP { CAR }; GET; IF_NONE { CDR; CDR; PUSH nat 0; SWAP; PAIR; PUSH string "NotEnoughBalance"; PAIR; FAILWITH } { }; DUP; CAR; DIP { DIP { DUP }; SWAP }; SWAP; CDR; CDR; SWAP; SUB; ISNAT; IF_NONE { CAR; DIP { DUP }; SWAP; CDR; CDR; PAIR; PUSH string "NotEnoughBalance"; PAIR; FAILWITH } { }; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; DIP { DUP }; SWAP; DIP { DUP; CAR; INT; EQ; IF { DUP; CDR; SIZE; INT; EQ; IF { DROP; NONE (pair nat (map address nat)) } { SOME } } { SOME }; SWAP; CAR; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR }; DUP; DIP { CDR; CDR; NEG; DIP { DUP; CDR; CDR; CDR }; ADD; ISNAT; IF_NONE { PUSH string "Internal: Negative total supply"; FAILWITH } { }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR }; DROP }; NIL operation; PAIR } { SENDER; PAIR; DIP { DUP; CDR; CDR; CAR; IF { UNIT; PUSH string "TokenOperationsArePaused"; PAIR; FAILWITH } { } }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; DUP; DIP { CAR; DIP { CAR }; GET; IF_NONE { EMPTY_MAP (address) nat } { CDR } }; CDR; CAR; GET; IF_NONE { PUSH nat 0 } { }; DUP; INT; EQ; IF { DROP } { DIP { DUP }; SWAP; CDR; CDR; INT; EQ; IF { DROP } { PUSH string "UnsafeAllowanceChange"; PAIR; FAILWITH } }; DIP { DUP }; SWAP; DIP { DUP; CAR }; SWAP; DIP { CAR }; GET; IF_NONE { PUSH nat 0; DIP { EMPTY_MAP (address) nat }; PAIR; EMPTY_MAP (address) nat } { DUP; CDR }; DIP { DIP { DUP }; SWAP }; SWAP; CDR; CDR; DUP; INT; EQ; IF { DROP; NONE nat } { SOME }; DIP { DIP { DIP { DUP }; SWAP }; SWAP }; SWAP; CDR; CAR; UPDATE; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; CAR; DIP { SOME }; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; NIL operation; PAIR } } { IF_LEFT { DUP; CAR; DIP { CDR }; DIP { DIP { DUP }; SWAP }; PAIR; DUP; CAR; DIP { CDR }; DUP; DIP { CAR; DIP { CAR }; GET; IF_NONE { EMPTY_MAP (address) nat } { CDR } }; CDR; GET; IF_NONE { PUSH nat 0 } { }; DIP { AMOUNT }; TRANSFER_TOKENS; NIL operation; SWAP; CONS; PAIR } { IF_LEFT { DUP; CAR; DIP { CDR }; DIP { DIP { DUP }; SWAP }; PAIR; DUP; CAR; DIP { CDR }; DIP { CAR }; GET; IF_NONE { PUSH nat 0 } { CAR }; DIP { AMOUNT }; TRANSFER_TOKENS; NIL operation; SWAP; CONS; PAIR } { DUP; CAR; DIP { CDR }; DIP { DIP { DUP }; SWAP }; PAIR; CDR; CDR; CDR; CDR; DIP { AMOUNT }; TRANSFER_TOKENS; NIL operation; SWAP; CONS; PAIR } } } } { IF_LEFT { IF_LEFT { DIP { DUP; CDR; CAR; SENDER; COMPARE; EQ; IF { } { UNIT; PUSH string "SenderIsNotAdmin"; PAIR; FAILWITH } }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; NIL operation; PAIR } { DIP { DUP; CDR; CAR; SENDER; COMPARE; EQ; IF { } { UNIT; PUSH string "SenderIsNotAdmin"; PAIR; FAILWITH } }; DIP { DUP; CDR }; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; NIL operation; PAIR } } { IF_LEFT { DUP; CAR; DIP { CDR }; DIP { DIP { DUP }; SWAP }; PAIR; CDR; CDR; CAR; DIP { AMOUNT }; TRANSFER_TOKENS; NIL operation; SWAP; CONS; PAIR } { IF_LEFT { DIP { DUP; CDR; CAR; SENDER; COMPARE; EQ; IF { } { UNIT; PUSH string "SenderIsNotAdmin"; PAIR; FAILWITH } }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; CAR; DIP { CAR }; GET; IF_NONE { DUP; CDR; INT; EQ; IF { NONE (pair nat (map address nat)) } { DUP; CDR; DIP { EMPTY_MAP (address) nat }; PAIR; SOME } } { DIP { DUP }; SWAP; CDR; DIP { DUP; CAR }; ADD; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; SOME }; SWAP; DUP; DIP { CAR; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR }; DUP; DIP { CDR; INT; DIP { DUP; CDR; CDR; CDR }; ADD; ISNAT; IF_NONE { PUSH string "Internal: Negative total supply"; FAILWITH } { }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR }; DROP; NIL operation; PAIR } { DIP { DUP; CDR; CAR; SENDER; COMPARE; EQ; IF { } { UNIT; PUSH string "SenderIsNotAdmin"; PAIR; FAILWITH } }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; CAR; DIP { CAR }; GET; IF_NONE { CDR; PUSH nat 0; SWAP; PAIR; PUSH string "NotEnoughBalance"; PAIR; FAILWITH } { }; DUP; CAR; DIP { DIP { DUP }; SWAP }; SWAP; CDR; SWAP; SUB; ISNAT; IF_NONE { CAR; DIP { DUP }; SWAP; CDR; PAIR; PUSH string "NotEnoughBalance"; PAIR; FAILWITH } { }; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; DIP { DUP }; SWAP; DIP { DUP; CAR; INT; EQ; IF { DUP; CDR; SIZE; INT; EQ; IF { DROP; NONE (pair nat (map address nat)) } { SOME } } { SOME }; SWAP; CAR; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR }; DUP; DIP { CDR; NEG; DIP { DUP; CDR; CDR; CDR }; ADD; ISNAT; IF_NONE { PUSH string "Internal: Negative total supply"; FAILWITH } { }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR }; DROP; NIL operation; PAIR } } } } };',n,p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.getAccountBalance=function(t,r,o){return n(this,void 0,void 0,(function*(){const n=u.TezosMessageUtils.encodeBigMapKey(e.from(u.TezosMessageUtils.writePackedData(o,"address"),"hex")),s=yield c.TezosNodeReader.getValueForBigMapKey(t,r,n);if(void 0===s)throw new Error(`Map ${r} does not contain a record for ${o}`);const a=i.JSONPath({path:"$.args[0].int",json:s});return Number(a[0])}))},t.getAccountAllowance=function(t,r,o,s){return n(this,void 0,void 0,(function*(){const n=u.TezosMessageUtils.encodeBigMapKey(e.from(u.TezosMessageUtils.writePackedData(s,"address"),"hex")),a=yield c.TezosNodeReader.getValueForBigMapKey(t,r,n);if(void 0===a)throw new Error(`Map ${r} does not contain a record for ${s}/${o}`);let l=new Map;return i.JSONPath({path:"$.args[1][*].args",json:a}).forEach(e=>l[e[0].string]=Number(e[1].int)),l[o]}))},t.getSimpleStorage=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield c.TezosNodeReader.getContractStorage(e,t);return{mapid:Number(i.JSONPath({path:"$.args[0].int",json:r})[0]),supply:Number(i.JSONPath({path:"$.args[1].args[1].args[1].int",json:r})[0]),administrator:i.JSONPath({path:"$.args[1].args[0].string",json:r})[0],paused:i.JSONPath({path:"$.args[1].args[1].args[0].prim",json:r})[0].toString().toLowerCase().startsWith("t")}}))},t.getTokenSupply=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield c.TezosNodeReader.getContractStorage(e,t);return Number(i.JSONPath({path:"$.args[1].args[1].args[1].int",json:r})[0])}))},t.getAdministrator=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield c.TezosNodeReader.getContractStorage(e,t);return i.JSONPath({path:"$.args[1].args[0].string",json:r})[0]}))},t.getPaused=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield c.TezosNodeReader.getContractStorage(e,t);return i.JSONPath({path:"$.args[1].args[1].args[0].prim",json:r})[0].toString().toLowerCase().startsWith("t")}))},t.transferBalance=function(e,t,o,s,i,a,u,c,f,h){return n(this,void 0,void 0,(function*(){const n=`(Left (Left (Left (Pair "${a}" (Pair "${u}" ${c})))))`;return r((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,i,h,f,"",n,p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.approveBalance=function(e,t,o,s,i,a,u,c,f){return n(this,void 0,void 0,(function*(){const n=`(Left (Left (Right (Pair "${a}" ${u}))))`;return r((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,i,f,c,"",n,p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.activateLedger=function(e,t,o,s,i,a,u){return n(this,void 0,void 0,(function*(){return r((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,i,u,a,"","(Right (Left (Left False)))",p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.deactivateLedger=function(e,t,o,s,i,a,u){return n(this,void 0,void 0,(function*(){return r((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,i,u,a,"","(Right (Left (Left True)))",p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.setAdministrator=function(e,t,o,s,i,a,u,c){return n(this,void 0,void 0,(function*(){const n=`(Right (Left (Right "${i}")))`;return r((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,a,c,u,"",n,p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.mint=function(e,t,o,s,i,a,u,c=15e4,f=5e3){return n(this,void 0,void 0,(function*(){const n=`(Right (Right (Right (Left (Pair "${a}" ${u})))))`;return r((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,i,f,c,"",n,p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.burn=function(e,t,o,s,i,a,u,c,f){return n(this,void 0,void 0,(function*(){const n=`(Right (Right (Right (Right (Pair "${a}" ${u})))))`;return r((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,o,s,0,i,f,c,"",n,p.TezosParameterFormat.Michelson)).operationGroupID)}))}}(t.Tzip7ReferenceTokenHelper||(t.Tzip7ReferenceTokenHelper={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";(function(e){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=o(r(5)),i=r(4),a=r(3),u=r(9),c=o(r(7));!function(t){t.verifyDestination=function(t,r){return n(this,void 0,void 0,(function*(){const n=yield a.TezosNodeReader.getAccountForBlock(t,"head",r);if(!n.script)throw new Error(`No code found at ${r}`);const o=e.from(s.blake2s(JSON.stringify(n.script.code),null,16)).toString("hex");if("0e3e137841a959521324b4ce20ca2df7"!==o)throw new Error(`Contract does not match the expected code hash: ${o}, '0e3e137841a959521324b4ce20ca2df7'`);return!0}))},t.verifyScript=function(t){const r=e.from(s.blake2s(i.TezosLanguageUtil.preProcessMichelsonScript(t).join("\n"),null,16)).toString("hex");if("b77ada691b1d630622bea243696c84d7"!==r)throw new Error(`Contract does not match the expected code hash: ${r}, 'b77ada691b1d630622bea243696c84d7'`);return!0},t.deployContract=function(e,t,r,o,s,i,a,l,p,f=!0,h=0,d=4e5,b=8e3){return n(this,void 0,void 0,(function*(){const n=`(Pair (Pair "${s}" ${f?"True":"False"}) (Pair (Pair (Pair { } (Pair (Pair (Pair ${p} { }) (Pair "${i}" "${a}")) ${l})) (Pair { } (Pair (Pair None (Right Unit)) (Pair (Right Unit) (Right Unit))))) ${h}))`,m=yield u.TezosNodeWriter.sendContractOriginationOperation(e,t,r,0,void 0,o,b,d,'{ parameter (or (or (or %admin (bool %pause) (address %set_admin)) (or %assets (or (or (pair %balance_of (contract %callback (list (pair (nat %balance) (pair %request (address %owner) (nat %token_id))))) (list %requests (pair (address %owner) (nat %token_id)))) (pair %is_operator (contract %callback (pair (bool %is_operator) (pair %operator (pair (address %operator) (address %owner)) (or %tokens (unit %all_tokens) (set %some_tokens nat))))) (pair %operator (pair (address %operator) (address %owner)) (or %tokens (unit %all_tokens) (set %some_tokens nat))))) (or (contract %permissions_descriptor (pair (pair (option %custom (pair (option %config_api address) (string %tag))) (or %operator (or (unit %no_transfer) (unit %owner_or_operator_transfer)) (unit %owner_transfer))) (pair (or %receiver (or (unit %optional_owner_hook) (unit %owner_no_op)) (unit %required_owner_hook)) (or %sender (or (unit %optional_owner_hook) (unit %owner_no_op)) (unit %required_owner_hook))))) (pair %token_metadata (contract %callback (list (pair (pair (pair (nat %decimals) (map %extras string string)) (pair (string %name) (string %symbol))) (nat %token_id)))) (list %token_ids nat)))) (or (or (pair %total_supply (contract %callback (list (pair (nat %token_id) (nat %total_supply)))) (list %token_ids nat)) (list %transfer (pair (pair (nat %amount) (address %from_)) (pair (address %to_) (nat %token_id))))) (list %update_operators (or (pair %add_operator (pair (address %operator) (address %owner)) (or %tokens (unit %all_tokens) (set %some_tokens nat))) (pair %remove_operator (pair (address %operator) (address %owner)) (or %tokens (unit %all_tokens) (set %some_tokens nat)))))))) (or %tokens (list %burn_tokens (pair (nat %amount) (address %owner))) (list %mint_tokens (pair (nat %amount) (address %owner))))) ;\n storage (pair (pair %admin (address %admin) (bool %paused)) (pair %assets (pair (pair (big_map %ledger address nat) (pair %metadata (pair (pair (nat %decimals) (map %extras string string)) (pair (string %name) (string %symbol))) (nat %token_id))) (pair (big_map %operators (pair address address) bool) (pair %permissions_descriptor (pair (option %custom (pair (option %config_api address) (string %tag))) (or %operator (or (unit %no_transfer) (unit %owner_or_operator_transfer)) (unit %owner_transfer))) (pair (or %receiver (or (unit %optional_owner_hook) (unit %owner_no_op)) (unit %required_owner_hook)) (or %sender (or (unit %optional_owner_hook) (unit %owner_no_op)) (unit %required_owner_hook)))))) (nat %total_supply))) ;\n code { LAMBDA (pair address (big_map address nat)) nat { DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH nat 0 } { DUP ; DIP { DROP } } ; DIP { DROP } } ; DUP ; LAMBDA (pair (lambda (pair address (big_map address nat)) nat) (pair (list (pair (pair (nat %amount) (option %from_ address)) (pair (option %to_ address) (nat %token_id)))) (big_map address nat))) (big_map address nat) { DUP ; CAR ; SWAP ; CDR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; ITER { SWAP ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DUP ; CAR ; CDR ; IF_NONE { DIG 1 ; DUP ; DUG 2 } { DIG 2 ; DUP ; DUG 3 ; DIG 2 ; DUP ; DUG 3 ; CAR ; CAR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DUP ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DUP ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DIG 9 ; DUP ; DUG 10 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; CAR ; CDR ; DIG 1 ; DUP ; DUG 2 ; SUB ; ISNAT ; IF_NONE { PUSH string "INSUFFICIENT_BALANCE" ; FAILWITH } { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; COMPARE ; EQ ; IF { DIG 2 ; DUP ; DUG 3 ; DIG 4 ; DUP ; DUG 5 ; NONE nat ; SWAP ; UPDATE } { DIG 2 ; DUP ; DUG 3 ; DIG 1 ; DUP ; DUG 2 ; SOME ; DIG 5 ; DUP ; DUG 6 ; UPDATE } ; DIP { DROP } } ; DIP { DROP 5 } } ; DIG 1 ; DUP ; DUG 2 ; CDR ; CAR ; IF_NONE { DUP } { DIG 1 ; DUP ; DUG 2 ; DIG 3 ; DUP ; DUG 4 ; CAR ; CAR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DUP ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DUP ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DIG 10 ; DUP ; DUG 11 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; CAR ; CDR ; DIG 1 ; DUP ; DUG 2 ; ADD ; DIG 2 ; DUP ; DUG 3 ; DIG 1 ; DUP ; DUG 2 ; SOME ; DIG 5 ; DUP ; DUG 6 ; UPDATE ; DIP { DROP 6 } } ; DUP ; DIP { DROP 5 } } ; DIP { DROP 2 } } ; SWAP ; APPLY ; LAMBDA (or (unit %all_tokens) (set %some_tokens nat)) unit { DUP ; IF_LEFT { DROP ; UNIT } { PUSH nat 1 ; DIG 1 ; DUP ; DUG 2 ; SIZE ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } { DUP ; PUSH nat 0 ; MEM ; IF { UNIT } { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } } ; DIP { DROP } } ; DIP { DROP } } ; LAMBDA (list nat) unit { DUP ; IF_CONS { PUSH nat 0 ; DIG 2 ; DUP ; DUG 3 ; SIZE ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; COMPARE ; EQ ; IF { UNIT } { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } } ; DIP { DROP 2 } } { PUSH string "NO_TOKEN_ID" ; FAILWITH } ; DIP { DROP } } ; LAMBDA (list (pair (nat %amount) (address %owner))) nat { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; ITER { SWAP ; PAIR ; DUP ; CDR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CAR ; ADD ; DIP { DROP } } ; DIP { DROP } } ; LAMBDA (pair (address %admin) (bool %paused)) unit { DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_AN_ADMIN" ; FAILWITH } { UNIT } ; DIP { DROP } } ; DIG 6 ; DUP ; DUG 7 ; CDR ; DIG 7 ; DUP ; DUG 8 ; CAR ; IF_LEFT { DUP ; IF_LEFT { DIG 2 ; DUP ; DUG 3 ; CAR ; DIG 4 ; DUP ; DUG 5 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; CAR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; IF_LEFT { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; SWAP ; CAR ; PAIR ; DIP { DROP } ; NIL operation ; PAIR ; DIP { DROP } } { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; SWAP ; CDR ; SWAP ; PAIR ; DIP { DROP } ; NIL operation ; PAIR ; DIP { DROP } } ; DIP { DROP 2 } ; DIG 4 ; DUP ; DUG 5 ; DIG 1 ; DUP ; DUG 2 ; CDR ; SWAP ; CDR ; SWAP ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CAR ; PAIR ; DIP { DROP 3 } } { DIG 2 ; DUP ; DUG 3 ; CAR ; CDR ; IF { PUSH string "PAUSED" ; FAILWITH } { UNIT } ; DIG 3 ; DUP ; DUG 4 ; CDR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; IF_LEFT { DUP ; IF_LEFT { DUP ; IF_LEFT { DIG 3 ; DUP ; DUG 4 ; CAR ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CAR ; DUP ; CDR ; MAP { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; CDR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } { DIG 2 ; DUP ; DUG 3 ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; PAIR ; DIG 18 ; DUP ; DUG 19 ; SWAP ; EXEC ; DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DIP { DROP } } ; DIP { DROP } } ; DIG 1 ; DUP ; DUG 2 ; CAR ; PUSH mutez 0 ; DIG 2 ; DUP ; DUG 3 ; TRANSFER_TOKENS ; DIP { DROP 3 } ; DIG 4 ; DUP ; DUG 5 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 2 } } { DUP ; CDR ; CDR ; DIG 13 ; DUP ; DUG 14 ; SWAP ; EXEC ; DIG 1 ; DUP ; DUG 2 ; CAR ; PUSH mutez 0 ; DIG 3 ; DUP ; DUG 4 ; CDR ; DIG 7 ; DUP ; DUG 8 ; CAR ; CDR ; CAR ; DIG 5 ; DUP ; DUG 6 ; CDR ; CAR ; CAR ; DIG 6 ; DUP ; DUG 7 ; CDR ; CAR ; CDR ; PAIR ; GET ; IF_NONE { PUSH bool False } { DUP ; DIP { DROP } } ; PAIR ; TRANSFER_TOKENS ; DIG 5 ; DUP ; DUG 6 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 3 } } ; DIP { DROP } } { DUP ; IF_LEFT { DUP ; PUSH mutez 0 ; DIG 5 ; DUP ; DUG 6 ; CAR ; CDR ; CDR ; TRANSFER_TOKENS ; DIG 4 ; DUP ; DUG 5 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 2 } } { DUP ; CDR ; DIG 12 ; DUP ; DUG 13 ; SWAP ; EXEC ; DIG 1 ; DUP ; DUG 2 ; CAR ; PUSH mutez 0 ; NIL (pair (pair (pair (nat %decimals) (map %extras string string)) (pair (string %name) (string %symbol))) (nat %token_id)) ; DIG 7 ; DUP ; DUG 8 ; CAR ; CAR ; CDR ; CONS ; TRANSFER_TOKENS ; DIG 5 ; DUP ; DUG 6 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 3 } } ; DIP { DROP } } ; DIP { DROP } } { DUP ; IF_LEFT { DUP ; IF_LEFT { DUP ; CDR ; DIG 12 ; DUP ; DUG 13 ; SWAP ; EXEC ; DIG 1 ; DUP ; DUG 2 ; CAR ; PUSH mutez 0 ; NIL (pair (nat %token_id) (nat %total_supply)) ; DIG 7 ; DUP ; DUG 8 ; CDR ; PUSH nat 0 ; PAIR ; CONS ; TRANSFER_TOKENS ; DIG 5 ; DUP ; DUG 6 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 3 } } { DUP ; MAP { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; CDR ; CDR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } { DUP ; CDR ; CDR ; DIG 1 ; DUP ; DUG 2 ; CDR ; CAR ; SOME ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CAR ; CDR ; SOME ; DIG 2 ; DUP ; DUG 3 ; CAR ; CAR ; PAIR ; PAIR } ; DIP { DROP } } ; DIG 4 ; DUP ; DUG 5 ; CAR ; CDR ; CAR ; DIG 5 ; DUP ; DUG 6 ; CAR ; CDR ; CDR ; CAR ; CDR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DUP ; CAR ; CDR ; IF_LEFT { DUP ; IF_LEFT { PUSH string "TX_DENIED" ; FAILWITH } { PUSH bool True ; PUSH bool True ; PAIR ; DIP { DROP } } ; DIP { DROP } } { PUSH bool False ; PUSH bool True ; PAIR ; DIP { DROP } } ; SENDER ; EMPTY_SET address ; DIG 3 ; DUP ; DUG 4 ; CAR ; CAR ; ITER { SWAP ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; CAR ; CDR ; IF_NONE { DUP } { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PUSH bool True ; SWAP ; UPDATE ; DIP { DROP } } ; DIP { DROP 2 } } ; DUP ; ITER { DIG 2 ; DUP ; DUG 3 ; DIG 1 ; DUP ; DUG 2 ; COMPARE ; EQ ; DIG 4 ; DUP ; DUG 5 ; CAR ; AND ; IF { UNIT } { DIG 3 ; DUP ; DUG 4 ; CDR ; NOT ; IF { PUSH string "NOT_OWNER" ; FAILWITH } { DIG 4 ; DUP ; DUG 5 ; CDR ; DIG 3 ; DUP ; DUG 4 ; DIG 2 ; DUP ; DUG 3 ; PAIR ; GET ; IF_NONE { PUSH string "NOT_OPERATOR" ; FAILWITH } { DROP ; UNIT } } } ; DROP 2 } ; DROP 4 ; PUSH unit Unit ; DIG 5 ; DUP ; DUG 6 ; CAR ; CAR ; CAR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DIG 16 ; DUP ; DUG 17 ; SWAP ; EXEC ; DIG 6 ; DUP ; DUG 7 ; DIG 1 ; DUP ; DUG 2 ; DIP { DUP ; CDR ; SWAP ; CAR ; DUP ; CDR ; SWAP ; CAR ; CDR } ; PAIR ; PAIR ; PAIR ; NIL operation ; PAIR ; DIP { DROP 4 } } ; DIP { DROP } } { DIG 2 ; DUP ; DUG 3 ; CAR ; CDR ; CAR ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; ITER { SWAP ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; IF_LEFT { DUP ; CDR ; DIG 16 ; DUP ; DUG 17 ; SWAP ; EXEC ; DIG 2 ; DUP ; DUG 3 ; PUSH bool True ; SOME ; DIG 3 ; DUP ; DUG 4 ; CAR ; CAR ; DIG 4 ; DUP ; DUG 5 ; CAR ; CDR ; PAIR ; UPDATE ; DIP { DROP 2 } } { DUP ; CDR ; DIG 16 ; DUP ; DUG 17 ; SWAP ; EXEC ; DIG 2 ; DUP ; DUG 3 ; DIG 2 ; DUP ; DUG 3 ; CAR ; CAR ; DIG 3 ; DUP ; DUG 4 ; CAR ; CDR ; PAIR ; NONE bool ; SWAP ; UPDATE ; DIP { DROP 2 } } ; DIP { DROP 2 } } ; DIP { DROP } ; DIG 3 ; DUP ; DUG 4 ; DIG 1 ; DUP ; DUG 2 ; DIP { DUP ; CDR ; SWAP ; CAR ; DUP ; CAR ; SWAP ; CDR ; CDR } ; PAIR ; SWAP ; PAIR ; PAIR ; NIL operation ; PAIR ; DIP { DROP 2 } } ; DIP { DROP } } ; DIP { DROP 2 } ; DIG 4 ; DUP ; DUG 5 ; DIG 1 ; DUP ; DUG 2 ; CDR ; SWAP ; CAR ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CAR ; PAIR ; DIP { DROP 3 } } ; DIP { DROP } } { DIG 1 ; DUP ; DUG 2 ; CAR ; DIG 3 ; DUP ; DUG 4 ; SWAP ; EXEC ; DIG 2 ; DUP ; DUG 3 ; CDR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; IF_LEFT { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DIG 1 ; DUP ; DUG 2 ; MAP { PUSH nat 0 ; NONE address ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CDR ; SOME ; DIG 2 ; DUP ; DUG 3 ; CAR ; PAIR ; PAIR ; DIP { DROP } } ; SENDER ; SELF ; ADDRESS ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DIP { DROP } ; DIG 1 ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CAR ; CAR ; PAIR ; DIG 15 ; DUP ; DUG 16 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; DIG 13 ; DUP ; DUG 14 ; SWAP ; EXEC ; DUP ; DIG 4 ; DUP ; DUG 5 ; CDR ; SUB ; ISNAT ; DUP ; IF_NONE { PUSH string "INSUFFICIENT_BALANCE" ; FAILWITH } { DUP ; DIP { DROP } } ; DIG 5 ; DUP ; DUG 6 ; DIG 4 ; DUP ; DUG 5 ; DIP { DUP ; CDR ; SWAP ; CAR ; DUP ; CDR ; SWAP ; CAR ; CDR } ; PAIR ; PAIR ; PAIR ; DIG 1 ; DUP ; DUG 2 ; SWAP ; CAR ; PAIR ; NIL operation ; PAIR ; DIP { DROP 9 } } { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DIG 1 ; DUP ; DUG 2 ; MAP { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; CDR ; SOME ; PAIR ; NONE address ; DIG 2 ; DUP ; DUG 3 ; CAR ; PAIR ; PAIR ; DIP { DROP } } ; SENDER ; SELF ; ADDRESS ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DIP { DROP } ; DIG 1 ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CAR ; CAR ; PAIR ; DIG 15 ; DUP ; DUG 16 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; DIG 13 ; DUP ; DUG 14 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; DIG 2 ; DUP ; DUG 3 ; DIP { DUP ; CDR ; SWAP ; CAR ; DUP ; CDR ; SWAP ; CAR ; CDR } ; PAIR ; PAIR ; PAIR ; DIG 1 ; DUP ; DUG 2 ; DIG 5 ; DUP ; DUG 6 ; CDR ; ADD ; SWAP ; CAR ; PAIR ; DUP ; NIL operation ; PAIR ; DIP { DROP 8 } } ; DIP { DROP 2 } ; DIG 3 ; DUP ; DUG 4 ; DIG 1 ; DUP ; DUG 2 ; CDR ; SWAP ; CAR ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CAR ; PAIR ; DIP { DROP 3 } } ; DIP { DROP 8 } } ;',n,c.TezosParameterFormat.Michelson);return m.operationGroupID.replace(/\"/g,"").replace(/\n/,"")}))},t.getSimpleStorage=function(e,t){return n(this,void 0,void 0,(function*(){return null}))},t.getAccountBalance=function(e,t,r){return n(this,void 0,void 0,(function*(){return 0}))}}(t.Tzip12ReferenceTokenHelper||(t.Tzip12ReferenceTokenHelper={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";(function(e){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const s=o(r(5)),i=r(8),a=r(4),u=r(6),c=r(3),l=r(9),p=o(r(7));!function(t){function r(t,r,o){return n(this,void 0,void 0,(function*(){const n=e.from(u.TezosMessageUtils.writePackedData(o,"",p.TezosParameterFormat.Michelson),"hex"),s=u.TezosMessageUtils.writePackedData(n,"bytes"),l=u.TezosMessageUtils.encodeBigMapKey(e.from(s,"hex")),f=yield c.TezosNodeReader.getValueForBigMapKey(t,r,l);if(void 0===f)throw new Error(`Could not get data from map ${r} for '${o}'`);const h=i.JSONPath({path:"$.bytes",json:f})[0];return JSON.parse(a.TezosLanguageUtil.hexToMicheline(h.slice(2)).code)}))}function o(e){return e.replace(/\"/g,"").replace(/\n/,"")}t.verifyDestination=function(t,r){return n(this,void 0,void 0,(function*(){const n=yield c.TezosNodeReader.getAccountForBlock(t,"head",r);if(!n.script)throw new Error(`No code found at ${r}`);const o=e.from(s.blake2s(JSON.stringify(n.script.code),null,16)).toString("hex");if("187c967006ca95a648c770fdd76947ef"!==o)throw new Error(`Contract does not match the expected code hash: ${o}, '187c967006ca95a648c770fdd76947ef'`);return!0}))},t.verifyScript=function(t){const r=e.from(s.blake2s(a.TezosLanguageUtil.preProcessMichelsonScript(t).join("\n"),null,16)).toString("hex");if("ffcad1e376a6c8915780fe6676aceec6"!==r)throw new Error(`Contract does not match the expected code hash: ${r}, 'ffcad1e376a6c8915780fe6676aceec6'`);return!0},t.getAccountBalance=function(e,t,o){return n(this,void 0,void 0,(function*(){const n=yield r(e,t,`(Pair "ledger" 0x${u.TezosMessageUtils.writeAddress(o)})`);return Number(i.JSONPath({path:"$.args[0].int",json:n})[0])}))},t.getOperatorList=function(e,t){return n(this,void 0,void 0,(function*(){const n=yield r(e,t,'"operators"');let o=[];for(const e of n)o.push(u.TezosMessageUtils.readAddress(e.bytes));return o}))},t.getTokenMetadata=function(e,t){return n(this,void 0,void 0,(function*(){return yield r(e,t,'"tokenMetadata"')}))},t.getSimpleStorage=function(e,t){return n(this,void 0,void 0,(function*(){const r=yield c.TezosNodeReader.getContractStorage(e,t);return{mapid:Number(i.JSONPath({path:"$.args[0].int",json:r})[0]),scale:8}}))},t.transferBalance=function(e,t,r,s,i,a,u,c,f=25e4,h=1e3){return n(this,void 0,void 0,(function*(){const n=`(Pair "${a}" (Pair "${u}" ${c}))`;return o((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,r,s,0,i,h,f,"transfer",n,p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.approveBalance=function(e,t,r,s,i,a,u,c=25e4,f=1e3){return n(this,void 0,void 0,(function*(){const n=`(Right (Right (Right (Right (Left (Right (Right (Right (Pair "${a}" ${u})))))))))`;return o((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,r,s,0,i,f,c,"",n,p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.mintBalance=function(e,t,r,s,i,a,u,c=25e4,f=1e3){return n(this,void 0,void 0,(function*(){const n=`(Right (Right (Right (Right (Right (Left (Left (Left (Pair "${a}" ${u})))))))))`;return o((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,r,s,0,i,f,c,"",n,p.TezosParameterFormat.Michelson)).operationGroupID)}))},t.addOperator=function(e,t,r,s,i,a,u=25e4,c=1e3){return n(this,void 0,void 0,(function*(){const n=`(Right (Right (Right (Right (Right (Left (Right (Left "${a}" ))))))))`;return o((yield l.TezosNodeWriter.sendContractInvocationOperation(e,t,r,s,0,i,c,u,"",n,p.TezosParameterFormat.Michelson)).operationGroupID)}))}}(t.TzbtcTokenHelper||(t.TzbtcTokenHelper={}))}).call(this,r(0).Buffer)},function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(28),i=o(r(14)),a=o(r(12)).default.log,u=i.default.fetch;!function(e){function t(e,t){return n(this,void 0,void 0,(function*(){return u(`${e.url}/v2/metadata/${t}`,{method:"GET",headers:{apiKey:e.apiKey}}).then(r=>{if(!r.ok)throw new s.ConseilRequestError(r.status,r.statusText,`${e.url}/v2/metadata/${t}`,null);return r}).then(r=>r.json().catch(r=>{a.error(`ConseilMetadataClient.executeMetadataQuery parsing failed for ${e.url}/v2/metadata/${t} with ${r}`)}))}))}e.executeMetadataQuery=t,e.getPlatforms=function(e){return n(this,void 0,void 0,(function*(){return t(e,"platforms")}))},e.getNetworks=function(e,r){return n(this,void 0,void 0,(function*(){return t(e,`${r}/networks`)}))},e.getEntities=function(e,r,o){return n(this,void 0,void 0,(function*(){return t(e,`${r}/${o}/entities`)}))},e.getAttributes=function(e,r,o,s){return n(this,void 0,void 0,(function*(){return t(e,`${r}/${o}/${s}/attributes`)}))},e.getAttributeValues=function(e,r,o,s,i){return n(this,void 0,void 0,(function*(){return t(e,`${r}/${o}/${s}/${i}`)}))},e.getAttributeValuesForPrefix=function(e,r,o,s,i,a){return n(this,void 0,void 0,(function*(){return t(e,`${r}/${o}/${s}/${i}/${encodeURIComponent(a)}`)}))}}(t.ConseilMetadataClient||(t.ConseilMetadataClient={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.STRING="String",e.INT="Int",e.DECIMAL="Decimal",e.BOOLEAN="Boolean",e.ACCOUNT_ADDRESS="AccountAddress",e.HASH="Hash",e.DATETIME="DateTime",e.CURRENCY="Currency"}(t.AttrbuteDataType||(t.AttrbuteDataType={})),function(e){e.PRIMARYKEY="PrimaryKey",e.UNIQUEKEY="UniqueKey",e.NONKEY="NonKey"}(t.AttrbuteKeyType||(t.AttrbuteKeyType={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Yay=0]="Yay",e[e.Nay=1]="Nay",e[e.Pass=2]="Pass"}(t.BallotVote||(t.BallotVote={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Mnemonic=0]="Mnemonic",e[e.Fundraiser=1]="Fundraiser",e[e.Hardware=2]="Hardware"}(t.KeyStoreType||(t.KeyStoreType={})),function(e){e[e.ED25519=0]="ED25519",e[e.SECP256K1=1]="SECP256K1",e[e.SECP256R1=2]="SECP256R1"}(t.KeyStoreCurve||(t.KeyStoreCurve={}))}])})); \ No newline at end of file diff --git a/docs/.nojekyll b/ConseilJS-core/docs/.nojekyll similarity index 100% rename from docs/.nojekyll rename to ConseilJS-core/docs/.nojekyll diff --git a/ConseilJS-core/docs/README.md b/ConseilJS-core/docs/README.md new file mode 100644 index 00000000..b2dfba28 --- /dev/null +++ b/ConseilJS-core/docs/README.md @@ -0,0 +1,1851 @@ + +# ConseilJS + +[![npm version](https://img.shields.io/npm/v/conseiljs.svg)](https://www.npmjs.com/package/conseiljs) +[![npm](https://img.shields.io/npm/dm/conseiljs.svg)](https://www.npmjs.com/package/conseiljs) +[![Build Status](https://travis-ci.org/Cryptonomic/ConseilJS.svg?branch=master)](https://travis-ci.org/Cryptonomic/ConseilJS) +[![Coverage Status](https://coveralls.io/repos/github/Cryptonomic/ConseilJS/badge.svg?branch=master)](https://coveralls.io/github/Cryptonomic/ConseilJS?branch=master) +[![dependencies](https://david-dm.org/Cryptonomic/ConseilJS/status.svg)](https://david-dm.org/Cryptonomic/ConseilJS) + +A library for building decentralized applications in Typescript and Javascript, currently focused on the [Tezos](http://tezos.com/) platform. + +ConseilJS connects to Tezos nodes for live chain data and operations and to [Conseil](https://github.com/Cryptonomic/Conseil) servers for high-performance analytics on blockchain data. Internally, Cryptonomic uses [Nautilus](https://github.com/Cryptonomic/Nautilus) for infrastructure deployments of these services. This is the library at the core of our products, [Arronax](https://arronax.io), [Mininax](https://mininax.io) and certainly [Galleon](https://galleon-wallet.tech). There are [ReasonML bindings](https://github.com/Cryptonomic/ConseilJS-ReasonML-Bindings) as well. + +Cryptonomic offers an infrastructure service - [Nautilus Cloud](https://nautilus.cloud) which enables quick access to the Tezos platform along with products that make it easier build on it. + +## Other Resources + +In addition to these materials, there is an [automated walk-through for common Tezos workflows](https://gist.github.com/anonymoussprocket/148d82fc9bf6c413be04155a90d57be6) available. The [mininax](https://mininax.io) block explorer is handy for viewing operations submitted during that run. Cryptonomic holds regular dApp development workshops internationally, if you are interested in one, reach out to organize it. The materials for these events are continuously updated and [are available](https://medium.com/the-cryptonomic-aperiodical/blockchain-development-with-tezos-698aa930e50f) on [Medium](https://medium.com/the-cryptonomic-aperiodical). + +## Use with Nodejs + +Add our [NPM package](https://www.npmjs.com/package/conseiljs) to your project. + +```bash +npm i conseiljs +``` + +If you are using webpack in your project, add below lines to your `webpack.config.js` file: + +```javascript +node: { fs: 'empty' } +``` + +We have a complete [React application example](https://github.com/Cryptonomic/ConseilJS-Tutorials) for you to check out. + +## Use with Web + +```html + +``` + +A fully functional sample [webpage example](https://github.com/Cryptonomic/ConseilJS-HTML-Example) is available too. + +## API Overview and Examples + +### Logs + +When using ConseilJS in the context of Nodejs, it's possible to control how verbose the logs are. + + +#### **Typescript** + +```typescript +import { setLogLevel } from 'conseiljs'; + +setLogLevel('debug'); +``` + +#### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); + +conseiljs.setLogLevel('debug'); +``` + + +Default log level is 'error', the library used internally for logging is [loglevel](https://www.npmjs.com/package/loglevel). For more verbose logs, set it to 'info'. + +### Contract Development Lightning Route + +If you want to skip straight to working on Michelson smart contracts simply follow these instructions in the following order: + +1. [Create node project](https://nodejs.org/en/docs/guides/getting-started-guide/) +2. [Install ConseilJS](#Use-with-Nodejs) +3. [Get an API key](#API-Key) +4. [Create a Tezos testnet account](#Create-an-Tezos-testnet-account) +5. [Initialize the account](#Initialize-the-account) +6. [Deploy a contract](#Deploy-a-Contract) +7. [Invoke a contract](#Invoke-a-Contract) + +### Blockchain Analytics Lightning Route + +If your interests lay in statistics and business intelligence, ConseilJS has tools for that as well. While for heavier data extraction using [Conseil](https://cryptonomic.github.io/Conseil) directly may make more sense, if you are building user tools like dashboards ConseilJS will make the process vastly easier. + +1. [Create node project](https://nodejs.org/en/docs/guides/getting-started-guide/) +1. [Install ConseilJS](#Use-with-Nodejs) +1. [Get an API key](#API-Key) +1. [Run reports](#reporting--analytics-functions) + +### API Key + +Some ConseilJS functions require an API key for a Conseil service instance. While direct chain interactions happen via a Tezos node, Conseil read operations like those in `TezosConseilClient` namespace do require an API key however. + +Obtaining a development key is easy. Cryptonomic offers an infrastructure service - [Nautilus Cloud](https://nautilus.cloud) which enables quick access to the Tezos platform along with products that make it easier build on it. + +### Tezos Chain Operations + +To execute operations on the Tezos chain a link to a Tezos node is required. One can be found after logging into [Nautilus Cloud](https://nautilus.cloud) for both testnet and mainnet. Be sure to initialize the `tezosNode` variable accordingly. Interface to this functionality is in the `TezosNodeWriter` namespace. + +#### Create a Tezos testnet account + +Visit the [Faucet](https://faucet.tzalpha.net) to get a test account with a healthy balance of fake XTZ to play with. With this information we can create the public and private keys necessary to participate in one of the test networks. Cryptnomic provides access to the Tezos **mainnet** and **carthagenet** networks via [Nautilus Cloud](https://nautilus.cloud). In the below examples, `faucetAccount` is assigned the contents of the file the faucet produces. + + +##### **Typescript** + +```typescript +import { TezosWalletUtil } from 'conseiljs'; + +const faucetAccount = { + "mnemonic": [ "letter", "pair", "shuffle", "exotic", "sword", "west", "build", "monster", "future", "senior", "salt", "satisfy", "knock", "alert", "gorilla"], + "secret": "0a09075426ab2658814c1faf101f53e5209a62f5", + "amount": "5652123072", + "pkh": "tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy", + "password": "VvLbJMu1fF", + "email": "yoyhmapi.ugewcsiv@tezos.example.org" +} + +async function initAccount() { + const keystore = await TezosWalletUtil.unlockFundraiserIdentity(faucetAccount.mnemonic.join(' '), faucetAccount.email, faucetAccount.password, faucetAccount.pkh); + console.log(`public key: ${keystore.publicKey}`); + console.log(`secret key: ${keystore.privateKey}`); +} + +initAccount(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const faucetAccount = { + "mnemonic": [ "letter", "pair", "shuffle", "exotic", "sword", "west", "build", "monster", "future", "senior", "salt", "satisfy", "knock", "alert", "gorilla"], + "secret": "0a09075426ab2658814c1faf101f53e5209a62f5", + "amount": "5652123072", + "pkh": "tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy", + "password": "VvLbJMu1fF", + "email": "yoyhmapi.ugewcsiv@tezos.example.org" +} + +async function initAccount() { + const keystore = await conseiljs.TezosWalletUtil.unlockFundraiserIdentity(faucetAccount.mnemonic.join(' '), faucetAccount.email, faucetAccount.password, faucetAccount.pkh); + console.log(`public key: ${keystore.publicKey}`); + console.log(`secret key: ${keystore.privateKey}`); +} + +initAccount(); +``` + + +This produces a public key of `edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj` and secret key of `edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH`. **Secret keys must be kept secure!** + +#### Create an empty Tezos account + +It is also possible to create unattached accounts on the chain. This would be the process for making accounts on mainnet that are not fundraiser accounts. Note that `unlockIdentityWithMnemonic` takes an optional password. This is not the same password that may have been used to encrypt the `TezosFileWallet` file. Presenting the intermediate mnemonic to the user may aid in key recovery. + + +##### **Typescript** + +```typescript +import { TezosWalletUtil } from 'conseiljs'; + +async function createAccount() { + const mnemonic = TezosWalletUtil.generateMnemonic(); + console.log(`mnemonic: ${mnemonic}`); + const keystore = await TezosWalletUtil.unlockIdentityWithMnemonic(mnemonic, ''); + console.log(`account id: ${keystore.publicKeyHash}`); + console.log(`public key: ${keystore.publicKey}`); + console.log(`secret key: ${keystore.privateKey}`); +} + +createAccount(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); + +async function createAccount() { + const mnemonic = conseiljs.TezosWalletUtil.generateMnemonic(); + console.log(`mnemonic: ${mnemonic}`); + const keystore = await conseiljs.TezosWalletUtil.unlockIdentityWithMnemonic(mnemonic, ''); + console.log(`account id: ${keystore.publicKeyHash}`); + console.log(`public key: ${keystore.publicKey}`); + console.log(`secret key: ${keystore.privateKey}`); +} + +createAccount(); +``` + + +#### Initialize the account + +An account must be activated on the chain before it can be used. With the combination of the faucet output and the keys generated in the step above we can send an account activation operation. + + +##### **Typescript** + +```typescript +import { TezosNodeWriter, StoreType } from 'conseiljs'; + +const tezosNode = ''; + +async function activateAccount() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + const result = await TezosNodeWriter.sendIdentityActivationOperation(tezosNode, keystore, '0a09075426ab2658814c1faf101f53e5209a62f5'); + console.log(`Injected operation group id ${result.operationGroupID}`) +} + +activateAccount(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +async function activateAccount() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + const result = await conseiljs.TezosNodeWriter.sendIdentityActivationOperation(tezosNode, keystore, '0a09075426ab2658814c1faf101f53e5209a62f5'); + console.log(`Injected operation group id ${result.operationGroupID}`) +} + +activateAccount(); + +``` + + +The next step on Tezos is an account revelation. + + +##### **Typescript** + +```typescript +import { TezosNodeWriter, StoreType } from 'conseiljs'; + +const tezosNode = ''; + +async function revealAccount() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + + const result = await TezosNodeWriter.sendKeyRevealOperation(tezosNode, keystore); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +revealAccount(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +async function revealAccount() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + + const result = await conseiljs.TezosNodeWriter.sendKeyRevealOperation(tezosNode, keystore); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +revealAccount(); +``` + + +#### Transfer value + +The most basic operation on the chain is the transfer of value between two accounts. In this example we have the account we activated above: `tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy` and some random carthagenet address to test with: `tz1RVcUP9nUurgEJMDou8eW3bVDs6qmP5Lnc`. Note all amounts are in µtz, as in micro-tez, hence 0.5tz is represented as `500000`. + + +##### **Typescript** + +```typescript +import { TezosNodeWriter, StoreType } from 'conseiljs'; + +const tezosNode = ''; + +async function sendTransaction() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + + const result = await TezosNodeWriter.sendTransactionOperation(tezosNode, keystore, 'tz1RVcUP9nUurgEJMDou8eW3bVDs6qmP5Lnc', 500000, 1500, ''); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +sendTransaction(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +async function sendTransaction() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + + const result = await conseiljs.TezosNodeWriter.sendTransactionOperation(tezosNode, keystore, 'tz1RVcUP9nUurgEJMDou8eW3bVDs6qmP5Lnc', 500000, 1500, ''); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +sendTransaction(); +``` + + +#### Delegate + +One of the most exciting features of Tezos is delegation. This is a means for non-baker accounts to participate in the on-chain governance process and receive staking rewards. It is possible to delegate both implicit and originated accounts. For implicit addresses, those starting with tz1, tz2 and tz3, simply call `sendDelegationOperation`. Originated accounts, that is smart contracts, must explicitly support delegate setting, but can be deployed with a delegate already set. + +Note that calling `sendDelegationOperation` will change an existing delegation if one is set. To cancel delegation use `sendUndelegationOperation`. + +Another important point is that delegation is applied per account for the full balance of that account. To delegate to multiple bakers from a single address, use `BabylonDelegationHelper`. + + +##### **Typescript** + +```typescript +import { TezosNodeWriter, StoreType } from 'conseiljs'; + +const tezosNode = ''; + +async function delegateAccount() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + + const result = await TezosNodeWriter.sendDelegationOperation(tezosNode, keystore, keystore.publicKeyHash, 'tz1LhS2WFCinpwUTdUb991ocL2D9Uk6FJGJK', 10000); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +delegateAccount(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +async function delegateAccount() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + + const result = await conseiljs.TezosNodeWriter.sendDelegationOperation(tezosNode, keystore, keystore.publicKeyHash, 'tz1LhS2WFCinpwUTdUb991ocL2D9Uk6FJGJK', 10000); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +delegateAccount(); +``` + + +### Smart Contract Interactions + +Tezos smart contracts are natively executed in a stack-based type-safe language called Michelson. As of version 0.2.7, ConseilJS is able to deploy a large portion of contracts written in that language. Rather than compose contracts directly in Michelson, we encourage you to look at more developer-friendly options like [SmartPy](http://smartpy.io/demo/). + +#### Deploy a Contract + +A note of warning, as of Tezos Protocol 4, deployed in the spring of 2019, originated accounts with code (smart contracts) are no longer 'spendable'. What this means is, deploying a contract with an initial balance that does not have functionality internally that enables transfer of this balance, will permanently lock that amount of XTZ. + +One of the more existing features of ConseilJS is that it allow for trustless chain interactions, including contract deployment directly from Michelson. For the curious the language parsing and transformation code lives inside the following: [`Michelson.ne`](https://github.com/Cryptonomic/ConseilJS/blob/master/grammar/tezos/Michelson.ne), [`Micheline.ne`](https://github.com/Cryptonomic/ConseilJS/blob/master/grammar/tezos/Micheline.ne), [`TezosLanguageUtil`](https://github.com/Cryptonomic/ConseilJS/blob/master/src/chain/tezos/TezosLanguageUtil.ts)), [`TezosMessageCodec`](https://github.com/Cryptonomic/ConseilJS/blob/master/src/chain/tezos/TezosMessageCodec.ts), [`TezosMessageUtil`](https://github.com/Cryptonomic/ConseilJS/blob/master/src/chain/tezos/TezosMessageUtil.ts). To find out more about the Michelson language, visit [the guide](https://michelson.nomadic-labs.com) from Nomadic Labs and the [Tezos platform documentation](https://tezos.gitlab.io/whitedoc/michelson.html). + + +##### **Typescript** + +```typescript +import { StoreType, TezosNodeWriter, TezosParameterFormat, setLogLevel } from 'conseiljs'; + +setLogLevel('debug'); + +const tezosNode = ''; + +async function deployContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + const contract = `[ + { + "prim":"parameter", + "args":[ { "prim":"string" } ] + }, + { + "prim":"storage", + "args":[ { "prim":"string" } ] + }, + { + "prim":"code", + "args":[ + [ + { "prim":"CAR" }, + { "prim":"NIL", "args":[ { "prim":"operation" } ] }, + { "prim":"PAIR" } + ] + ] + } + ]`; + const storage = '{"string": "Sample"}'; + + const result = await TezosNodeWriter.sendContractOriginationOperation(tezosNode, keystore, 0, undefined, 100000, '', 1000, 100000, contract, storage, TezosParameterFormat.Micheline); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +deployContract(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +setLogLevel('debug'); + +async function deployContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + const contract = `[ + { + "prim":"parameter", + "args":[ { "prim":"string" } ] + }, + { + "prim":"storage", + "args":[ { "prim":"string" } ] + }, + { + "prim":"code", + "args":[ + [ + { "prim":"CAR" }, + { "prim":"NIL", "args":[ { "prim":"operation" } ] }, + { "prim":"PAIR" } + ] + ] + } + ]`; + const storage = '{"string": "Sample"}'; + + const result = await conseiljs.TezosNodeWriter.sendContractOriginationOperation(tezosNode, keystore, 0, undefined, 100000, '', 1000, 100000, contract, storage, conseiljs.TezosParameterFormat.Micheline); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +deployContract(); + +``` + + +It's possible to deploy a contract with Michelson code on an experimental basis with local forging as of ConseilJS 0.2.7. Another important feature introduced in that release was `awaitOperationConfirmation(...)` which will monitor the chain via Conseil waiting for the specified operation to appear, and then return the result set from Conseil for that operation. This can be used to ensure that the requested transaction has occured, it will also produce an updated account counter. The example below originates a contract and then waits for it to be recorded so the address of the new contract can be extracted. + + +##### **Typescript** + +```typescript +import { StoreType, TezosNodeWriter, TezosParameterFormat, setLogLevel } from 'conseiljs'; + +setLogLevel('debug'); + +const tezosNode = ''; + +async function deployContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + const contract = `parameter string; + storage string; + code { DUP; + DIP { CDR ; NIL string ; SWAP ; CONS } ; + CAR ; CONS ; + CONCAT; + NIL operation; PAIR}`; + const storage = '"Sample"'; + + const nodeResult = await TezosNodeWriter.sendContractOriginationOperation(tezosNode, keystore, 0, undefined, 100000, '', 1000, 100000, contract, storage, TezosParameterFormat.Michelson); + + const groupid = nodeResult['operationGroupID'].replace(/\"/g, '').replace(/\n/, ''); // clean up RPC output + console.log(`Injected operation group id ${groupid}`); + const conseilResult = await TezosConseilClient.awaitOperationConfirmation(conseilServer, 'carthagenet', groupid, 5); + console.log(`Originated contract at ${conseilResult[0].originated_contracts}`); +} + +deployContract(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; +const network = 'carthagenet'; +const conseilServer = { url: '', apiKey: '', network }; + +conseiljs.setLogLevel('debug'); + +async function deployContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + const contract = `parameter string; + storage string; + code { DUP; + DIP { CDR ; NIL string ; SWAP ; CONS } ; + CAR ; CONS ; + CONCAT; + NIL operation; PAIR}`; + const storage = '"Sample"'; + + const nodeResult = await conseiljs.TezosNodeWriter.sendContractOriginationOperation(tezosNode, keystore, 0, undefined, 100000, '', 1000, 100000, contract, storage, conseiljs.TezosParameterFormat.Michelson); + + const groupid = nodeResult['operationGroupID'].replace(/\"/g, '').replace(/\n/, ''); // clean up RPC output + console.log(`Injected operation group id ${groupid}`); + const conseilResult = await conseiljs.TezosConseilClient.awaitOperationConfirmation(conseilServer, 'carthagenet', groupid, 5); + console.log(`Originated contract at ${conseilResult[0].originated_accounts}`); +} + +deployContract(); + +``` + + +#### Invoke a Contract + +Similarly to contract deployment, contract invocation can happen either with Michelson or Micheline format. There is also a convenience function for safety, `sendContractPing` that allows calling a contract with a 0 amount and no parameters. This was the invocation pattern for the Tezos Foundation [Ledger Nano S giveaway](https://tezos.foundation/news/tezos-foundation-to-give-away-ledger-nano-s-hardware-wallets-to-celebrate-one-year-since-betanet-launch) [registry contract](https://arronax.io?e=Tezos%20Mainnet/operations&q=eyJmaWVsZHMiOlsidGltZXN0YW1wIiwiYmxvY2tfbGV2ZWwiLCJzb3VyY2UiLCJkZXN0aW5hdGlvbiIsImFtb3VudCIsImtpbmQiLCJmZWUiLCJvcGVyYXRpb25fZ3JvdXBfaGFzaCJdLCJwcmVkaWNhdGVzIjpbeyJmaWVsZCI6ImtpbmQiLCJvcGVyYXRpb24iOiJlcSIsInNldCI6WyJ0cmFuc2FjdGlvbiJdLCJpbnZlcnNlIjpmYWxzZX0seyJmaWVsZCI6InRpbWVzdGFtcCIsIm9wZXJhdGlvbiI6ImFmdGVyIiwic2V0IjpbMTU1OTM2MTYwMDAwMF0sImludmVyc2UiOmZhbHNlfSx7ImZpZWxkIjoiZGVzdGluYXRpb24iLCJvcGVyYXRpb24iOiJlcSIsInNldCI6WyJLVDFCUnVkRlpFWExZQU5nbVpUa2ExeENETjVuV1RNV1k3U1oiXSwiaW52ZXJzZSI6ZmFsc2V9LHsiZmllbGQiOiJ0aW1lc3RhbXAiLCJvcGVyYXRpb24iOiJiZWZvcmUiLCJzZXQiOlsxNTYzMjQ5NjAwMDAwXSwiaW52ZXJzZSI6ZmFsc2V9LHsiZmllbGQiOiJzdGF0dXMiLCJvcGVyYXRpb24iOiJlcSIsInNldCI6WyJhcHBsaWVkIl0sImludmVyc2UiOmZhbHNlfV0sIm9yZGVyQnkiOlt7ImZpZWxkIjoidGltZXN0YW1wIiwiZGlyZWN0aW9uIjoiYXNjIn1dLCJsaW1pdCI6NTAwMH0). + + +##### **Typescript** + +```typescript +import { StoreType, TezosNodeWriter, TezosParameterFormat, setLogLevel } from 'conseiljs'; + +setLogLevel('debug'); + +const tezosNode = ''; + +async function invokeContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + const contractAddress = 'KT1KA7DqFjShLC4CPtChPX8QtRYECUb99xMY'; + + const result = await TezosNodeWriter.sendContractInvocationOperation(tezosNode, keystore, contractAddress, 10000, 100000, '', 1000, 100000, '"Cryptonomicon"', TezosParameterFormat.Michelson); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +invokeContract(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +conseiljs.setLogLevel('debug'); + +async function invokeContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + const contractAddress = 'KT1KA7DqFjShLC4CPtChPX8QtRYECUb99xMY'; + + const result = await conseiljs.TezosNodeWriter.sendContractInvocationOperation(tezosNode, keystore, contractAddress, 10000, 100000, '', 1000, 100000, '"Cryptonomicon"', conseiljs.TezosParameterFormat.Michelson); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +invokeContract(); +``` + + + +##### **Typescript** + +```typescript +import { StoreType, TezosNodeWriter, TezosParameterFormat, setLogLevel } from 'conseiljs'; + +setLogLevel('debug'); + +const tezosNode = ''; + +async function invokeContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + const contractAddress = 'KT1KA7DqFjShLC4CPtChPX8QtRYECUb99xMY'; + + const result = await TezosNodeWriter.sendContractInvocationOperation(tezosNode, keystore, contractAddress, 10000, 100000, '', 1000, 100000, '', '{"string": "Cryptonomicon"}', TezosParameterFormat.Micheline); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +invokeContract(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +conseiljs.setLogLevel('debug'); + +async function invokeContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + const contractAddress = 'KT1KA7DqFjShLC4CPtChPX8QtRYECUb99xMY'; + + const result = await conseiljs.TezosNodeWriter.sendContractInvocationOperation(tezosNode, keystore, contractAddress, 10000, 100000, '', 1000, 100000, '', '{"string": "Cryptonomicon"}', conseiljs.TezosParameterFormat.Micheline); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +invokeContract(); +``` + + + +##### **Typescript** + +```typescript +import { StoreType, TezosNodeWriter, setLogLevel } from 'conseiljs'; + +setLogLevel('debug'); + +const tezosNode = ''; + +async function pingContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + const contractAddress = 'KT1KA7DqFjShLC4CPtChPX8QtRYECUb99xMY'; + + const result = await TezosNodeWriter.sendContractPing(tezosNode, keystore, contractAddress, 10000, 100000, '', 1000, 100000); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +pingContract(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +conseiljs.setLogLevel('debug'); + +async function pingContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + const contractAddress = 'KT1KA7DqFjShLC4CPtChPX8QtRYECUb99xMY'; + + const result = await conseiljs.TezosNodeWriter.sendContractPing(tezosNode, keystore, contractAddress, 10000, 100000, '', 1000, 100000); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +pingContract(); +``` + + +#### Extract Entry Points + +Michelson contract are single-entry, meaning unlike other smart contract languages it only has one function that can be called externally. The work-around for this limitation is to create a tree of `if` statements inside that method that perform different operations. This results in a somewhat unintuitive invocation pattern. To help with this, ConseilJS provide contract introspection functions that can not only extract the entry points given a contract, but also generate the invocation parameter object for them. This functionality resides in the `TezosContractIntrospector` namespace which has several methods for parsing the interface given a contract address, full contract code or just the `parameter` portion of the contract: `generateEntryPointsFromAddress`, `generateEntryPointsFromCode`, `generateEntryPointsFromParams` respectively. Examples below use a version the proposed Tezos token standard, [FA1.2](https://gitlab.com/tzip/tzip/blob/master/A/FA1.2.md) deployed on alphanet at [KT1XFXwWCDMLkgWjhfqKUpDtBYWf3ZdUdKC3](https://arronax.io?e=Tezos%20Alphanet/accounts&m=true&q=eyJmaWVsZHMiOlsiYWNjb3VudF9pZCIsIm1hbmFnZXIiLCJiYWxhbmNlIiwic2NyaXB0Iiwic3RvcmFnZSIsImJsb2NrX2xldmVsIl0sInByZWRpY2F0ZXMiOlt7ImZpZWxkIjoiYWNjb3VudF9pZCIsIm9wZXJhdGlvbiI6ImVxIiwic2V0IjpbIktUMVhGWHdXQ0RNTGtnV2poZnFLVXBEdEJZV2YzWmRVZEtDMyJdLCJpbnZlcnNlIjpmYWxzZX1dLCJvcmRlckJ5IjpbeyJmaWVsZCI6ImJsb2NrX2xldmVsIiwiZGlyZWN0aW9uIjoiZGVzYyJ9XSwiYWdncmVnYXRpb24iOltdLCJsaW1pdCI6MTAwMH0). + + +##### **Typescript** + +```typescript +import { TezosContractIntrospector, setLogLevel } from 'conseiljs'; + +setLogLevel('debug'); + +const tezosNode = ''; + +async function interrogateContract() { + const contractParameters = `parameter (or (or (or (pair %transfer (address :from) (pair (address :to) (nat :value))) (or (pair %transferViaProxy (address :sender) (pair (address :from) (pair (address :to) (nat :value)))) (pair %approve (address :spender) (nat :value)))) (or (pair %approveViaProxy (address :sender) (pair (address :spender) (nat :value))) (or (pair %getAllowance (pair (address :owner) (address :spender)) (contract nat)) (pair %getBalance (address :owner) (contract nat))))) (or (or (pair %getTotalSupply unit (contract nat)) (or (bool %setPause) (address %setAdministrator))) (or (or (pair %getAdministrator unit (contract address)) (pair %mint (address :to) (nat :value))) (or (pair %burn (address :from) (nat :value)) (address %setProxy)))));`; + + const entryPoints = await TezosContractIntrospector.generateEntryPointsFromParams(contractParameters); + entryPoints.forEach(p => { + console.log(`${p.name}(${p.parameters.map(pp => (pp.name || 'unnamed') + '/' + pp.type).join(', ')})`); + }); + + console.log(entryPoints[0].generateParameter('', '', 999)); +} + +interrogateContract(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +conseiljs.setLogLevel('debug'); + +async function interrogateContract() { + const contractParameters = `parameter (or (or (or (pair %transfer (address :from) (pair (address :to) (nat :value))) (or (pair %transferViaProxy (address :sender) (pair (address :from) (pair (address :to) (nat :value)))) (pair %approve (address :spender) (nat :value)))) (or (pair %approveViaProxy (address :sender) (pair (address :spender) (nat :value))) (or (pair %getAllowance (pair (address :owner) (address :spender)) (contract nat)) (pair %getBalance (address :owner) (contract nat))))) (or (or (pair %getTotalSupply unit (contract nat)) (or (bool %setPause) (address %setAdministrator))) (or (or (pair %getAdministrator unit (contract address)) (pair %mint (address :to) (nat :value))) (or (pair %burn (address :from) (nat :value)) (address %setProxy)))));`; + + const entryPoints = await conseiljs.TezosContractIntrospector.generateEntryPointsFromParams(contractParameters); + entryPoints.forEach(p => { + console.log(`${p.name}(${p.parameters.map(pp => (pp.name || 'unnamed') + '/' + pp.type).join(', ')})`); + }); + + console.log(entryPoints[0].generateParameter('', '', 999)); +} + +interrogateContract(); +``` + + +The output of the entry point iteration and a sample invocation pattern are below. + +```text +%transfer(:from/address, :to/address, :value/nat) +%transferViaProxy(:sender/address, :from/address, :to/address, :value/nat) +%approve(:spender/address, :value/nat) +%approveViaProxy(:sender/address, :spender/address, :value/nat) +%getAllowance(:owner/address, :spender/address, unnamed/contract (nat)) +%getBalance(:owner/address, unnamed/contract (nat)) +%getTotalSupply(unnamed/unit, unnamed/contract (nat)) +%setPause(unnamed/bool) +%setAdministrator(unnamed/address) +%getAdministrator(unnamed/unit, unnamed/contract (address)) +%mint(:to/address, :value/nat) +%burn(:from/address, :value/nat) +%setProxy(unnamed/address) + +(Left (Left (Left (Pair source-address (Pair destination-address 999))))) +``` + +Invoking this contract is now obvious! Don't forget that the make this call correctly, you'll need to substitue 'source-address' and 'destination-address' values for proper addresses, futhermore there are restrictions in the contract on who can execute various methods. In this case it must be either the token manager or the 'source-address' account. + + +##### **Typescript** + +```typescript +import { StoreType, TezosNodeWriter, TezosParameterFormat, setLogLevel } from 'conseiljs'; + +setLogLevel('debug'); + +const tezosNode = ''; + +async function invokeContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: StoreType.Fundraiser + }; + const contractAddress = 'KT1XFXwWCDMLkgWjhfqKUpDtBYWf3ZdUdKC3'; + + const result = await TezosNodeWriter.sendContractInvocationOperation(tezosNode, keystore, contractAddress, 10000, 100000, '', 1000, 100000, '(Left (Left (Left (Pair source-address (Pair destination-address 999)))))', , TezosParameterFormat.Michelson); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +invokeContract(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +conseiljs.setLogLevel('debug'); + +async function invokeContract() { + const keystore = { + publicKey: 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + privateKey: 'edskRgu8wHxjwayvnmpLDDijzD3VZDoAH7ZLqJWuG4zg7LbxmSWZWhtkSyM5Uby41rGfsBGk4iPKWHSDniFyCRv3j7YFCknyHH', + publicKeyHash: 'tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy', + seed: '', + storeType: conseiljs.StoreType.Fundraiser + }; + const contractAddress = 'KT1XFXwWCDMLkgWjhfqKUpDtBYWf3ZdUdKC3'; + + const result = await conseiljs.TezosNodeWriter.sendContractInvocationOperation(tezosNode, keystore, contractAddress, 10000, 100000, '', 1000, 100000, '(Left (Left (Left (Pair source-address (Pair destination-address 999)))))', , conseiljs.TezosParameterFormat.Michelson); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +invokeContract(); +``` + + +### Tezos Chain Operations with Hardware Devices + +ConseilJS supports operation signing with [Ledger Nano S](https://shop.ledger.com/products/ledger-nano-s) devices. The interactions are largely the same as with software-signed operations. This functionality is encapsulated in the `TezosLedgerWallet` namespace. Before a Ledger-bound account can be used, it must be unlocked as described below. After that, retrieve and cache the account address, finally to sign transactions with the Ledger, pass the `derivationPath` parameter to the various interaction functions. Remember that the private key never leaves the device, hence the `KeyStore` object returned by `unlockAddress` will not have that field populated. + +#### Unlock an Account + + +##### **Typescript** + +```typescript +import { HardwareDeviceType, TezosLedgerWallet, setLogLevel } from 'conseiljs'; + +setLogLevel('debug'); + +async function unlockAccount(derivationPath) { + const keyStore = await TezosLedgerWallet.unlockAddress(HardwareDeviceType.LedgerNanoS, derivationPath); + + console.log(`Unlocked Ledger account at ${derivationPath} as ${keyStore.publicKeyHash}`); +} + +unlockAccount("44'/1729'/0'/0'/0'"); +``` + +##### **JavaScript (node)** + +```javascript +const conseiljs = require('conseiljs'); + +conseiljs.setLogLevel('debug'); + +async function unlockAccount(derivationPath) { + const keyStore = await conseiljs.TezosLedgerWallet.unlockAddress(conseiljs.HardwareDeviceType.LedgerNanoS, derivationPath); + + console.log(`Unlocked Ledger account at ${derivationPath} as ${keyStore.publicKeyHash}`); +} + +unlockAccount("44'/1729'/0'/0'/0'"); +``` + + +#### Transfer Value + +The difference between the code below and what was described earlier is the last parameter of the `sendTransactionOperation` function. The derivation path that needs to be invoked on the Ledger device to sign the transaction. The code also unlocks the account in this example. It is not necessary to do this every time an operation is sent to the chain, it's listed below for completeness. This is just one operation sample, all chain interactions with a Ledger device require a `derivationPath` parameter to be provided. + + +##### **Typescript** + +```typescript +import { TezosNodeWriter, StoreType } from 'conseiljs'; + +const tezosNode = ''; + +async function sendTransaction(derivationPath: string) { + const keyStore = await TezosLedgerWallet.unlockAddress(HardwareDeviceType.LedgerNanoS, derivationPath); + + const result = await TezosNodeWriter.sendTransactionOperation(tezosNode, keyStore, 'tz1RVcUP9nUurgEJMDou8eW3bVDs6qmP5Lnc', 500000, 1500, derivationPath); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +sendTransaction("44'/1729'/0'/0'/0'"); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const tezosNode = ''; + +async function sendTransaction(derivationPath) { + const keyStore = await TezosLedgerWallet.unlockAddress(HardwareDeviceType.LedgerNanoS, derivationPath); + + const result = await conseiljs.TezosNodeWriter.sendTransactionOperation(tezosNode, keyStore, 'tz1RVcUP9nUurgEJMDou8eW3bVDs6qmP5Lnc', 500000, 1500, derivationPath); + console.log(`Injected operation group id ${result.operationGroupID}`); +} + +sendTransaction("44'/1729'/0'/0'/0'"); +``` + + +### Metadata Discovery Functions + +[Conseil](https://github.com/Cryptonomic/Conseil) blockchain indexer service is metadata-driven. Reports can be constructed in a fully dynamic fashion by discovering what a particular Conseil node has available. Unless you are running your own [Nautilus](https://github.com/Cryptonomic/Nautilus) instance, you'll need access to an existing one. Cryptonomic provides an infrastructure service for Tezos – [Nautilus Cloud](https://nautilus.cloud). + +All metadata functions are in the `ConseilMetadataClient` namespace. Internally all of these are REST GET requests. An `apiKey` header is required. The ConseilJS api takes care of these details. Each successive request relies on the results of the previous one. Using the information provide by this service it's possible to construct data queries discussed in the next section. + +#### Platforms + +Query for available platforms. + + +##### **Typescript** + +```typescript +import { ConseilMetadataClient } from 'conseiljs'; +import * as util from 'util'; + +const conseilServerInfo = { url: '', apiKey: '' }; + +async function listPlatforms() { + const platforms = await ConseilMetadataClient.getPlatforms(conseilServerInfo); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listPlatforms(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); +const conseilServerInfo = { url: '', apiKey: '' }; + +async function listPlatforms() { + const platforms = await conseiljs.ConseilMetadataClient.getPlatforms(conseilServerInfo); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listPlatforms(); +``` + + +A result set may look like this: + +```json +[ { "name": "tezos", "displayName": "Tezos" } ] +``` + +#### Networks + +Query for networks under the `Tezos` platform. + + +##### **Typescript** + +```typescript +import { ConseilMetadataClient } from 'conseiljs'; +import * as util from 'util'; + +const conseilServerInfo = { url: '', apiKey: '' }; + +async function listNetworks() { + const platforms = await ConseilMetadataClient.getNetworks(conseilServerInfo, 'tezos'); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listNetworks(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); +const conseilServerInfo = { url: '', apiKey: '' }; + +async function listNetworks() { + const platforms = await conseiljs.ConseilMetadataClient.getNetworks(conseilServerInfo, 'tezos'); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listNetworks(); +``` + + +The service might return: + +```json +[ { "name": "zeronet", "displayName": "Zeronet", "platform": "tezos", "network": "zeronet" }, + { "name": "carthagenet", "displayName": "carthagenet", "platform": "tezos", "network": "carthagenet" } ] +``` + +#### Entities + +Query for available chain entities on `Tezos` `carthagenet`. + + +##### **Typescript** + +```typescript +import { ConseilMetadataClient } from 'conseiljs'; +import * as util from 'util'; + +const conseilServerInfo = { url: '', apiKey: '', network: 'carthagenet' }; + +async function listEntities() { + const platforms = await ConseilMetadataClient.getEntities(conseilServerInfo, 'tezos', 'carthagenet'); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listEntities(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); +const conseilServerInfo = { url: '', apiKey: '' }; + +async function listEntities() { + const platforms = await conseiljs.ConseilMetadataClient.getEntities(conseilServerInfo, 'tezos', 'carthagenet'); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listEntities(); +``` + + +We might get: + +```json +[ { "name": "accounts", "displayName": "Accounts", "count": 18782 }, + { "name": "accounts_checkpoint", "displayName": "Accounts checkpoint", "count": 15 }, + { "name": "bakers", "displayName": "Bakers", "count": 7588390 }, + { "name": "balance_updates", "displayName": "Balance updates", "count": 7352650 }, + { "name": "ballots", "displayName": "Ballots", "count": 0 }, + { "name": "blocks", "displayName": "Blocks", "count": 288222 }, + { "name": "fees", "displayName": "Fees", "count": 1183 }, + { "name": "operation_groups", "displayName": "Operation groups", "count": 2156141 }, + { "name": "operations", "displayName": "Operations", "count": 2179936 }, + { "name": "proposals", "displayName": "Proposals", "count": 0 } ] +``` + +#### Entity Attributes + +Entities can be queried for their properties as follows. + + +##### **Typescript** + +```typescript +import { ConseilMetadataClient } from 'conseiljs'; +import * as util from 'util'; + +const conseilServerInfo = { url: '', apiKey: '' }; + +async function listAttributes() { + const platforms = await ConseilMetadataClient.getAttributes(conseilServerInfo, 'tezos', 'carthagenet', 'operations'); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listAttributes(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); +const conseilServerInfo = { url: '', apiKey: '' }; + +async function listAttributes() { + const platforms = await conseiljs.ConseilMetadataClient.getAttributes(conseilServerInfo, 'tezos', 'carthagenet', 'operations'); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listAttributes(); +``` + + +A result may look like this. The sample has been truncated for size. + +```json +[ { "name": "operation_id", "displayName": "Operation id", "dataType": "Int", "keyType": "UniqueKey", "entity": "operations" }, + { "name": "operation_group_hash", "displayName": "Operation group hash", "dataType": "String", "cardinality": 2147676, "keyType": "NonKey", "entity": "operations" }, + { "name": "kind", "displayName": "Kind", "dataType": "String", "cardinality": 8, "keyType": "NonKey", "entity": "operations" }, + { "name": "level", "displayName": "Level", "dataType": "Int", "keyType": "NonKey", "entity": "operations" }, + { "name": "delegate", "displayName": "Delegate", "dataType": "String", "cardinality": 133, "keyType": "NonKey", "entity": "operations" }, + { "name": "slots", "displayName": "Slots", "dataType": "String", "cardinality": 690305, "keyType": "NonKey", "entity": "operations" }, + { "name": "nonce", "displayName": "Nonce", "dataType": "String", "cardinality": 8889, "keyType": "NonKey", "entity": "operations" }, + { "name": "pkh", "displayName": "Pkh", "dataType": "String", "cardinality": 1532, "keyType": "NonKey", "entity": "operations" }, + { "name": "secret", "displayName": "Secret", "dataType": "String", "cardinality": 1532, "keyType": "NonKey", "entity": "operations" }, + { "name": "source", "displayName": "Source", "dataType": "String", "cardinality": 2254, "keyType": "UniqueKey", "entity": "operations" }, + { "name": "fee", "displayName": "Fee", "dataType": "Decimal", "keyType": "NonKey", "entity": "operations" } + ... +] +``` + +#### Attribute Values + +The metadata services provides distinct values for some low-cardinality fields. In this case we're querying for `operation` `kind` on `Tezos` `carthagenet`. + + +##### **Typescript** + +```typescript +import { ConseilMetadataClient } from 'conseiljs'; +import * as util from 'util'; + +const conseilServerInfo = { url: '', apiKey: '' }; + +async function listAttributeValues() { + const platforms = await ConseilMetadataClient.getAttributeValues(conseilServerInfo, 'tezos', 'carthagenet', 'operations', 'kind'); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listAttributeValues(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); +const conseilServerInfo = { url: '', apiKey: '' }; + +async function listAttributeValues() { + const platforms = await conseiljs.ConseilMetadataClient.getAttributeValues(conseilServerInfo, 'tezos', 'carthagenet', 'operations', 'kind'); + console.log(`${util.inspect(platforms, false, 2, false)}`); +} + +listAttributeValues(); +``` + + +Result here is: + +```json +[ "seed_nonce_revelation", "delegation", "transaction", "activate_account", "origination", "reveal", "double_baking_evidence", "endorsement" ] +``` + +This information can be used to create a drop-down list in some UI, or allow for type-ahead-autocomplete, etc. If the returned list is too long to be useful, or to get partial matches on high-cardinality fields, see getAttributeValuesForPrefix. + +#### Attribute Values for Prefix + +For long lists that may not be practical to display in a UI for auto-complete or for fields that the server will not provide attribute lists due to limits on cardinality, use `getAttributeValuesForPrefix(serverInfo, platform, network, entity, attribute, prefix)`. The last parameter of this call should be a few characters long to be effective. + +### Reporting & Analytics Functions + +For the Tezos chain these methods are in the `TezosConseilClient` namespace, in addition to `apiKey`, `Content-Type=application/json` header must be present. All data requests are REST POST. + +#### List transactions for an address + +Notice that it is possible to sort on and filter by fields that are not returned in the result set. Sent and received transactions must be queried for separately. Same address is used as an example: `tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy`. + + + +##### **Typescript** + +```typescript +import { ConseilDataClient, ConseilQueryBuilder, ConseilSortDirection, ConseilOperator } from 'conseiljs'; +import * as util from 'util'; + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'operations'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function listAccountTransactions() { + let sendQuery = ConseilQueryBuilder.blankQuery(); + sendQuery = ConseilQueryBuilder.addFields(sendQuery, 'block_level', 'timestamp', 'source', 'destination', 'amount', 'fee', 'counter'); + sendQuery = ConseilQueryBuilder.addPredicate(sendQuery, 'kind', ConseilOperator.EQ, ['transaction'], false); + sendQuery = ConseilQueryBuilder.addPredicate(sendQuery, 'source', ConseilOperator.EQ, ['tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy'], false); + sendQuery = ConseilQueryBuilder.addPredicate(sendQuery, 'status', ConseilOperator.EQ, ['applied'], false); + sendQuery = ConseilQueryBuilder.addOrdering(sendQuery, 'block_level', ConseilSortDirection.DESC); + sendQuery = ConseilQueryBuilder.setLimit(sendQuery, 100); + + let receiveQuery = ConseilQueryBuilder.blankQuery(); + receiveQuery = ConseilQueryBuilder.addFields(receiveQuery, 'block_level', 'timestamp', 'source', 'destination', 'amount', 'fee', 'counter'); + receiveQuery = ConseilQueryBuilder.addPredicate(receiveQuery, 'kind', ConseilOperator.EQ, ['transaction'], false); + receiveQuery = ConseilQueryBuilder.addPredicate(receiveQuery, 'destination', ConseilOperator.EQ, ['tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy'], false); + receiveQuery = ConseilQueryBuilder.addPredicate(receiveQuery, 'status', ConseilOperator.EQ, ['applied'], false); + receiveQuery = ConseilQueryBuilder.addOrdering(receiveQuery, 'block_level', ConseilSortDirection.DESC); + receiveQuery = ConseilQueryBuilder.setLimit(receiveQuery, 100); + + const sendResult = await ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, sendQuery); + const receiveResult = await ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, receiveQuery); + const transactions = sendResult.concat(receiveResult).sort((a, b) => { return a['timestamp'] - b['timestamp'] }); + + console.log(`${util.inspect(transactions, false, 2, false)}`); +} + +listAccountTransactions(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'operations'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function listAccountTransactions() { + let sendQuery = conseiljs.ConseilQueryBuilder.blankQuery(); + sendQuery = conseiljs.ConseilQueryBuilder.addFields(sendQuery, 'block_level', 'timestamp', 'source', 'destination', 'amount', 'fee', 'counter'); + sendQuery = conseiljs.ConseilQueryBuilder.addPredicate(sendQuery, 'kind', conseiljs.ConseilOperator.EQ, ['transaction'], false); + sendQuery = conseiljs.ConseilQueryBuilder.addPredicate(sendQuery, 'source', conseiljs.ConseilOperator.EQ, ['tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy'], false); + sendQuery = conseiljs.ConseilQueryBuilder.addPredicate(sendQuery, 'status', conseiljs.ConseilOperator.EQ, ['applied'], false); + sendQuery = conseiljs.ConseilQueryBuilder.addOrdering(sendQuery, 'block_level', conseiljs.ConseilSortDirection.DESC); + sendQuery = conseiljs.ConseilQueryBuilder.setLimit(sendQuery, 100); + + let receiveQuery = conseiljs.ConseilQueryBuilder.blankQuery(); + receiveQuery = conseiljs.ConseilQueryBuilder.addFields(receiveQuery, 'block_level', 'timestamp', 'source', 'destination', 'amount', 'fee', 'counter'); + receiveQuery = conseiljs.ConseilQueryBuilder.addPredicate(receiveQuery, 'kind', conseiljs.ConseilOperator.EQ, ['transaction'], false); + receiveQuery = conseiljs.ConseilQueryBuilder.addPredicate(receiveQuery, 'destination', conseiljs.ConseilOperator.EQ, ['tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy'], false); + receiveQuery = conseiljs.ConseilQueryBuilder.addPredicate(receiveQuery, 'status', conseiljs.ConseilOperator.EQ, ['applied'], false); + receiveQuery = conseiljs.ConseilQueryBuilder.addOrdering(receiveQuery, 'block_level', conseiljs.ConseilSortDirection.DESC); + receiveQuery = conseiljs.ConseilQueryBuilder.setLimit(receiveQuery, 100); + + const sendResult = await conseiljs.ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, sendQuery); + const receiveResult = await conseiljs.ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, receiveQuery); + const transactions = sendResult.concat(receiveResult).sort((a, b) => { return a['timestamp'] - b['timestamp'] }); + + console.log(`${util.inspect(transactions, false, 2, false)}`); +} + +listAccountTransactions(); +``` + + +A result of that request might look like this. + +```json +[ { "source": "tz1QSHaKpTFhgHLbqinyYRjxD5sLcbfbzhxy", + "timestamp": 1554614628000, + "block_level": 286240, + "amount": 500000, + "counter": 36041, + "destination": "tz1RVcUP9nUurgEJMDou8eW3bVDs6qmP5Lnc", + "fee": 1500 } ] +``` + +#### List transactions within a date range + +This query will return all successful transactions in the last four hours. + + +##### **Typescript** + +```typescript +import { ConseilDataClient, ConseilQueryBuilder, ConseilSortDirection, ConseilOperator } from 'conseiljs'; +import * as util from 'util'; + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'operations'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function listTransactions() { + let transactionQuery = ConseilQueryBuilder.blankQuery(); + transactionQuery = ConseilQueryBuilder.addFields(transactionQuery, 'block_level', 'timestamp', 'source', 'destination', 'amount', 'fee', 'counter'); + transactionQuery = ConseilQueryBuilder.addPredicate(transactionQuery, 'kind', ConseilOperator.EQ, ['transaction'], false); + transactionQuery = ConseilQueryBuilder.addPredicate(transactionQuery, 'timestamp', ConseilOperator.BETWEEN, [Date.now() - 3600 * 48, Date.now()], false); + transactionQuery = ConseilQueryBuilder.addPredicate(transactionQuery, 'status', ConseilOperator.EQ, ['applied'], false); + transactionQuery = ConseilQueryBuilder.addOrdering(transactionQuery, 'block_level', ConseilSortDirection.DESC); + transactionQuery = ConseilQueryBuilder.setLimit(transactionQuery, 5000); + + const result = await ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, transactionQuery); + + console.log(`${util.inspect(result, false, 2, false)}`); +} + +listTransactions(); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'operations'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function listTransactions() { + let transactionQuery = conseiljs.ConseilQueryBuilder.blankQuery(); + transactionQuery = conseiljs.ConseilQueryBuilder.addFields(transactionQuery, 'block_level', 'timestamp', 'source', 'destination', 'amount', 'fee', 'counter'); + transactionQuery = conseiljs.ConseilQueryBuilder.addPredicate(transactionQuery, 'kind', conseiljs.ConseilOperator.EQ, ['transaction'], false); + transactionQuery = conseiljs.ConseilQueryBuilder.addPredicate(transactionQuery, 'timestamp', conseiljs.ConseilOperator.BETWEEN, [Date.now() - 3600 * 48, Date.now()], false); + transactionQuery = conseiljs.ConseilQueryBuilder.addPredicate(transactionQuery, 'status', conseiljs.ConseilOperator.EQ, ['applied'], false); + transactionQuery = conseiljs.ConseilQueryBuilder.addOrdering(transactionQuery, 'block_level', conseiljs.ConseilSortDirection.DESC); + transactionQuery = conseiljs.ConseilQueryBuilder.setLimit(transactionQuery, 5000); + + const result = await conseiljs.ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, transactionQuery); + + console.log(`${util.inspect(result, false, 2, false)}`); +} + +listTransactions(); +``` + + +#### List all originated accounts + +#### List all managed accounts + +#### List all smart contracts + +#### List top-10 bakers by balance + +#### List top-10 bakers by delegator count + +#### Export a large dataset to csv + +### Common Wallet Queries + +#### Tezos Implicit Account Information + + +##### **Typescript** + +```typescript +import { ConseilDataClient, ConseilQueryBuilder, ConseilSortDirection, ConseilOperator } from 'conseiljs'; +import * as util from 'util'; + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'accounts'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function accountInfo(address: string) { + let accountQuery = ConseilQueryBuilder.blankQuery(); + accountQuery = ConseilQueryBuilder.addFields(accountQuery, 'account_id', 'delegate_value', 'balance', 'block_level'); + accountQuery = ConseilQueryBuilder.addPredicate(accountQuery, 'account_id', ConseilOperator.EQ, [address], false); + accountQuery = ConseilQueryBuilder.setLimit(accountQuery, 1); + + const result = await ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, accountQuery); + + console.log(`${util.inspect(result, false, 2, false)}`); +} + +accountInfo('tz3WXYtyDUNL91qfiCJtVUX746QpNv5i5ve5'); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'accounts'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function accountInfo(address: string) { + let accountQuery = conseiljs.ConseilQueryBuilder.blankQuery(); + accountQuery = conseiljs.ConseilQueryBuilder.addFields(accountQuery, 'account_id', 'delegate_value', 'balance', 'block_level'); + accountQuery = conseiljs.ConseilQueryBuilder.addPredicate(accountQuery, 'account_id', conseiljs.ConseilOperator.EQ, [address], false); + accountQuery = conseiljs.ConseilQueryBuilder.setLimit(accountQuery, 1); + + const result = await conseiljs.ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, accountQuery); + + console.log(`${util.inspect(result, false, 2, false)}`); +} + +accountInfo('tz3WXYtyDUNL91qfiCJtVUX746QpNv5i5ve5'); +``` + + +#### Delegated Accounts with non-zero Balances + + + +##### **Typescript** + +```typescript +import { ConseilDataClient, ConseilQueryBuilder, ConseilSortDirection, ConseilOperator } from 'conseiljs'; +import * as util from 'util'; + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'accounts'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function accountInfo(address: string) { + let accountQuery = ConseilQueryBuilder.blankQuery(); + accountQuery = ConseilQueryBuilder.addFields(accountQuery, 'account_id'); + accountQuery = ConseilQueryBuilder.addPredicate(accountQuery, 'manager', ConseilOperator.EQ, [address]); + accountQuery = ConseilQueryBuilder.addPredicate(accountQuery, 'delegate_value', ConseilOperator.ISNULL, [], true); + accountQuery = ConseilQueryBuilder.addPredicate(accountQuery, 'balance', ConseilOperator.GT, [0]); + accountQuery = ConseilQueryBuilder.setLimit(accountQuery, 100); + + const result = await ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, accountQuery); + + console.log(`${util.inspect(result, false, 2, false)}`); +} + +accountInfo('tz1PziRyFwu96Rw1vqgzEdd7SqMuT4hQaggz'); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'accounts'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function accountInfo(address: string) { + let accountQuery = conseiljs.ConseilQueryBuilder.blankQuery(); + accountQuery = conseiljs.ConseilQueryBuilder.addFields(accountQuery, 'account_id'); + accountQuery = conseiljs.ConseilQueryBuilder.addPredicate(accountQuery, 'manager', conseiljs.ConseilOperator.EQ, [address]); + accountQuery = conseiljs.ConseilQueryBuilder.addPredicate(accountQuery, 'delegate_value', conseiljs.ConseilOperator.ISNULL, [], true); + accountQuery = conseiljs.ConseilQueryBuilder.addPredicate(accountQuery, 'balance', conseiljs.ConseilOperator.GT, [0]); + accountQuery = conseiljs.ConseilQueryBuilder.setLimit(accountQuery, 100); + + const result = await conseiljs.ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, accountQuery); + + console.log(`${util.inspect(result, false, 2, false)}`); +} + +accountInfo('tz1PziRyFwu96Rw1vqgzEdd7SqMuT4hQaggz'); +``` + + +#### Total Balance for an Account + +This query returns the complete holdings under the control of the provided account. + + +##### **Typescript** + +```typescript +import { ConseilDataClient, ConseilQueryBuilder, ConseilSortDirection, ConseilOperator } from 'conseiljs'; +import * as util from 'util'; + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'accounts'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function accountBalance(address: string) { + let accountQuery = ConseilQueryBuilder.blankQuery(); + accountQuery = ConseilQueryBuilder.addFields(accountQuery, 'manager', 'balance'); + accountQuery = ConseilQueryBuilder.addPredicate(accountQuery, 'manager', ConseilOperator.EQ, [address]); + accountQuery = ConseilQueryBuilder.addPredicate(accountQuery, 'balance', ConseilOperator.GT, [0]); + accountQuery = ConseilQueryBuilder.addAggregationFunction(accountQuery, 'balance', ConseilFunction.sum); + accountQuery = ConseilQueryBuilder.setLimit(accountQuery, 1); + + const result = await ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, accountQuery); + + console.log(`${util.inspect(result, false, 2, false)}`); +} + +accountBalance('tz1aQuhhKCvjFZ4XbnvTU5BjaBiz3ceoMNag'); +``` + +##### **JavaScript** + +```javascript +const conseiljs = require('conseiljs'); +const util = require('util'); + +const platform = 'tezos'; +const network = 'carthagenet'; +const entity = 'accounts'; + +const conseilServer = { url: '', apiKey: '', network }; + +async function accountBalance(address) { + let accountQuery = conseiljs.ConseilQueryBuilder.blankQuery(); + accountQuery = conseiljs.ConseilQueryBuilder.addFields(accountQuery, 'manager', 'balance'); + accountQuery = conseiljs.ConseilQueryBuilder.addPredicate(accountQuery, 'manager', conseiljs.ConseilOperator.EQ, [address]); + accountQuery = conseiljs.ConseilQueryBuilder.addPredicate(accountQuery, 'balance', conseiljs.ConseilOperator.GT, [0]); + accountQuery = conseiljs.ConseilQueryBuilder.addAggregationFunction(accountQuery, 'balance', conseiljs.ConseilFunction.sum); + accountQuery = conseiljs.ConseilQueryBuilder.setLimit(accountQuery, 1); + + const result = await conseiljs.ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, accountQuery); + + console.log(`${util.inspect(result, false, 2, false)}`); +} + +accountBalance('tz1aQuhhKCvjFZ4XbnvTU5BjaBiz3ceoMNag'); + +``` + + +### Namespaces + +#### ConseilQueryBuilder + +This collection of methods for creating entity queries. + +##### addAggregationFunction(query, field, aggregationFunction) + +It is possible to apply an aggregation function to a field in the query. This field must be present in the `fields` collection. The aggregation function is one of `avg`, `count`, `max`, `min`, `sum` as defined in the `ConseilFunction` enum. `count` can be applied to any field type; `max`, `min` can be applied to a datetime or numeric fields, while `avg` and `sum` are only valid on numeric fields. + +##### addFields(query, ...fields) + +By default, all fields are returned, but using the information from the ConseilMetadataClient for the appropriate platform/network/entity combination. + +##### addOrdering(query, field, direction) + +One or more ordering instructions can be added to a query and they may be applied on fields that are not part of the result set. + +The default direction is `ASC`. Direction values are in the `ConseilSortDirection` enum. + +##### addPredicate(query, field, operation, values, invert, group) + +Several predicate operations are supported. For string values: `EQ`, `IN`, `LIKE`, `STARTSWITH`, `ENDSWITH`, `ISNULL`. For numbers and dates: `EQ`, `IN`, `BETWEEN`, `LT` or `BEFORE`, `GT` or `AFTER`, `ISNULL`. The operation values are located in the `ConseilOperator` enum. The difference between `LIKE` and `STARTSWITH` and `ENDSWITH`, is that the former will do a match at any point in the text. + +There are limitations on the contents of the values array depending on the supplied operation. `EQ` requires a single value, `IN` an contain multiple, `BETWEEN` only accepts two. + +The `invert` parameter is to allow for queries like `not in`, or `is not null`, `!=`. Default is `false`. + +Lastly, the optional `group` parameter allows to associated predicates into groups so they can be applied with and OR condition instead of AND. + +##### blankQuery() + +This method creates a minimum viable query that can be sent a Conseil data service like `TezosConseilClient`. + +##### setLimit(query, limit) + +The default record set is 100 rows. This can be changed using this method, however the server may override the request. + +##### setOutputType(query, outputType) + +By default, the service will return json data. For large datasets this is suboptimal. This function sets the output parameter of the ConseilQuery to one of 'json' or 'csv' as defined in `ConseilOutput` enum. + +#### ConseilMetadataClient + +For details, see [API Examples](#metadata-discovery-functions) below. + +#### ConseilDataClient + +#### executeEntityQuery(serverInfo, platform, network, entity, query) + +The single method of this namespace submits queries from the `ConseilQueryBuilder` to the Conseil service endpoint. + +#### TezosConseilClient + +Functions for querying the Conseil back-end REST API v2 for Tezos. This functionality is offered by wrapping ConseilDataClient for Tezos-specific entities. + +All of these methods require Conseil connection object which is a URL and API key. The `serverInfo` parameter below is of type `ConseilServerInfo`. Some of the methods also take a `query` parameter of type `ConseilQuery`, these are best constructed with `ConseilQueryBuilder` described [earlier](#ConseilQueryBuilder). + +##### awaitOperationConfirmation(serverInfo, network, hash, duration, blocktime) + +This function will monitor the chain for an operation with the given `hash` for up a `duration` blocks on some `network`. If the operation is found, it will be returned, otherwise an `Error` is thrown. + +##### awaitOperationForkConfirmation(serverInfo, network, hash, duration, depth) + +##### getAccount(serverInfo, network, accountID) + +Returns a specific account on the given `network` with the provided `accountID`. In Tezos account id, account address, public key hash (phk) all refer to the same thing. All account entity fields are returned. To get just a subset of fields, use `getAccounts(serverInfo, network, query)`. + +##### getAccounts(serverInfo, network, query) + +Returns account information subject to the provided `query` on a given `network`. + +##### getBakers(serverInfo, network, query) + +Returns baker information subject to the provided `query` on a given `network`. + +##### getBallots(serverInfo, network, query) + +Returns ballot information subject to the provided `query` on a given `network`. + +##### getBlock(serverInfo, network, hash) + +Returns a specific block with the given `hash` and `network`. All block entity fields are returned. To get just a subset of fields, use `getBlocks(serverInfo, network, query)`. + +##### getBlockByLevel(serverInfo, network level) + +Returns a specific block at the provided `level` from the `network`. All block entity fields are returned. + +##### getBlockHead(serverInfo, network) + +Returns the most recent block on the chain for a given `network`. Internally this is implemented with a `ConseilQuery` ordered by block level with limit 1. All block entity fields are returned. To get just a subset of fields, use `getBlocks(serverInfo, network, query)`. + +##### getBlocks(serverInfo, network, query) + +Returns block information subject to the provided `query` on a given `network`. + +##### getEntityQueryForId(id) + +A conveniences function that enabled dynamic id-based search. For a specified `id`, it returns the entity type and a query necessary to get it from the service. Numeric ids are assumed to be block level. + +##### getFeeStatistics(serverInfo, network, operationType) + +Conseil indexer calculates running average fees by operation type. This is a convenience method to get that information. [Tezori](https://github.com/Cryptonomic/Tezori/blob/master/app/utils/general.js#L168) for example uses this information to suggest an appropriate fee to the user via a drop-down. + +##### getOperationGroup(serverInfo, network, operationGroupID) + +Returns a specific operation group on the given `network` with the provided `operationGroupID`. In Tezos individual operations are not keyed. All operation group entity fields are returned. To get just a subset of fields, use `getOperationGroups(serverInfo, network, query)`. + +##### getOperationGroups(serverInfo, network, query) + +Returns operation group information subject to the provided `query` on a given `network`. + +##### getOperations(serverInfo, network, query) + +Returns operation information subject to the provided `query` on a given `network`. + +##### getProposals(serverInfo, network, query) + +Returns proposal information subject to the provided `query` on a given `network`. + +##### getTezosEntityData(serverInfo, network, entity, query) + +Returns a record set for a specific entity of the Tezos platform. Entity list and metadata can be retrieved using `ConseilMetadataClient`. + +#### TezosLedgerWallet + +Identity management and signing functions to enable Tezos node interactions with the Ledger Nano S hardware wallet. + +##### initLedgerTransport + +Before the Ledger device can be used, the connection must be initialized with this call. + +##### unlockAddress(deviceType, derivationPath) + +Returns a partial `KeyStore` container public key and public key hash (address) for a given `derivationPath`. The private key does not leave the device. `deviceType` must be `HardwareDeviceType.LedgerNanoS`. + +##### getTezosPublicKey(derivationPath: string): Promise<string> + +Returns just the public key for a given `derivationPath`. + +##### signTezosOperation(derivationPath, watermarkedOpInHex) + +Returns signature bytes resulting from signing the provided transaction expressed in bytes using the private key at the specified `derivationPath`. + +#### TezosMessageCodec + +A collection of functions to encode and decode various Tezos P2P message components + +#### TezosNodeReader + +Utility functions for interacting with the Tezos node. + +##### getBlock(server: string, hash: string) + +Gets a block directly from the specified Tezos node by block hash. + +##### getBlockHead(server: string) + +Gets the most-recent block. + +##### getAccountForBlock(server: string, blockHash: string, accountHash: string) + +Returns account status as of a specific block. + +##### getCounterForAccount(server: string, accountHash: string) + +Gets the current account operation counter. This index must be incremented with each successive operation being submitted by the account. + +##### getAccountManagerForBlock(server: string, blockHash: string, accountHash: string) + +Retrieves the account manager information as of a given block. + +##### isImplicitAndEmpty(server: string, accountHash: string) + +Identifies the account as implicit and empty - 0 balance. This has bearing on the cost of certain transactions. + +##### isManagerKeyRevealedForAccount(server: string, accountHash: string) + +A key reveal operation is required, this verifies if the account has already sent one. + +#### TezosNodeWriter + +Functions for sending operations on the Tezos network via a node. Most of these methods take many parameters that include server URL, key pair and address structure, and fee, among other things. Parameters have been omitted for brevity, but all of these methods and more are documented in the code using TSDoc. + +Several of these functions accept an optional derivation path parameter that is defaulted to blank for signing with a Ledger device. + +The various send functions return an operation group hash which can be passed to [TezosConseilClient.awaitOperationConfirmation(...)](#awaitOperationConfirmationserverInfo-network-hash-duration) to await its appearance on the chain. + +##### signOperationGroup + +Generates a signature for the hex representation of the proposed operation group based on account keys. + +##### forgeOperations + +Forges an operation group - converts it to hex in preparation for inclusion on the chain. This function will encode operations locally. + +##### forgeOperationsRemotely + +ConseilJS is able to encode locally operations in many cases, for the occasions where that fails, this function will forge an operation remotely on the specified Tezos node. This operation is not trustless. + +##### applyOperation + +Sends the operation group to the Tezos node for validation. The RPC payload is JSON, but the attached signature is based on the (potentially) locally created hex equivalent. + +##### injectOperation + +Submits the binary content of the operation group for inclusion on the chain. + +##### sendOperation + +Assembles, signs, forges, validates and submits an operation group to the chain. + +##### appendRevealOperation + +Account public key must be revealed for it to participate in transactions. This method will check the account status and add a Reveal operation to the operation group going out. + +##### sendTransactionOperation + +Sends the basic value transfer operation. + +##### sendDelegationOperation + +Updates the account's delegate. + +##### sendUndelegationOperation + +A convenience function to remove the delegate from an account. Calls [sendDelegationOperation](#sendDelegationOperation) internally + +##### sendAccountOriginationOperation + +Creates an originated account (KT1), without a script. These types of accounts allow participation in the delegation process. + +##### sendContractOriginationOperation + +Attempts to deploy a contract on the chain. `code` and initial `storage` are required parameters the content of which is specified by `codeFormat`. For operation submission Tezos converts the Michelson code into a JSON format known as Micheline before finally writing it as hex. Setting `codeFormat` to 'Micheline' will skip the Michelson-Micheline conversion. + +##### sendContractInvocationOperation + +Like [sendContractOriginationOperation](#sendContractOriginationOperation), parameters can be in Michelson or Micheline. It's possible to pass undefined or blank parameters. + +##### sendContractPing + +Invokes a contract with a 0 transaction amount and no parameters. + +##### sendKeyRevealOperation + +A key reveal operation can be sent separately as well. For a more efficient way to reveal an account, see [appendRevealOperation](#appendRevealOperation). + +##### sendIdentityActivationOperation + +Sends an account activation operation. These are preformed for fundraiser accounts. + +#### TezosFileWallet + +Functions for Tezos wallet functionality. + +#### TezosChainTypes + +#### TezosP2PMessageTypes + +JSON message definitions for operation submission. + +#### TezosRPCResponseTypes + +JSON message definitions for RPC service responses. + +## Contribute + +There are many ways to contribute to this project. You can develop applications or dApps with it. You can submit bug reports or feature requests. You can ask questions about it on [r/Tezos](http://reddit.com/r/tezos/) or the [Tezos StackExchange](https://tezos.stackexchange.com). We certainly welcome pull requests as well. + +### NPM Target Overview + +#### `npm run test` + +#### `npm run coverage` + +#### `npm run format` + +#### `npm run package` + +## Other references + +[Wiki](https://github.com/Cryptonomic/ConseilJS/wiki/Tutorial:-Querying-for-Tezos-alphanet-data-using-the-ConseilJS-v2-API) + +[Riot Dev Channel](https://matrix.to/#/!rUwpbdwWhWgKINPyOD:cryptonomic.tech?via=cryptonomic.tech&via=matrix.org&via=ostez.com) + +[Cryptonomic Reddit](https://www.reddit.com/r/cryptonomic) + +[The Cryptonomic Aperiodical](https://medium.com/the-cryptonomic-aperiodical) + +[@CryptonomicTech](https://twitter.com/CryptonomicTech) diff --git a/docs/index.html b/ConseilJS-core/docs/index.html similarity index 83% rename from docs/index.html rename to ConseilJS-core/docs/index.html index 8576f1f0..3e6ee42d 100644 --- a/docs/index.html +++ b/ConseilJS-core/docs/index.html @@ -16,6 +16,7 @@ repo: 'https://github.com/Cryptonomic/ConseilJS' } - + + diff --git a/ConseilJS-core/grammar/tezos/EntryPointTemplate.ne b/ConseilJS-core/grammar/tezos/EntryPointTemplate.ne new file mode 100644 index 00000000..1f6cd528 --- /dev/null +++ b/ConseilJS-core/grammar/tezos/EntryPointTemplate.ne @@ -0,0 +1,432 @@ +@preprocessor typescript + +@{% + const moo = require("moo"); + + const lexer = moo.compile({ + wspace: /[ \t]+/, + lparen: '(', + rparen: ')', + annot: /:[^ );]+|%[^ );]+/, + parameter: 'parameter', + or: 'or', + pair: 'pair', + data: ['bytes', 'int', 'nat', 'bool', 'string', 'timestamp', 'signature', 'key', 'key_hash', 'mutez', 'address', 'unit', 'operation', 'chain_id'], + singleArgData: ['option', 'list', 'contract', 'set'], + doubleArgData: ['lambda', 'map', 'big_map'], + semicolon: ';' + }); +%} + +# Pass your lexer object using the @lexer option: +@lexer lexer + +entry -> %parameter __ parameters _ %semicolon {% breakParameter %} + +# Parameters +parameters -> + %lparen _ parameters _ %rparen {% stripParen %} + + | %or _ %annot __ %annot __ parameters __ parameters {% branchOrWithTwoAnnot %} + | %or _ %annot __ parameters __ parameters {% branchOrWithAnnot %} + | %or _ parameters __ parameters {% branchOr %} + + | %pair __ %annot __ %annot __ parameters __ parameters {% mergePairWithTwoAnnot %} + | %pair __ %annot __ parameters __ parameters {% mergePairWithAnnot %} + | %pair __ parameters __ parameters {% mergePair %} + + | %singleArgData _ %annot __ %annot __ parameters {% recordSingleArgDataWithTwoAnnot %} + | %singleArgData _ %annot __ parameters {% recordSingleArgDataWithAnnot %} + | %singleArgData _ parameters {% recordSingleArgData %} + + | %doubleArgData _ %annot __ %annot __ parameters __ parameters {% recordDoubleArgDataWithTwoAnnot %} + | %doubleArgData _ %annot __ parameters __ parameters {% recordDoubleArgDataWithAnnot %} + | %doubleArgData _ parameters __ parameters {% recordDoubleArgData %} + + | %data __ %annot {% recordData %} + | %data __ %annot __ %annot {% recordData %} + | %data {% recordData %} + +# Whitespace +_ -> [\s]:* +__ -> [\s] + +# Post Processors +@{% + import { Parameter, EntryPoint } from '../../../types/tezos/ContractIntrospectionTypes'; + + const breakParameter = (d: any): EntryPoint[] => { return d[2]; } + + const stripParen = (d: any): EntryPoint[] => d[2]; + + // + + const branchOrWithTwoAnnot = (d: any): EntryPoint[] => { + const annotA: string = d[2]; + const annotB: string = d[4]; + const leftEntryPoints: EntryPoint[] = d[6]; + const rightEntryPoints: EntryPoint[] = d[8]; + const branchedEntryPoints: EntryPoint[] = []; + + for (const leftEntryPoint of leftEntryPoints) { + const branchedEntryPoint: EntryPoint = { + name: leftEntryPoint.name, // TODO + parameters: leftEntryPoint.parameters, + structure: '(Left ' + leftEntryPoint.structure + ')', + generateInvocationString: leftEntryPoint.generateInvocationString, + generateInvocationPair: leftEntryPoint.generateInvocationPair, + generateSampleInvocation: leftEntryPoint.generateSampleInvocation + } + branchedEntryPoints.push(branchedEntryPoint); + } + + for (const rightEntryPoint of rightEntryPoints) { + const branchedEntryPoint: EntryPoint = { + name: rightEntryPoint.name, // TODO + parameters: rightEntryPoint.parameters, + structure: '(Right ' + rightEntryPoint.structure + ')', + generateInvocationString: rightEntryPoint.generateInvocationString, + generateInvocationPair: rightEntryPoint.generateInvocationPair, + generateSampleInvocation: rightEntryPoint.generateSampleInvocation + } + branchedEntryPoints.push(branchedEntryPoint); + } + + return branchedEntryPoints; + } + + const branchOrWithAnnot = (d: any): EntryPoint[] => { + const annot = d[2]; + const leftEntryPoints: EntryPoint[] = d[4]; + const rightEntryPoints: EntryPoint[] = d[6]; + const branchedEntryPoints: EntryPoint[] = []; + + for (const leftEntryPoint of leftEntryPoints) { + const branchedEntryPoint: EntryPoint = { + name: `${annot}.${leftEntryPoint.name}`, // TODO + parameters: leftEntryPoint.parameters, + structure: '(Left ' + leftEntryPoint.structure + ')', + generateInvocationString: leftEntryPoint.generateInvocationString, + generateInvocationPair: leftEntryPoint.generateInvocationPair, + generateSampleInvocation: leftEntryPoint.generateSampleInvocation + } + branchedEntryPoints.push(branchedEntryPoint); + } + + for (const rightEntryPoint of rightEntryPoints) { + const branchedEntryPoint: EntryPoint = { + name: `${annot}.${rightEntryPoint.name}`, // TODO + parameters: rightEntryPoint.parameters, + structure: '(Right ' + rightEntryPoint.structure + ')', + generateInvocationString: rightEntryPoint.generateInvocationString, + generateInvocationPair: rightEntryPoint.generateInvocationPair, + generateSampleInvocation: rightEntryPoint.generateSampleInvocation + } + branchedEntryPoints.push(branchedEntryPoint); + } + + return branchedEntryPoints; + } + + const branchOr = (d: any): EntryPoint[] => { + const leftEntryPoints: EntryPoint[] = d[2]; + const rightEntryPoints: EntryPoint[] = d[4]; + const branchedEntryPoints: EntryPoint[] = []; + + for (const leftEntryPoint of leftEntryPoints) { + if (leftEntryPoint.parameters.length === 1 && leftEntryPoint.parameters[0].name === leftEntryPoint.name) { + leftEntryPoint.parameters[0].name = undefined; + } + branchedEntryPoints.push({...leftEntryPoint, structure: `(Left ${leftEntryPoint.structure})`}); + } + + for (const rightEntryPoint of rightEntryPoints) { + if (rightEntryPoint.parameters.length === 1 && rightEntryPoint.parameters[0].name === rightEntryPoint.name) { + rightEntryPoint.parameters[0].name = undefined; + } + branchedEntryPoints.push({...rightEntryPoint, structure: `(Right ${rightEntryPoint.structure})`}); + } + + return branchedEntryPoints; + } + + // + + const mergePairWithTwoAnnot = (d: any): EntryPoint[] => { + const annotA: string = d[2]; + const annotB: string = d[4]; + const firstEntryPoints: EntryPoint[] = d[6]; + const secondEntryPoints: EntryPoint[] = d[8]; + const pairedEntryPoints: EntryPoint[] = []; + + for (const firstEntryPoint of firstEntryPoints) { + for (const secondEntryPoint of secondEntryPoints) { + const pairedEntryPoint: EntryPoint = { + name: getTypeAnnotation(annotA.toString(), annotB.toString()), + parameters: firstEntryPoint.parameters.concat(secondEntryPoint.parameters), + structure: `(Pair ${firstEntryPoint.structure} ${secondEntryPoint.structure})`, + generateInvocationString: firstEntryPoint.generateInvocationString, + generateInvocationPair: firstEntryPoint.generateInvocationPair, + generateSampleInvocation: firstEntryPoint.generateSampleInvocation + } + pairedEntryPoints.push(pairedEntryPoint); + } + } + + return pairedEntryPoints; + } + + const mergePairWithAnnot = (d: any): EntryPoint[] => { + const annot: string = d[2]; + const firstEntryPoints: EntryPoint[] = d[4]; + const secondEntryPoints: EntryPoint[] = d[6]; + const pairedEntryPoints: EntryPoint[] = []; + + for (const firstEntryPoint of firstEntryPoints) { + for (const secondEntryPoint of secondEntryPoints) { + const name = getTypeAnnotation(annot.toString()) || getFieldAnnotation(annot.toString()); + const pairedEntryPoint: EntryPoint = { + name: name || undefined, + parameters: firstEntryPoint.parameters.concat(secondEntryPoint.parameters), + structure: `(Pair ${firstEntryPoint.structure} ${secondEntryPoint.structure})`, + generateInvocationString: firstEntryPoint.generateInvocationString, + generateInvocationPair: firstEntryPoint.generateInvocationPair, + generateSampleInvocation: firstEntryPoint.generateSampleInvocation // TODO + } + pairedEntryPoints.push(pairedEntryPoint); + } + } + + return pairedEntryPoints; + } + + const mergePair = (d: any): EntryPoint[] => { + const firstEntryPoints: EntryPoint[] = d[2]; + const secondEntryPoints: EntryPoint[] = d[4]; + const pairedEntryPoints: EntryPoint[] = []; + + for (const firstEntryPoint of firstEntryPoints) { + for (const secondEntryPoint of secondEntryPoints) { + const pairedEntryPoint: EntryPoint = { + name: undefined, + parameters: firstEntryPoint.parameters.concat(secondEntryPoint.parameters), + structure: `(Pair ${firstEntryPoint.structure} ${secondEntryPoint.structure})`, + generateInvocationString: firstEntryPoint.generateInvocationString, + generateInvocationPair: firstEntryPoint.generateInvocationPair, + generateSampleInvocation: firstEntryPoint.generateSampleInvocation // TODO + } + pairedEntryPoints.push(pairedEntryPoint); + } + } + + return pairedEntryPoints; + } + + // + + const recordSingleArgDataWithTwoAnnot = (d: any): EntryPoint[] => { + const singleArgData: string = d[0].toString(); + const annotA: string = d[2].toString(); + const annotB: string = d[4].toString(); + const entryPoints: EntryPoint[] = d[6]; + + entryPoints[0].name = getFieldAnnotation(annotA, annotB); + entryPoints[0].parameters[0].constituentType = entryPoints[0].parameters[0].type; + if (singleArgData === 'option') { entryPoints[0].parameters[0].optional = true; } + entryPoints[0].parameters[0].type = `${singleArgData} (${entryPoints[0].parameters[0].type})`; + entryPoints[0].structure = `(${entryPoints[0].structure})`; + + return entryPoints; + } + + const recordSingleArgDataWithAnnot = (d: any): EntryPoint[] => { + const singleArgData: string = d[0].toString(); + const annot: string = d[2].toString(); + const entryPoints: EntryPoint[] = d[4]; + + entryPoints[0].name = getFieldAnnotation(annot); + entryPoints[0].parameters[0].constituentType = entryPoints[0].parameters[0].type; + if (singleArgData === 'option') { entryPoints[0].parameters[0].optional = true; } + entryPoints[0].parameters[0].type = `${singleArgData} (${entryPoints[0].parameters[0].type})`; + entryPoints[0].structure = `(${entryPoints[0].structure})`; + + return entryPoints; + } + + const recordSingleArgData = (d: any): EntryPoint[] => { + const singleArgData: string = d[0].toString(); + const entryPoints: EntryPoint[] = d[2]; + + entryPoints[0].parameters[0].constituentType = entryPoints[0].parameters[0].type; + if (singleArgData === 'option') { entryPoints[0].parameters[0].optional = true; } + entryPoints[0].parameters[0].type = `${singleArgData} (${entryPoints[0].parameters[0].type})`; + entryPoints[0].structure = `(${entryPoints[0].structure})`; + + return entryPoints; + } + + // + + const recordDoubleArgDataWithTwoAnnot = (d: any): EntryPoint[] => { + const doubleArgData: string = d[0].toString(); + const annotA: string = d[2].toString(); + const annotB: string = d[4].toString(); + const firstEntryPoints: EntryPoint[] = d[6]; + const secondEntryPoints: EntryPoint[] = d[8]; + + firstEntryPoints[0].name = getFieldAnnotation(annotA, annotB); + firstEntryPoints[0].parameters[0].type = `${doubleArgData} (${firstEntryPoints[0].parameters[0].type}) (${secondEntryPoints[0].parameters[0].type})`; + firstEntryPoints[0].structure = `(${firstEntryPoints[0].structure})`; + + return firstEntryPoints; + } + + const recordDoubleArgDataWithAnnot = (d: any): EntryPoint[] => { + const doubleArgData: string = d[0].toString(); + const annot: string = d[2].toString(); + const firstEntryPoints: EntryPoint[] = d[4]; + const secondEntryPoints: EntryPoint[] = d[6]; + + firstEntryPoints[0].name = getFieldAnnotation(annot); + firstEntryPoints[0].parameters[0].type = `${doubleArgData} (${firstEntryPoints[0].parameters[0].type}) (${secondEntryPoints[0].parameters[0].type})`; + firstEntryPoints[0].structure = `(${firstEntryPoints[0].structure})`; + + return firstEntryPoints; + } + + const recordDoubleArgData = (d: any): EntryPoint[] => { + const doubleArgData: string = d[0].toString(); + const firstEntryPoints: EntryPoint[] = d[2]; + const secondEntryPoints: EntryPoint[] = d[4]; + + firstEntryPoints[0].parameters[0].type = `${doubleArgData} (${firstEntryPoints[0].parameters[0].type}) (${secondEntryPoints[0].parameters[0].type})`; + firstEntryPoints[0].structure = `(${firstEntryPoints[0].structure})`; + + return firstEntryPoints; + } + + // + + const recordData = (d: string[]): EntryPoint[] => { + let parameterName: string | undefined = undefined; + let entryPointName: string | undefined = undefined; + + if (d.length >= 3) { + const annot = d[2].toString(); + + if (annot.charAt(0) === '%') { + entryPointName = formatFieldAnnotation(annot); + } else { + parameterName = formatTypeAnnotation(annot); + } + } + + if (d.length === 5) { + const anotherAnnot = d[4].toString(); + + if (anotherAnnot.startsWith('%') && entryPointName === undefined) { + entryPointName = formatFieldAnnotation(anotherAnnot); + } + if (anotherAnnot.startsWith(':') && parameterName === undefined) { + parameterName = formatTypeAnnotation(anotherAnnot); + } + } + + const parameter: Parameter = { + name: parameterName || entryPointName, + type: d[0].toString() + }; + + const entryPoint: EntryPoint = { + name: entryPointName, + parameters: [parameter], + structure: '$PARAM', + generateInvocationString(...vars: any[]): string { // TODO: check double-quotes on string-like parameters; support for map type + if (this.parameters.length !== vars.length) { throw new Error(`Incorrect number of parameters provided; expected ${this.parameters.length}, got ${vars.length}`); } + let invocationParameter: string = this.structure; + for (let i = 0 ; i < this.parameters.length; i++) { + let val = vars[i]; + + if (this.parameters[i].type === 'unit') { val = 'Unit'; } + + if (this.parameters[i].type.startsWith('list')) { + if (!Array.isArray(val)) { throw new Error(`${JSON.stringify(this.parameters[i])} requires an array value`); } + val = `{${val.join('; ')}}`; + } + + if (this.parameters[i].optional && vars[i]) { + val = `Some ${val}`; + } else if (this.parameters[i].optional && !vars[i]) { + val = 'None'; + } + + invocationParameter = invocationParameter.replace('$PARAM', val); + } + return invocationParameter; + }, + generateInvocationPair(...vars: any[]): any { + let param = this.generateInvocationString(...vars); + + while (param.startsWith('(Left ') || param.startsWith('(Right ')) { + if (param.startsWith('(Left ')) { + param = param.slice(6, -1); + } + if (param.startsWith('(Right ')) { + param = param.slice(7, -1); + } + } + return { entrypoint: this.name, parameters: param }; + }, + generateSampleInvocation(): string { + const params = this.parameters.map(p => { + switch (p.type) { + case 'string': { return '"Tacos"'; } + case 'int': { return -1; } + case 'nat': { return 99; } + case 'address': { return '"KT1EGbAxguaWQFkV3Egb2Z1r933MWuEYyrJS"'; } + case 'key_hash': { return '"tz1SQnJaocpquTztY3zMgydTPoQBBQrDGonJ"'; } + case 'timestamp': { return `"${(new Date()).toISOString()}"`} + case 'mutez': { return 500000; } + case 'unit': { return 'Unit'; } + case 'bytes': + case 'bool': + case 'signature': + case 'key': + case 'operation': + case 'chain_id': + default: { return p.type; } + } + }); + + return this.generateInvocationString(...params); + + } + }; + + return [entryPoint]; + } + + const getFieldAnnotation = (...annot: string[]) => { + const fa = annot.find(a => a.startsWith('%')); + + return !!fa ? formatFieldAnnotation(fa): undefined; + } + + const getTypeAnnotation = (...annot: string[]) => { + const ta = annot.find(a => a.startsWith(':')); + + return !!ta ? formatTypeAnnotation(ta): undefined; + } + + const formatFieldAnnotation = (annot: string) => { + if (!annot.startsWith('%')) { throw new Error(`${annot} must start with '%'`); } + + return annot.replace(/^%_Liq_entry_/, '').replace('%', ''); + } + + const formatTypeAnnotation = (annot: string) => { + if (!annot.startsWith(':')) { throw new Error(`${annot} must start with ':'`); } + + return annot.replace(':', ''); + } +%} \ No newline at end of file diff --git a/grammar/tezos/Micheline.ne b/ConseilJS-core/grammar/tezos/Micheline.ne similarity index 97% rename from grammar/tezos/Micheline.ne rename to ConseilJS-core/grammar/tezos/Micheline.ne index 362f89e0..a8194db1 100644 --- a/grammar/tezos/Micheline.ne +++ b/ConseilJS-core/grammar/tezos/Micheline.ne @@ -1,8 +1,11 @@ +@preprocessor typescript + @{% const moo = require("moo"); const bigInt = require("big-integer"); -const MichelineKeywords = ['"parameter"', '"storage"', '"code"', '"False"', '"Elt"', '"Left"', '"None"', '"Pair"', '"Right"', '"Some"', '"True"', '"Unit"', '"PACK"', '"UNPACK"', '"BLAKE2B"', '"SHA256"', '"SHA512"', '"ABS"', '"ADD"', '"AMOUNT"', '"AND"', '"BALANCE"', '"CAR"', '"CDR"', '"CHECK_SIGNATURE"', '"COMPARE"', '"CONCAT"', '"CONS"', '"CREATE_ACCOUNT"', '"CREATE_CONTRACT"', '"IMPLICIT_ACCOUNT"', '"DIP"', '"DROP"', '"DUP"', '"EDIV"', '"EMPTY_MAP"', '"EMPTY_SET"', '"EQ"', '"EXEC"', '"FAILWITH"', '"GE"', '"GET"', '"GT"', '"HASH_KEY"', '"IF"', '"IF_CONS"', '"IF_LEFT"', '"IF_NONE"', '"INT"', '"LAMBDA"', '"LE"', '"LEFT"', '"LOOP"', '"LSL"', '"LSR"', '"LT"', '"MAP"', '"MEM"', '"MUL"', '"NEG"', '"NEQ"', '"NIL"', '"NONE"', '"NOT"', '"NOW"', '"OR"', '"PAIR"', '"PUSH"', '"RIGHT"', '"SIZE"', '"SOME"', '"SOURCE"', '"SENDER"', '"SELF"', '"STEPS_TO_QUOTA"', '"SUB"', '"SWAP"', '"TRANSFER_TOKENS"', '"SET_DELEGATE"', '"UNIT"', '"UPDATE"', '"XOR"', '"ITER"', '"LOOP_LEFT"', '"ADDRESS"', '"CONTRACT"', '"ISNAT"', '"CAST"', '"RENAME"', '"bool"', '"contract"', '"int"', '"key"', '"key_hash"', '"lambda"', '"list"', '"map"', '"big_map"', '"nat"', '"option"', '"or"', '"pair"', '"set"', '"signature"', '"string"', '"bytes"', '"mutez"', '"timestamp"', '"unit"', '"operation"', '"address"', '"SLICE"']; +// taken from https://gitlab.com/nomadic-labs/tezos, lib_protocol/michelson_v1_primitives.ml, prim_encoding enum +const MichelineKeywords = ['"parameter"', '"storage"', '"code"', '"False"', '"Elt"', '"Left"', '"None"', '"Pair"', '"Right"', '"Some"', '"True"', '"Unit"', '"PACK"', '"UNPACK"', '"BLAKE2B"', '"SHA256"', '"SHA512"', '"ABS"', '"ADD"', '"AMOUNT"', '"AND"', '"BALANCE"', '"CAR"', '"CDR"', '"CHECK_SIGNATURE"', '"COMPARE"', '"CONCAT"', '"CONS"', '"CREATE_ACCOUNT"', '"CREATE_CONTRACT"', '"IMPLICIT_ACCOUNT"', '"DIP"', '"DROP"', '"DUP"', '"EDIV"', '"EMPTY_MAP"', '"EMPTY_SET"', '"EQ"', '"EXEC"', '"FAILWITH"', '"GE"', '"GET"', '"GT"', '"HASH_KEY"', '"IF"', '"IF_CONS"', '"IF_LEFT"', '"IF_NONE"', '"INT"', '"LAMBDA"', '"LE"', '"LEFT"', '"LOOP"', '"LSL"', '"LSR"', '"LT"', '"MAP"', '"MEM"', '"MUL"', '"NEG"', '"NEQ"', '"NIL"', '"NONE"', '"NOT"', '"NOW"', '"OR"', '"PAIR"', '"PUSH"', '"RIGHT"', '"SIZE"', '"SOME"', '"SOURCE"', '"SENDER"', '"SELF"', '"STEPS_TO_QUOTA"', '"SUB"', '"SWAP"', '"TRANSFER_TOKENS"', '"SET_DELEGATE"', '"UNIT"', '"UPDATE"', '"XOR"', '"ITER"', '"LOOP_LEFT"', '"ADDRESS"', '"CONTRACT"', '"ISNAT"', '"CAST"', '"RENAME"', '"bool"', '"contract"', '"int"', '"key"', '"key_hash"', '"lambda"', '"list"', '"map"', '"big_map"', '"nat"', '"option"', '"or"', '"pair"', '"set"', '"signature"', '"string"', '"bytes"', '"mutez"', '"timestamp"', '"unit"', '"operation"', '"address"', '"SLICE"', '"DIG"', '"DUG"', '"EMPTY_BIG_MAP"', '"APPLY"', '"chain_id"', '"CHAIN_ID"']; const lexer = moo.compile({ keyword: MichelineKeywords, @@ -173,8 +176,6 @@ const primArgAnnToHex = d => { return prefix + prim + args + ann; } -// 10 - const encodePrimitive = p => { return ('00' + MichelineKeywords.indexOf(p).toString(16)).slice(-2); } @@ -188,7 +189,7 @@ const writeSignedInt = value => { const n = bigInt(value).abs(); const l = n.bitLength().toJSNumber(); - let arr = []; + let arr: any = []; let v = n; for (let i = 0; i < l; i += 7) { let byte = bigInt.zero; diff --git a/ConseilJS-core/grammar/tezos/Michelson.ne b/ConseilJS-core/grammar/tezos/Michelson.ne new file mode 100644 index 00000000..cc9604e0 --- /dev/null +++ b/ConseilJS-core/grammar/tezos/Michelson.ne @@ -0,0 +1,625 @@ +@preprocessor typescript + +@{% +const moo = require("moo"); + +/* + Michelson references: + https://tezos.gitlab.io/whitedoc/michelson.html#full-grammar + https://michelson.nomadic-labs.com/ +*/ + +const macroCADRconst = /C[AD]+R/; +const macroSETCADRconst = /SET_C[AD]+R/; +const macroDIPconst = /DII+P/; +const macroDUPconst = /DUU+P/; +const DIPmatcher = new RegExp(macroDIPconst); +const DUPmatcher = new RegExp(macroDUPconst); +const macroASSERTlistConst = ['ASSERT', 'ASSERT_EQ', 'ASSERT_NEQ', 'ASSERT_GT', 'ASSERT_LT', 'ASSERT_GE', 'ASSERT_LE', 'ASSERT_NONE', 'ASSERT_SOME', 'ASSERT_LEFT', 'ASSERT_RIGHT', 'ASSERT_CMPEQ', 'ASSERT_CMPNEQ', 'ASSERT_CMPGT', 'ASSERT_CMPLT', 'ASSERT_CMPGE', 'ASSERT_CMPLE']; +const macroIFCMPlist = ['IFCMPEQ', 'IFCMPNEQ', 'IFCMPLT', 'IFCMPGT', 'IFCMPLE', 'IFCMPGE']; +const macroCMPlist = ['CMPEQ', 'CMPNEQ', 'CMPLT', 'CMPGT', 'CMPLE', 'CMPGE']; +const macroIFlist = ['IFEQ', 'IFNEQ', 'IFLT', 'IFGT', 'IFLE', 'IFGE']; + +const lexer = moo.compile({ + annot: /[\@\%\:][a-z_A-Z0-9]+/, + lparen: '(', + rparen: ')', + lbrace: '{', + rbrace: '}', + ws: /[ \t]+/, + semicolon: ";", + bytes: /0x[0-9a-fA-F]+/, + number: /-?[0-9]+(?!x)/, + parameter: [ 'parameter' , 'Parameter'], + storage: ['Storage', 'storage'], + code: ['Code', 'code'], + comparableType: ['int', 'nat', 'string', 'bytes', 'mutez', 'bool', 'key_hash', 'timestamp', 'chain_id'], + constantType: ['key', 'unit', 'signature', 'operation', 'address'], + singleArgType: ['option', 'list', 'set', 'contract'], + doubleArgType: ['pair', 'or', 'lambda', 'map', 'big_map'], + baseInstruction: ['ABS', 'ADD', 'ADDRESS', 'AMOUNT', 'AND', 'BALANCE', 'BLAKE2B', 'CAR', 'CAST', 'CDR', 'CHECK_SIGNATURE', + 'COMPARE', 'CONCAT', 'CONS', 'CONTRACT', /*'CREATE_CONTRACT',*/ 'DIP', /*'DROP',*/ /*'DUP',*/ 'EDIV', /*'EMPTY_MAP',*/ + 'EMPTY_SET', 'EQ', 'EXEC', 'FAIL', 'FAILWITH', 'GE', 'GET', 'GT', 'HASH_KEY', 'IF', 'IF_CONS', 'IF_LEFT', 'IF_NONE', + 'IF_RIGHT', 'IMPLICIT_ACCOUNT', 'INT', 'ISNAT', 'ITER', 'LAMBDA', 'LE', 'LEFT', 'LOOP', 'LOOP_LEFT', 'LSL', 'LSR', 'LT', + 'MAP', 'MEM', 'MUL', 'NEG', 'NEQ', 'NIL', 'NONE', 'NOT', 'NOW', 'OR', 'PACK', 'PAIR', /*'PUSH',*/ 'REDUCE', 'RENAME', 'RIGHT', 'SELF', + 'SENDER', 'SET_DELEGATE', 'SHA256', 'SHA512', 'SIZE', 'SLICE', 'SOME', 'SOURCE', 'STEPS_TO_QUOTA', 'SUB', 'SWAP', + 'TRANSFER_TOKENS', 'UNIT', 'UNPACK', 'UPDATE', 'XOR', + 'UNPAIR', 'UNPAPAIR', // TODO: macro + 'IF_SOME', // TODO: macro + 'IFCMPEQ', 'IFCMPNEQ', 'IFCMPLT', 'IFCMPGT', 'IFCMPLE', 'IFCMPGE', 'CMPEQ', 'CMPNEQ', 'CMPLT', 'CMPGT', 'CMPLE', + 'CMPGE', 'IFEQ', 'NEQ', 'IFLT', 'IFGT', 'IFLE', 'IFGE', // TODO: should be separate + /*'DIG',*/ /*'DUG',*/ 'EMPTY_BIG_MAP', 'APPLY', 'CHAIN_ID' + ], + macroCADR: macroCADRconst, + macroDIP: macroDIPconst, + macroDUP: macroDUPconst, + macroSETCADR: macroSETCADRconst, + macroASSERTlist: macroASSERTlistConst, + constantData: ['Unit', 'True', 'False', 'None', 'instruction'], + singleArgData: ['Left', 'Right', 'Some'], + doubleArgData: ['Pair'], + elt: "Elt", + word: /[a-zA-Z_0-9]+/, + string: /"(?:\\["\\]|[^\n"\\])*"/ +}); +%} + +# Pass your lexer object using the @lexer option: +@lexer lexer + +# Main endpoint, parameter, storage, and code are necessary for user usage. Instruction, data, and type are for testing purposes. +main -> instruction {% id %} | data {% id %} | type {% id %} | parameter {% id %} | storage {% id %} | code {% id %} | script {% id %} | parameterValue {% id %} | storageValue {% id %} | typeData {% id %} +script -> parameter _ storage _ code {% scriptToJson %} + +parameterValue -> %parameter _ typeData _ semicolons {% singleArgKeywordToJson %} +storageValue -> %storage _ typeData _ semicolons {% singleArgKeywordToJson %} + +parameter -> %parameter _ type _ semicolons {% singleArgKeywordToJson %} +storage -> %storage _ type _ semicolons {% singleArgKeywordToJson %} +code -> %code _ subInstruction _ semicolons _ {% d => d[2] %} + | %code _ "{};" {% d => "code {}" %} + +# Grammar of a Michelson type +type -> + %comparableType {% keywordToJson %} + | %constantType {% keywordToJson %} + | %singleArgType _ type {% singleArgKeywordToJson %} + | %lparen _ %singleArgType _ type _ %rparen {% singleArgKeywordWithParenToJson %} + | %lparen _ %singleArgType _ %lparen _ type _ %rparen _ %rparen {% singleArgKeywordWithParenToJson %} + | %doubleArgType _ type _ type {% doubleArgKeywordToJson %} + | %lparen _ %doubleArgType _ type _ type _ %rparen {% doubleArgKeywordWithParenToJson %} + | %comparableType (_ %annot):+ {% keywordToJson %} + | %constantType (_ %annot):+ {% keywordToJson %} + | %lparen _ %comparableType (_ %annot):+ _ %rparen {% comparableTypeToJson %} + | %lparen _ %constantType (_ %annot):+ _ %rparen {% comparableTypeToJson %} + | %lparen _ %singleArgType (_ %annot):+ _ type %rparen {% singleArgTypeKeywordWithParenToJson %} + | %lparen _ %doubleArgType (_ %annot):+ _ type _ type %rparen {% doubleArgTypeKeywordWithParenToJson %} + +typeData -> + %singleArgType _ typeData {% singleArgKeywordToJson %} + | %lparen _ %singleArgType _ typeData _ %rparen {% singleArgKeywordWithParenToJson %} + | %doubleArgType _ typeData _ typeData {% doubleArgKeywordToJson %} + | %lparen _ %doubleArgType _ typeData _ typeData _ %rparen {% doubleArgKeywordWithParenToJson %} + | subTypeData {% id %} + | subTypeElt {% id %} + | %number {% intToJson %} + | %string {% stringToJson %} + | %lbrace _ %rbrace {% d => [] %} + +# Grammar for michelson data. +data -> + %constantData {% keywordToJson %} + | %singleArgData _ data {% singleArgKeywordToJson %} + | %doubleArgData _ data _ data {% doubleArgKeywordToJson %} + | subData {% id %} + | subElt {% id %} + | %string {% stringToJson %} + | %bytes {% bytesToJson %} + | %number {% intToJson %} + +# Helper grammar for list of michelson data types. +subData -> + %lbrace _ %rbrace {% d => "[]" %} + | "(" _ (data _):+ ")" {% instructionSetToJsonSemi %} + | "{" _ (data _ ";":? _):+ "}" {% dataListToJsonSemi %} + +# Helper grammar for list of pairs of michelson data types. +subElt -> + %lbrace _ %rbrace {% d => "[]" %} + | "{" _ (elt ";":? _):+ "}" {% dataListToJsonSemi %} +elt -> %elt _ data _ data {% doubleArgKeywordToJson %} + +# Helper grammar for list of michelson data types. +subTypeData -> + %lbrace _ %rbrace {% d => "[]" %} + | "{" _ (data ";":? _):+ "}" {% instructionSetToJsonSemi %} + | "(" _ (data ";":? _):+ ")" {% instructionSetToJsonSemi %} + +# Helper grammar for list of pairs of michelson data types. +subTypeElt -> + %lbrace _ %rbrace {% d => "[]" %} + | "[{" _ (typeElt ";":? _):+ "}]" {% instructionSetToJsonSemi %} + | "[{" _ (typeElt _ ";":? _):+ "}]" {% instructionSetToJsonSemi %} + +typeElt -> %elt _ typeData _ typeData {% doubleArgKeywordToJson %} + +# Helper pattern for lists of michelson instructions +subInstruction -> + %lbrace _ %rbrace {% d => "" %} + | %lbrace _ instruction _ %rbrace {% d => d[2] %} + | %lbrace _ (instruction _ %semicolon _):+ instruction _ %rbrace {% instructionSetToJsonNoSemi %} #If last instruction doesn't have semicolon + | %lbrace _ (instruction _ %semicolon _):+ %rbrace {% instructionSetToJsonSemi %} #If last instruction has semicolon + # %lbrace _ instruction (_ ";" _ instruction):* _ ";":? _ %rbrace {% instructionListToJson %} + +instructions -> %baseInstruction | %macroCADR | %macroDIP | %macroDUP | %macroSETCADR | %macroASSERTlist + +# Grammar for michelson instruction. +instruction -> + instructions {% keywordToJson %} + | subInstruction {% id %} + | instructions (_ %annot):+ _ {% keywordToJson %} + | instructions _ subInstruction {% singleArgInstrKeywordToJson %} + | instructions (_ %annot):+ _ subInstruction {% singleArgTypeKeywordToJson %} + | instructions _ type {% singleArgKeywordToJson %} + | instructions (_ %annot):+ _ type {% singleArgTypeKeywordToJson %} + | instructions _ data {% singleArgKeywordToJson %} + | instructions (_ %annot):+ _ data {% singleArgTypeKeywordToJson %} + | instructions _ type _ type _ subInstruction {% tripleArgKeyWordToJson %} + | instructions (_ %annot):+ _ type _ type _ subInstruction {% tripleArgTypeKeyWordToJson %} + | instructions _ subInstruction _ subInstruction {% doubleArgInstrKeywordToJson %} + | instructions (_ %annot):+ _ subInstruction _ subInstruction {% doubleArgTypeKeywordToJson %} + | instructions _ type _ type {% doubleArgKeywordToJson %} + | instructions (_ %annot):+ _ type _ type {% doubleArgTypeKeywordToJson %} + | "PUSH" _ type _ data {% doubleArgKeywordToJson %} + | "PUSH" _ type _ %lbrace %rbrace {% pushToJson %} + | "PUSH" (_ %annot):+ _ type _ data {% pushWithAnnotsToJson %} + | "DIP" _ [0-9]:+ _ subInstruction {% dipnToJson %} + | "DUP" _ [0-9]:+ {% dupnToJson %} + | "DUP" {% keywordToJson %} + | "DUP" (_ %annot):+ _ {% keywordToJson %} + | "DIG" _ [0-9]:+ {% dignToJson %} + | "DUG" _ [0-9]:+ {% dignToJson %} + | "DROP" _ [0-9]:+ {% dropnToJson %} + | "DROP" {% keywordToJson %} + | "CREATE_CONTRACT" _ %lbrace _ parameter _ storage _ code _ %rbrace {% subContractToJson %} + | "EMPTY_MAP" _ type _ type {% doubleArgKeywordToJson %} + | "EMPTY_MAP" _ %lparen _ type _ %rparen _ type {% doubleArgParenKeywordToJson %} + +# Helper grammar for whitespace. +_ -> [\s]:* + +# Helper grammar for semicolons. +semicolons -> [;]:? + +@{% + const checkC_R = c_r => { + var pattern = new RegExp('^C(A|D)(A|D)+R$'); // TODO + return pattern.test(c_r); + } + + const expandC_R = (word, annot) => { + var expandedC_R = word.slice(1, -1).split('').map(c => (c === 'A' ? '{ "prim": "CAR" }' : '{ "prim": "CDR" }')); + + if (annot != null) { + const lastChar = word.slice(-2, -1); + if (lastChar === 'A') { + expandedC_R[expandedC_R.length-1] = `{ "prim": "CAR", "annots": [${annot}] }` + } else if (lastChar === 'D') { + expandedC_R[expandedC_R.length-1] = `{ "prim": "CDR", "annots": [${annot}] }` + } + } + + return `[${expandedC_R.join(', ')}]`; + } + + const check_compare = cmp => macroCMPlist.includes(cmp); + + const expand_cmp = (cmp, annot) => { + var op = cmp.substring(3) + var binary_op = keywordToJson([`${op}`]) + var compare = keywordToJson(['COMPARE']) + if (annot != null) { + binary_op = `{ "prim": "${op}", "annots": [${annot}] }`; + } + + return `[${compare}, ${binary_op}]`; + } + + const check_dup = dup => DUPmatcher.test(dup); + + const expand_dup = (dup, annot) => { + let t = ''; + if (DUPmatcher.test(dup)) { + const c = dup.length - 3; + for (let i = 0; i < c; i++) { t += '[{ "prim": "DIP", "args": [ '; } + + if (annot == null) { + t += `[{ "prim": "DUP" }]`; + } else { + t += `[{ "prim": "DUP", "annots": [${annot}] }]`; + } + + for (let i = 0; i < c; i++) { t += ' ] },{"prim":"SWAP"}]'; } + return t; + } + + throw new Error(''); + } + + const check_assert = assert => macroASSERTlistConst.includes(assert); + + const expand_assert = (assert, annot) => { + const annotation = !!annot ? `, "annots": [${annot}]` : ''; + switch (assert) { + case 'ASSERT': + return `[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPEQ': + return `[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPGE': + return `[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPGT': + return `[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPLE': + return `[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPLT': + return `[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPNEQ': + return `[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_EQ': + return `[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]]`; + case 'ASSERT_GE': + return `[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_GT': + return `[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_LE': + return `[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_LT': + return `[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_NEQ': + return `[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_NONE': // IF_NONE {} {FAIL} + return '[{"prim":"IF_NONE","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]'; + case 'ASSERT_SOME': // IF_NONE {FAIL} {RENAME @x} + return '[{"prim":"IF_NONE","args":[[[{"prim":"UNIT"},{"prim":"FAILWITH"}]],[]]}]'; + case 'ASSERT_LEFT': // IF_LEFT {RENAME @x} {FAIL} + return ''; + case 'ASSERT_RIGHT': // IF_LEFT {FAIL} {RENAME @x} + return ''; + default: + throw new Error(`Could not process ${assert}`); + } + } + + const check_fail = fail => fail === "FAIL"; + + const expand_fail = (fail, annot) => { + if (annot == null) { + return '[ { "prim": "UNIT" }, { "prim": "FAILWITH" } ]'; + } else { + return `[ { "prim": "UNIT" }, { "prim": "FAILWITH", "annots": [${annot}] } ]`; + } + } + + const check_if = ifStatement => (macroIFCMPlist.includes(ifStatement) || macroIFlist.includes(ifStatement) || ifStatement === 'IF_SOME'); // TODO: IF_SOME + + const expandIF = (ifInstr, ifTrue, ifFalse?, annot?) => { + const annotation = !!annot ? `, "annots": [${annot}]` : ''; + + switch (ifInstr) { + case 'IFCMPEQ': + return `[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPGE': + return `[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPGT': + return `[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPLE': + return `[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPLT': + return `[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPNEQ': + return `[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFEQ': + return `[{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFGE': + return `[{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFGT': + return `[{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFLE': + return `[{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFLT': + return `[{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFNEQ': + return `[{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IF_SOME': + return `[{"prim":"IF_NONE","args":[ [${ifFalse}], [${ifTrue}]]${annotation}}]`; + default: + throw new Error(`Could not process ${ifInstr}`); + } + } + + const check_dip = dip => DIPmatcher.test(dip); + + const expandDIP = (dip, instruction, annot?) => { + let t = ''; + if (DIPmatcher.test(dip)) { + const c = dip.length - 2; + for (let i = 0; i < c; i++) { t += '[{ "prim": "DIP", "args": [ '; } + t = `${t} [ ${instruction} ] ]`; + if (!!annot) { t = `${t}, "annots": [${annot}]`; } + t += ' }]'; + for (let i = 0; i < c - 1; i++) { t += ' ] }]'; } + return t; + } + + throw new Error(`Unexpected parameter for DIP processing: ${dip}`); + } + + const check_other = word => (word == "UNPAIR" || word == "UNPAPAIR"); // TODO: dynamic matching + + //UNPAIR and annotations follows a nonstandard format described in docs, and is dependent on the number of + //annotations given to the command, right now we're hard coding to fix the multisig contract swiftly, but a + //more general solution is required in the longterm. + const expand_other = (word, annot) => { + if (word == 'UNPAIR') { + if (annot == null) { + return '[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]' + } else if (annot.length == 1) { + return `[ [ { "prim": "DUP" }, { "prim": "CAR", "annots": [${annot}] }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]` + } else if (annot.length == 2) { + return `[ [ { "prim": "DUP" }, { "prim": "CAR", "annots": [${annot[0]}] }, { "prim": "DIP", "args": [ [ { "prim": "CDR", "annots": [${annot[1]}] } ] ] } ] ]` + } else { + return ''; + } + } + + if (word == 'UNPAPAIR') { + if (annot == null) { + return `[ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], + {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]]}]]]}]`; + } else { + return `[ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], + {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]],"annots": [${annot}]}]]]}]`; + } + } + } + + const checkSetCadr = s => macroSETCADRconst.test(s); + + const expandSetCadr = (word, annot) => nestSetCadr(word.slice(5, -1)); + + const nestSetCadr = r => { + if (r.length === 0) { return ''; } + + const c = r.charAt(0); + if (r.length === 1) { + if (c === 'A') { + return '[{"prim": "CDR","annots":["@%%"]}, {"prim": "SWAP"}, {"prim": "PAIR","annots":["%","%@"]}]'; + } else if (c === 'D'){ + return '[{"prim": "CAR","annots":["@%%"]}, {"prim": "PAIR","annots":["%@","%"]}]'; + } + } + + if (c === 'A') { + return `[{"prim": "DUP"}, {"prim": "DIP", "args": [[{"prim": "CAR","annots":["@%%"]}, ${nestSetCadr(r.slice(1))}]]}, {"prim": "CDR","annots":["@%%"]}, {"prim": "SWAP"}, {"prim": "PAIR","annots":["%@","%@"]}]`; + } else if (c === 'D') { + return `[{"prim": "DUP"}, {"prim": "DIP", "args": [[{"prim": "CDR","annots":["@%%"]}, ${nestSetCadr(r.slice(1))}]]}, {"prim": "CAR","annots":["@%%"]}, {"prim": "PAIR","annots":["%@","%@"]}]`; + } + } + + const checkKeyword = word => { + if (check_assert(word)) { return true; } + if (check_compare(word)) { return true; } + if (check_dip(word)) { return true; } + if (check_dup(word)) { return true; } + if (check_fail(word)) { return true; } + if (check_if(word)) { return true; } + if (checkC_R(word)) { return true; } + if (check_other(word)) { return true; } + if (checkSetCadr(word)) { return true; } + } + + const expandKeyword = (word, annot) => { + if (checkC_R(word)) { return expandC_R(word, annot); } + if (check_assert(word)) { return expand_assert(word, annot); } + if (check_compare(word)) { return expand_cmp(word, annot); } + if (check_dip(word)) { return expandDIP(word, annot); } + if (check_dup(word)) { return expand_dup(word, annot); } + if (check_fail(word)) { return expand_fail(word, annot); } + if (check_if(word)) { return expandIF(word, annot); } + if (check_other(word)) { return expand_other(word, annot); } + if (checkSetCadr(word)) { return expandSetCadr(word, annot); } + } + + /** + * Given a int, convert it to JSON. + * Example: "3" -> { "int": "3" } + */ + const intToJson = d => `{ "int": "${parseInt(d[0])}" }`; + + /** + * Given a string, convert it to JSON. + * Example: "string" -> "{ "string": "blah" }" + */ + const stringToJson = d => `{ "string": ${d[0]} }`; + + /** + */ + const bytesToJson = d => `{ "bytes": "${d[0].toString().slice(2)}" }`; + + /** + * Given a keyword, convert it to JSON. + * Example: "int" -> "{ "prim" : "int" }" + */ + const keywordToJson = d => { + const word = d[0].toString(); + + if (d.length == 1) { + if (checkKeyword(word)) { + return [expandKeyword(word, null)]; + } else { + return `{ "prim": "${d[0]}" }`; + } + } else { + const annot = d[1].map(x => `"${x[1]}"`); + if (checkKeyword(word)) { + return [expandKeyword(word, annot)]; + } else { + return `{ "prim": "${d[0]}", "annots": [${annot}] }`; + } + } + } + + /** + * Given a keyword with one argument, convert it to JSON. + * Example: "option int" -> "{ prim: option, args: [int] }" + */ + const singleArgKeywordToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[2]} ] }`; + + const comparableTypeToJson = d => { + const annot = d[3].map(x => `"${x[1]}"`) + return `{ "prim": "${d[2]}", "annots": [${annot}] }`; + } + + const singleArgTypeKeywordWithParenToJson = d => { + const annot = d[3].map(x => `"${x[1]}"`) + return `{ "prim": "${d[2]}", "args": [ ${d[5]} ], "annots": [${annot}] }`; + } + + const singleArgInstrKeywordToJson = d => { + const word = `${d[0].toString()}` + if (check_dip(word)) { + return expandDIP(word, d[2]) + } else { + return `{ "prim": "${d[0]}", "args": [ [ ${d[2]} ] ] }`; + } + } + + const singleArgTypeKeywordToJson = d => { + const word = `${d[0].toString()}` + const annot = d[1].map(x => `"${x[1]}"`) + if (check_dip(word)) { + return expandDIP(word, d[2], annot) + } else { + return `{ "prim": "${d[0]}", "args": [ ${d[3]} ], "annots": [${annot}] }`; + } + } + + /** + * Given a keyword with one argument and parentheses, convert it to JSON. + * Example: "(option int)" -> "{ prim: option, args: [{prim: int}] }" + * Also: (option (mutez)) + */ + const singleArgKeywordWithParenToJson = d => `{ "prim": "${d[2]}", "args": [ ${d[(4 + ((d.length === 7) ? 0 : 2))]} ] }`; + + /** + * Given a keyword with two arguments, convert it into JSON. + * Example: "Pair unit instruction" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" + */ + const doubleArgKeywordToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]} ] }`; + const doubleArgParenKeywordToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[4]}, ${d[8]} ] }`; + + const doubleArgInstrKeywordToJson = d => { + const word = `${d[0].toString()}` + if (check_if(word)) { + return expandIF(word, d[2], d[4]) + } else { + return `{ "prim": "${d[0]}", "args": [ [${d[2]}], [${d[4]}] ] }`; + } + } + + /** + * Given a keyword with two arguments and parentheses, convert it into JSON. + * Example: "(Pair unit instruction)" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" + */ + const doubleArgKeywordWithParenToJson = d => `{ "prim": "${d[2]}", "args": [ ${d[4]}, ${d[6]} ] }`; + + /** + * Given a keyword with three arguments, convert it into JSON. + * Example: "LAMBDA key unit {DIP;}" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" + */ + const tripleArgKeyWordToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, [${d[6]}] ] }`; + + /** + * Given a keyword with three arguments and parentheses, convert it into JSON. + * Example: "(LAMBDA key unit {DIP;})" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" + */ + const tripleArgKeyWordWithParenToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, ${d[6]} ] }`; + + const nestedArrayChecker = x => { + if (Array.isArray(x) && Array.isArray(x[0])) { // handles double array nesting + return x[0]; + } else { + return x; + } + } + + /** + * Given a list of michelson instructions, convert it into JSON. + * Example: "{CAR; NIL operation; PAIR;}" -> + * [ '{ prim: CAR }', + * '{ prim: NIL, args: [{ prim: operation }] }', + * '{ prim: PAIR }' ] + */ + const instructionSetToJsonNoSemi = d => { return d[2].map(x => x[0]).concat(d[3]).map(x => nestedArrayChecker(x)); } + const instructionSetToJsonSemi = d => { return `${d[2].map(x => x[0]).map(x => nestedArrayChecker(x))}`; } + const dataListToJsonSemi = d => { return `[ ${d[2].map(x => x[0]).map(x => nestedArrayChecker(x))} ]`; } + + /** + * parameter, storage, code + */ + const scriptToJson = d => `[ ${d[0]}, ${d[2]}, { "prim": "code", "args": [ [ ${d[4]} ] ] } ]`; + + const doubleArgTypeKeywordToJson = d => { + const annot = d[1].map(x => `"${x[1]}"`) + return `{ "prim": "${d[0]}", "args": [ ${d[4]}, ${d[6]} ], "annots": [${annot}] }`; + } + + const doubleArgTypeKeywordWithParenToJson = d => { + const annot = d[3].map(x => `"${x[1]}"`) + return `{ "prim": "${d[2]}", "args": [ ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; + } + + const tripleArgTypeKeyWordToJson = d => { + const annot = d[1].map(x => `"${x[1]}"`) + return `{ "prim": "${d[0]}", "args": [ ${d[3]}, ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; + } + + const pushToJson = d => { + return `{ "prim": "${d[0]}", "args": [${d[2]}, []] }`; + } + + const pushWithAnnotsToJson = d => { + const annot = d[1].map(x => `"${x[1]}"`) + return `{ "prim": "PUSH", "args": [ ${d[3]}, ${d[5]} ], "annots": [${annot}] }`; + } + + const dipnToJson = d => (d.length > 4) ? `{ "prim": "${d[0]}", "args": [ { "int": "${d[2]}" }, [ ${d[4]} ] ] }` : `{ "prim": "${d[0]}", "args": [ ${d[2]} ] }`; + + const dupnToJson = d => { + const n = Number(d[2]); + + if (n === 1) { + return '{ "prim": "DUP" }'; + } else if (n === 2) { + return '[{ "prim": "DIP", "args": [[ {"prim": "DUP"} ]] }, { "prim": "SWAP" }]'; + } else { + return `[{ "prim": "DIP", "args": [ {"int": "${n - 1}"}, [{ "prim": "DUP" }] ] }, { "prim": "DIG", "args": [ {"int": "${n}"} ] }]`; + } + }; + + const dignToJson = d => `{ "prim": "${d[0]}", "args": [ { "int": "${d[2]}" } ] }`; + + const dropnToJson = d => `{ "prim": "${d[0]}", "args": [ { "int": "${d[2]}" } ] }`; + + const subContractToJson = d => `{ "prim":"CREATE_CONTRACT", "args": [ [ ${d[4]}, ${d[6]}, {"prim": "code" , "args":[ [ ${d[8]} ] ] } ] ] }`; + + const instructionListToJson = d => { + const instructionOne = [d[2]]; + const instructionList = d[3].map(x => x[3]); + return instructionOne.concat(instructionList).map(x => nestedArrayChecker(x)); + } +%} diff --git a/integration_test/ConseilMetadataClient.spec.ts b/ConseilJS-core/integration_test/ConseilMetadataClient.spec.ts similarity index 58% rename from integration_test/ConseilMetadataClient.spec.ts rename to ConseilJS-core/integration_test/ConseilMetadataClient.spec.ts index d67f41fb..491e3033 100644 --- a/integration_test/ConseilMetadataClient.spec.ts +++ b/ConseilJS-core/integration_test/ConseilMetadataClient.spec.ts @@ -1,45 +1,42 @@ import 'mocha'; -import {expect} from 'chai'; +import { expect } from 'chai'; import fetch from 'node-fetch'; import FetchSelector from '../src/utils/FetchSelector'; FetchSelector.setFetch(fetch); -import {ConseilMetadataClient} from '../src/reporting/ConseilMetadataClient' -import {servers} from "./servers"; - -const ConseilV2URL = servers.conseilServer; -const ConseilV2APIKey = servers.conseilApiKey; +import { ConseilMetadataClient } from '../src/reporting/ConseilMetadataClient' +import { conseilServer } from './TestAssets'; describe('ConseilJS API Wrapper for Conseil protocol v2 test suite', () => { it('retrieve list of available platforms', async () => { - const result = await ConseilMetadataClient.getPlatforms({url: ConseilV2URL, apiKey: ConseilV2APIKey}); + const result = await ConseilMetadataClient.getPlatforms(conseilServer); expect(result.map((v) => { return v.name})).to.contain('tezos'); }); it('retrieve list of available networks given a platform: tezos', async () => { - const result = await ConseilMetadataClient.getNetworks({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'tezos'); + const result = await ConseilMetadataClient.getNetworks(conseilServer, 'tezos'); expect(result[0].platform).to.equal('tezos') }); it('retrieve list of available entities for a platform/network combination', async () => { - const result = await ConseilMetadataClient.getEntities({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'tezos', 'alphanet'); + const result = await ConseilMetadataClient.getEntities(conseilServer, 'tezos', conseilServer.network); expect(result.length).to.greaterThan(1); }); it('retrieve list of available attributes for a platform/network/entity combination', async () => { - const result = await ConseilMetadataClient.getAttributes({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'tezos', 'alphanet', 'accounts'); + const result = await ConseilMetadataClient.getAttributes(conseilServer, 'tezos', conseilServer.network, 'accounts'); expect(result.length).to.greaterThan(1); }); it('retrieve list of available attribute values for an entity attribute for a platform/network combination', async () => { - const result = await ConseilMetadataClient.getAttributeValues({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'tezos', 'alphanet', 'accounts', 'spendable'); + const result = await ConseilMetadataClient.getAttributeValues(conseilServer, 'tezos', conseilServer.network, 'blocks', 'period_kind'); - expect(result.length).to.equal(2); - expect(result[0]).to.oneOf(['f', 't']); + expect(result.length).to.be.greaterThan(0); + expect(result[0]).to.oneOf(['proposal', 'testing']); }); -}); +}); \ No newline at end of file diff --git a/integration_test/LedgerUtils.spec.ts b/ConseilJS-core/integration_test/LedgerUtils.spec.ts similarity index 100% rename from integration_test/LedgerUtils.spec.ts rename to ConseilJS-core/integration_test/LedgerUtils.spec.ts diff --git a/ConseilJS-core/integration_test/TestAssets.ts b/ConseilJS-core/integration_test/TestAssets.ts new file mode 100644 index 00000000..5e98a068 --- /dev/null +++ b/ConseilJS-core/integration_test/TestAssets.ts @@ -0,0 +1,34 @@ +import { KeyStore, StoreType } from '../src/types/wallet/KeyStore'; +import { ConseilServerInfo } from '../src/types/conseil/QueryTypes'; + +export const faucetAccount = { // get yours at http://faucet.tzalpha.net + 'mnemonic': [ 'circle', 'train', 'snow', 'mandate', 'resist', 'hand', 'fiction', 'bean', 'harbor', 'helmet', 'cattle', 'pass', 'convince', 'sunny', 'tool' ], + 'secret': 'b42d8338853febc7384c8b162d86fc1cf22a2575', + 'amount': '777735031', + 'pkh': 'tz1ZmJch5fHBfgXf2YmGhvFEArH6my4JQUZd', + 'password': 'Qng3Q7vXWo', + 'email': 'upgypoyo.fcezugvj@tezos.example.org' +}; + +export const keys: KeyStore = { + publicKey: 'edpkushaNmbgnuKEkkjCPC7MgmVq5rC5KDBhUKrnahZLBs1FKXR3NV', + privateKey: 'edskRdaHf1fyn9bUy6iC8WwBvwGDynxuAKSA1MmA5qawQacNJuxN74n36A9t2CSfn6ni1Z2EyZVG4xr7cViodhTASp8uM82BrS', + publicKeyHash: 'tz1ZmJch5fHBfgXf2YmGhvFEArH6my4JQUZd', + seed: '', + storeType: StoreType.Fundraiser +}; + +export const transferAddress = 'tz1T72nyqnJWwxad6RQnh7imKQz7mzToamWd'; + +export const contractAddress = 'KT1HwpTJB74MwKLC413PZKpV69KtXw2idWen'; + +export const bakerAddress = 'tz1aWXP237BLwNHJcCD4b3DutCevhqq2T1Z9'; + +// get yours at https://nautilus-cloud.cryptonomic-infra.tech +export const tezosServer = ''; + +export const conseilServer: ConseilServerInfo = { + url: '', + apiKey: '', + network: 'babylonnet' +}; diff --git a/integration_test/TezosHardwareOperations.spec.ts b/ConseilJS-core/integration_test/TezosHardwareOperations.spec.ts similarity index 98% rename from integration_test/TezosHardwareOperations.spec.ts rename to ConseilJS-core/integration_test/TezosHardwareOperations.spec.ts index 27ce8c19..1ece6b76 100644 --- a/integration_test/TezosHardwareOperations.spec.ts +++ b/ConseilJS-core/integration_test/TezosHardwareOperations.spec.ts @@ -5,9 +5,7 @@ import {TezosNodeWriter} from "../src"; import {TezosLedgerWallet} from "../src/identity/tezos/TezosLedgerWallet"; import {HardwareDeviceType} from "../src/types/wallet/HardwareDeviceType"; -import {servers} from "./servers"; -const tezosURL = servers.tezosServer; // const derivationPathIndex = Math.floor(Math.random()*10).toString(); const derivationPathIndex = 0; const derivationPath = `44'/1729'/0'/0'/` + derivationPathIndex + `'`; diff --git a/integration_test/TezosHardwareWallet.spec.ts b/ConseilJS-core/integration_test/TezosHardwareWallet.spec.ts similarity index 100% rename from integration_test/TezosHardwareWallet.spec.ts rename to ConseilJS-core/integration_test/TezosHardwareWallet.spec.ts diff --git a/ConseilJS-core/integration_test/chain/tezos/BabylonDelegationHelper.spec.ts b/ConseilJS-core/integration_test/chain/tezos/BabylonDelegationHelper.spec.ts new file mode 100644 index 00000000..41242265 --- /dev/null +++ b/ConseilJS-core/integration_test/chain/tezos/BabylonDelegationHelper.spec.ts @@ -0,0 +1,57 @@ +import 'mocha'; +import { expect } from 'chai'; +import fetch from 'node-fetch'; + +import * as loglevel from 'loglevel'; +import LogSelector from '../../../src/utils/LoggerSelector'; +LogSelector.setLogger(loglevel.getLogger('conseiljs')); +LogSelector.setLevel('debug'); + +import FetchSelector from '../../../src/utils/FetchSelector'; +FetchSelector.setFetch(fetch); + +import { TezosConseilClient } from '../../../src/reporting/tezos/TezosConseilClient'; +import { BabylonDelegationHelper } from '../../../src/chain/tezos/contracts/BabylonDelegationHelper'; +import { tezosServer, conseilServer, keys, bakerAddress } from '../../TestAssets'; + +describe('BabylonDelegationHelper integration test suite', () => { + it('Deploy manager.tz P005 "upgrade" contract', async () => { + const nodeResult = await BabylonDelegationHelper.deployManagerContract(tezosServer, keys, bakerAddress, 20000, 500000); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = nodeResult["operationGroupID"].replace(/\"/g, '').replace(/\n/, ''); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Set a delegate on the "upgrade" contract', async () => { + const nodeResult = await BabylonDelegationHelper.setDelegate(tezosServer, keys, 'KT1PxkYcmUqjM6Giqu8WKhPyMB5mCVkvWrXg', 'tz3Q67aMz7gSMiQRcW729sXSfuMtkyAHYfqc', 20000); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = nodeResult["operationGroupID"].replace(/\"/g, '').replace(/\n/, ''); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Clear the delegate on the "upgrade" contract', async () => { + const nodeResult = await BabylonDelegationHelper.unSetDelegate(tezosServer, keys, 'KT1PxkYcmUqjM6Giqu8WKhPyMB5mCVkvWrXg', 20000); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = nodeResult["operationGroupID"].replace(/\"/g, '').replace(/\n/, ''); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Return delegated funds to the "manager" account', async () => { + const nodeResult = await BabylonDelegationHelper.withdrawDelegatedFunds(tezosServer, keys, 'KT1PxkYcmUqjM6Giqu8WKhPyMB5mCVkvWrXg', 20000, 250000); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = nodeResult["operationGroupID"].replace(/\"/g, '').replace(/\n/, ''); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Deposit additional funds into the "upgrade" contract', async () => { + const nodeResult = await BabylonDelegationHelper.depositDelegatedFunds(tezosServer, keys, 'KT1PxkYcmUqjM6Giqu8WKhPyMB5mCVkvWrXg', 20000, 250000) + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = nodeResult["operationGroupID"].replace(/\"/g, '').replace(/\n/, ''); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); +}); diff --git a/ConseilJS-core/integration_test/chain/tezos/TezosContractIntrospector.spec.ts b/ConseilJS-core/integration_test/chain/tezos/TezosContractIntrospector.spec.ts new file mode 100644 index 00000000..a12cb594 --- /dev/null +++ b/ConseilJS-core/integration_test/chain/tezos/TezosContractIntrospector.spec.ts @@ -0,0 +1,66 @@ +import 'mocha'; +import { expect } from 'chai'; +import fetch from 'node-fetch'; + +import * as loglevel from 'loglevel'; +import LogSelector from '../../../src/utils/LoggerSelector'; +LogSelector.setLogger(loglevel.getLogger('conseiljs')); + +import FetchSelector from '../../../src/utils/FetchSelector'; +FetchSelector.setFetch(fetch); + +import { TezosContractIntrospector } from '../../../src/chain/tezos/TezosContractIntrospector'; +import { TezosLanguageUtil } from '../../../src/chain/tezos/TezosLanguageUtil' +import { EntryPoint } from '../../../src/types/tezos/ContractIntrospectionTypes'; +import { ConseilQueryBuilder } from '../../../src/reporting/ConseilQueryBuilder'; +import { ConseilOperator, ConseilFunction, ConseilSortDirection } from '../../../src/types/conseil/QueryTypes'; +import { ConseilDataClient } from '../../../src/reporting/ConseilDataClient'; +import { conseilServer } from '../../TestAssets'; + +describe('TezosContractIntrospector integration test suite', () => { + it('Process on-chain contracts', async () => { + const cap = 500; + let contractQuery = ConseilQueryBuilder.blankQuery(); + contractQuery = ConseilQueryBuilder.addFields(contractQuery, 'account_id', 'script'); + contractQuery = ConseilQueryBuilder.addPredicate(contractQuery, 'account_id', ConseilOperator.STARTSWITH, ['KT1']); + contractQuery = ConseilQueryBuilder.addPredicate(contractQuery, 'script', ConseilOperator.ISNULL, [], true); + contractQuery = ConseilQueryBuilder.addAggregationFunction(contractQuery, 'account_id', ConseilFunction.count); + contractQuery = ConseilQueryBuilder.addOrdering(contractQuery, 'count_account_id', ConseilSortDirection.DESC) + contractQuery = ConseilQueryBuilder.setLimit(contractQuery, cap); + + const contractList = await ConseilDataClient.executeEntityQuery(conseilServer, 'tezos', conseilServer.network, 'accounts', contractQuery); + + const total = contractList.length; + let skipped = 0; + contractList.forEach(r => { + if (r['script'].startsWith('Unparsable code:')) { skipped++; return; } // accounting for invalid Conseil results + + try { + let p = TezosContractIntrospector.generateEntryPointsFromCode(r['script']); + console.log(`processed ${TezosLanguageUtil.preProcessMichelsonScript(r['script'])[0]}`); + if (p.length === 0) { + console.log('no entry points found'); + } else { + console.log(`entry point${p.length === 1 ? '' : 's' }:`); + p.forEach(e => { console.log(` ${formatEntryPoint(e)}`); }); + } + } catch (error) { + console.log(`error ${error}\n----\n${r['script']}\n----\n`); + } + }); + + console.log(`found ${total} contracts${skipped ? ', skipped ' + skipped : ''}${cap === total ? ', more may be available' : ''}`); + }); +}); + +function formatEntryPoint(entryPoint: EntryPoint){ + let f = entryPoint.name ? `${entryPoint.name}: ` : '' ; + + let args = entryPoint.structure; + for (let i = 0 ; i < entryPoint.parameters.length; i++) { + let param = entryPoint.parameters[i]; + args = args.replace('$PARAM', `${param.type}${param.name ? ' %' + param.name : ''}`); + } + + return f + args; +} \ No newline at end of file diff --git a/ConseilJS-core/integration_test/chain/tezos/TezosNodeReader.spec.ts b/ConseilJS-core/integration_test/chain/tezos/TezosNodeReader.spec.ts new file mode 100644 index 00000000..8e537825 --- /dev/null +++ b/ConseilJS-core/integration_test/chain/tezos/TezosNodeReader.spec.ts @@ -0,0 +1,63 @@ +import 'mocha'; +import { expect } from 'chai'; +import fetch from 'node-fetch'; + +import * as loglevel from 'loglevel'; +import LogSelector from '../../../src/utils/LoggerSelector'; +LogSelector.setLogger(loglevel.getLogger('conseiljs')); + +import FetchSelector from '../../../src/utils/FetchSelector'; +FetchSelector.setFetch(fetch); + +import { TezosNodeReader } from '../../../src/chain/tezos/TezosNodeReader'; +import { tezosServer, keys } from '../../TestAssets'; + +describe('TezosNodeReader integration test suite', () => { + it('Get chain head', async () => { + const result = await TezosNodeReader.getBlockHead(tezosServer); + + expect(result['header']['level']).to.be.greaterThan(1); + }); + + it('Get account counter', async () => { + const result = await TezosNodeReader.getCounterForAccount(tezosServer, keys.publicKeyHash); + + expect(result).to.be.greaterThan(1); + }); + + it('Get account reveal status', async () => { + const result = await TezosNodeReader.isManagerKeyRevealedForAccount(tezosServer, keys.publicKeyHash); + + expect(result).to.be.true; + }); + + it('Get account manager key', async () => { + const result = await TezosNodeReader.getAccountManagerForBlock(tezosServer, 'head', keys.publicKeyHash); + + expect(result).to.be.equal(keys.publicKey); + }); + + it('Get account info', async () => { + const result = await TezosNodeReader.getAccountForBlock(tezosServer, 'head', keys.publicKeyHash); + + expect(parseInt(result.balance, 10)).to.be.greaterThan(10000); + }); + + it('Get account spendable balance', async () => { + const result = await TezosNodeReader.getSpendableBalanceForAccount(tezosServer, keys.publicKeyHash); + + expect(result).to.be.greaterThan(10000); + }); + + it('Get account funding burn flag', async () => { + const result = await TezosNodeReader.isImplicitAndEmpty(tezosServer, keys.publicKeyHash); + + expect(result).to.be.false; + }); + + it('Get head', async () => { + const result = await TezosNodeReader.getBlock(tezosServer); + + expect(result.header.level).to.be.greaterThan(1); + }); +}); diff --git a/ConseilJS-core/integration_test/chain/tezos/TezosNodeWriter.spec.ts b/ConseilJS-core/integration_test/chain/tezos/TezosNodeWriter.spec.ts new file mode 100644 index 00000000..cd8df814 --- /dev/null +++ b/ConseilJS-core/integration_test/chain/tezos/TezosNodeWriter.spec.ts @@ -0,0 +1,159 @@ +import 'mocha'; +import { expect } from 'chai'; +import fetch from 'node-fetch'; + +import * as loglevel from 'loglevel'; +import LogSelector from '../../../src/utils/LoggerSelector'; +LogSelector.setLogger(loglevel.getLogger('conseiljs')); +LogSelector.setLevel('debug'); + +import FetchSelector from '../../../src/utils/FetchSelector'; +FetchSelector.setFetch(fetch); + +import { TezosNodeWriter} from '../../../src/chain/tezos/TezosNodeWriter'; +import { TezosNodeReader } from '../../../src/chain/tezos/TezosNodeReader'; +import { TezosLanguageUtil } from '../../../src/chain/tezos/TezosLanguageUtil'; +import { TezosWalletUtil} from '../../../src/identity/tezos/TezosWalletUtil'; +import { TezosConseilClient } from '../../../src/reporting/tezos/TezosConseilClient'; +import * as TezosTypes from '../../../src/types/tezos/TezosChainTypes'; +import * as TezosP2PMessageTypes from '../../../src/types/tezos/TezosP2PMessageTypes'; +import { tezosServer, conseilServer, faucetAccount, keys, transferAddress, bakerAddress, contractAddress } from '../../TestAssets'; + +function clearRPCOperationGroupHash(hash: string) { + return hash.replace(/\"/g, '').replace(/\n/, ''); +} + +describe('TezosNodeWriter integration test suite', () => { + it('Activate faucet account', async () => { + const faucetKeys = await TezosWalletUtil.unlockFundraiserIdentity(faucetAccount.mnemonic.join(' '), faucetAccount.email, faucetAccount.password, faucetAccount.pkh); + const nodeResult = await TezosNodeWriter.sendIdentityActivationOperation(tezosServer, faucetKeys, faucetAccount.secret); + expect(nodeResult["operationGroupID"]).to.exist; + }); + + it('Reveal faucet account', async () => { + const nodeResult = await TezosNodeWriter.sendKeyRevealOperation(tezosServer, keys, 50000); + expect(nodeResult["operationGroupID"]).to.exist; + }); + + it('Send XTZ to an account', async () => { + const nodeResult = await TezosNodeWriter.sendTransactionOperation(tezosServer, keys, transferAddress, 500123, 20000); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = clearRPCOperationGroupHash(nodeResult["operationGroupID"]); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Set implicit account delegate', async () => { + const nodeResult = await TezosNodeWriter.sendDelegationOperation(tezosServer, keys, bakerAddress, 10000); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = clearRPCOperationGroupHash(nodeResult["operationGroupID"]); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Originate a simple contract in Michelson', async () => { + const contract = `parameter string; + storage string; + code { CAR ; NIL operation ; PAIR }`; + const storage = '"Test"'; + const nodeResult = await TezosNodeWriter.sendContractOriginationOperation(tezosServer, keys, 10000, undefined, 10000, '', 10000, 20000, contract, storage, TezosTypes.TezosParameterFormat.Michelson); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = clearRPCOperationGroupHash(nodeResult["operationGroupID"]); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 30); + }); + + it('Originate a simple contract in Micheline', async () => { + const contract = `[ { "prim": "parameter", "args": [ { "prim": "string" } ] }, + { "prim": "storage", "args": [ { "prim": "string" } ] }, + { "prim": "code", + "args": + [ [ { "prim": "CAR" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ]`; + const storage = '{ "string": "hello" }'; + const nodeResult = await TezosNodeWriter.sendContractOriginationOperation(tezosServer, keys, 10000, undefined, 10000, '', 10000, 20000, contract, storage, TezosTypes.TezosParameterFormat.Micheline); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = clearRPCOperationGroupHash(nodeResult["operationGroupID"]); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Invoke a contract with a string literal Michelson parameter, default entry point', async () => { + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(tezosServer, keys, contractAddress, 10000, 10000, '', 1000, 100000, 'default', '"Cryptonomicon"', TezosTypes.TezosParameterFormat.Michelson); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = clearRPCOperationGroupHash(nodeResult["operationGroupID"]); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Invoke a contract with a complex Michelson parameter, blank entry point', async () => { + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(tezosServer, keys, contractAddress, 10000, 20000, '', 10000, 100000, '', '(Pair "message" (Pair "edsigtt7VBCeJjU9XtdCCPcV8VL3xe1XQHehk9Kg78Pxs3VZGXgHGGfktB71jUrK51tiJNybhUQidxxN48W4XWuRjjQwFJ17M1e" "edpkuqoemi1z8wjKxYCMvvshpFU7f71RUXhRyKudwLPBAdhqyj9epe"))', TezosTypes.TezosParameterFormat.Michelson); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = clearRPCOperationGroupHash(nodeResult["operationGroupID"]); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Invoke a contract with a Michelson lambda parameter, custom entry point', async () => { + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(tezosServer, keys, contractAddress, 10000, 20000, '', 10000, 100000, '', '{ DROP ; NIL operation ; PUSH key_hash "tz1aWXP237BLwNHJcCD4b3DutCevhqq2T1Z9" ; SOME ; SET_DELEGATE ; CONS }', TezosTypes.TezosParameterFormat.MichelsonLambda); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = clearRPCOperationGroupHash(nodeResult["operationGroupID"]); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Ping a contract on a blank entry point', async () => { + const nodeResult = await TezosNodeWriter.sendContractPing(tezosServer, keys, contractAddress, 20000, '', 10000, 100000, ''); + expect(nodeResult["operationGroupID"]).to.exist; + + const groupid = clearRPCOperationGroupHash(nodeResult["operationGroupID"]); + await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 5, 31); + }); + + it('Estimate transaction gas cost', async () => { + const counter = await TezosNodeReader.getCounterForAccount(tezosServer, keys.publicKeyHash) + 1; + + const transaction: TezosP2PMessageTypes.Transaction = { + destination: contractAddress, + amount: '0', + storage_limit: '100', + gas_limit: '20000', + counter: counter.toString(), + fee: '50000', + source: keys.publicKeyHash, + kind: 'transaction', + parameters: { + entrypoint: '', + value: JSON.parse(TezosLanguageUtil.translateMichelsonToMicheline('"Cryptonomicon-Cryptonomicon-Cryptonomicon"')) + } + }; + + const result = await TezosNodeWriter.testOperation(tezosServer, [transaction], keys); + + expect(result.length).to.equal(2); + expect(result[0]).to.be.greaterThan(10000); + expect(result[1]).to.be.greaterThan(-1); + }); + + /*it('Send a batch of transactions', async () => { + const destinationA = (await TezosWalletUtil.restoreIdentityWithSecretKey('edskRfEbB2JJCffvCFSVCYvKhz2bdp97esBsuUuNLQYZkZu9gFRU3GbcGBs8zRyoJVYh1pkyWRZfHbASuWzrPLDx9tnRwCeUqZ')).publicKeyHash; + const destinationB = (await TezosWalletUtil.restoreIdentityWithSecretKey('edskRtkDq2Z2Z9jMfYjiBvwqky6E7xK8uXxBVnSTdUTALeyqckSdkaSnLSCpx4HCNBBMoLcLo9254tYvBVeoPzfb92xWSHhTSb')).publicKeyHash; + + let operations = [ + { destination: destinationA, amount: '100000', storage_limit: '300', gas_limit: '10600', counter: '0', fee: '10000', source: keys.publicKeyHash, kind: 'transaction' }, + { destination: destinationB, amount: '100000', storage_limit: '300', gas_limit: '10600', counter: '0', fee: '10000', source: keys.publicKeyHash, kind: 'transaction' } + ]; + TezosNodeWriter.queueOperation(tezosServer, operations, keys); + + operations = [ + { destination: destinationA, amount: '100000', storage_limit: '300', gas_limit: '10600', counter: '0', fee: '10000', source: keys.publicKeyHash, kind: 'transaction' }, + ]; + TezosNodeWriter.queueOperation(tezosServer, operations, keys); + + await new Promise(resolve => setTimeout(resolve, 40 * 1000)); + + expect(TezosNodeWriter.getQueueStatus(tezosServer, keys)).to.equal(0); + });*/ +}); diff --git a/integration_test/chain/tezos/lexer/MichelsonParser.spec.ts b/ConseilJS-core/integration_test/chain/tezos/lexer/MichelsonParser.spec.ts similarity index 86% rename from integration_test/chain/tezos/lexer/MichelsonParser.spec.ts rename to ConseilJS-core/integration_test/chain/tezos/lexer/MichelsonParser.spec.ts index a5f95158..34296ee1 100644 --- a/integration_test/chain/tezos/lexer/MichelsonParser.spec.ts +++ b/ConseilJS-core/integration_test/chain/tezos/lexer/MichelsonParser.spec.ts @@ -8,16 +8,16 @@ import * as request from 'request-promise'; function michelsonToMicheline(code: string): string { const processedCode = code.trim().split('\n').map(l => l.replace(/\#[\s\S]+$/, '').trim()).join(' '); - const parser = new nearley.Parser(nearley.Grammar.fromCompiled(Michelson)); + const parser = new nearley.Parser(nearley.Grammar.fromCompiled(Michelson.default)); parser.feed(processedCode); return parser.results.join(' '); } -const baseURL = 'https://gitlab.com/tezos/tezos/raw/master/src/bin_client/test/contracts/attic'; +const baseURL = 'https://gitlab.com/tezos/tezos/tree/master/src/bin_client/test/contracts/attic'; const officialContractSamples = ['accounts.tz', 'add1.tz', 'add1_list.tz']; const michelineTranslations = {'accounts.tz': '', 'add1.tz': '', 'add1_list.tz': ''}; -describe('Michelson/Micheline transpiler tests', () => { +/*describe('Michelson/Micheline transpiler tests', () => { for (let i = 0; i < officialContractSamples.length; i++) { const contractName = officialContractSamples[i]; it(`Contract test: ${contractName}`, async () => { @@ -28,5 +28,4 @@ describe('Michelson/Micheline transpiler tests', () => { expect(michelsonToMicheline(code)).to.equal(michelineTranslations[contractName]); }); } -}); - \ No newline at end of file +});*/ diff --git a/ConseilJS-core/integration_test/identity/tezos/TezosLedgerWallet.spec.ts b/ConseilJS-core/integration_test/identity/tezos/TezosLedgerWallet.spec.ts new file mode 100644 index 00000000..e3cc11ff --- /dev/null +++ b/ConseilJS-core/integration_test/identity/tezos/TezosLedgerWallet.spec.ts @@ -0,0 +1,21 @@ +import 'mocha'; +import { expect } from 'chai'; + +import * as loglevel from 'loglevel'; +import LogSelector from '../../../src/utils/LoggerSelector'; +LogSelector.setLogger(loglevel.getLogger('conseiljs')); +LogSelector.setLevel('debug'); + +import { TezosLedgerWallet } from '../../../src/identity/tezos/TezosLedgerWallet'; +import {HardwareDeviceType} from "../../../src/types/wallet/HardwareDeviceType"; + +describe('Ledger hardware signer integration tests', () => { + it('unlockAddress', async () => { + const derivationPath = "44'/1729'/0'/0'"; + const result = await TezosLedgerWallet.unlockAddress(HardwareDeviceType.LedgerNanoS, derivationPath); + console.log(result); + + //expect(result['level']).to.be.greaterThan(52466, 'this may vary as the network changes'); + //expect(result['baker'].length).to.be.greaterThan(0) + }); +}); diff --git a/integration_test/reporting/ConseilDataClient.spec.ts b/ConseilJS-core/integration_test/reporting/ConseilDataClient.spec.ts similarity index 58% rename from integration_test/reporting/ConseilDataClient.spec.ts rename to ConseilJS-core/integration_test/reporting/ConseilDataClient.spec.ts index 784e9d78..2992a040 100644 --- a/integration_test/reporting/ConseilDataClient.spec.ts +++ b/ConseilJS-core/integration_test/reporting/ConseilDataClient.spec.ts @@ -1,17 +1,20 @@ import 'mocha'; -import {expect} from 'chai'; +import { expect } from 'chai'; import fetch from 'node-fetch'; +import * as loglevel from 'loglevel'; +import LogSelector from '../../src/utils/LoggerSelector'; +LogSelector.setLogger(loglevel.getLogger('conseiljs')); +LogSelector.setLevel('debug'); + import FetchSelector from '../../src/utils/FetchSelector'; FetchSelector.setFetch(fetch); -import {ConseilQueryBuilder} from "../../src/reporting/ConseilQueryBuilder"; -import {ConseilOperator, ConseilSortDirection, ConseilOutput} from "../../src/types/conseil/QueryTypes" -import {ConseilDataClient} from '../../src/reporting/ConseilDataClient' -import {servers} from "../servers"; +import { ConseilQueryBuilder } from "../../src/reporting/ConseilQueryBuilder"; +import { ConseilOperator, ConseilSortDirection, ConseilOutput } from "../../src/types/conseil/QueryTypes" +import { ConseilDataClient } from '../../src/reporting/ConseilDataClient' -const ConseilV2URL = servers.conseilServer; -const ConseilV2APIKey = servers.conseilApiKey; +import { conseilServer } from '../TestAssets'; describe('ConseilDataClient integration test suite', () => { it('Extract result set as csv', async () => { @@ -20,7 +23,7 @@ describe('ConseilDataClient integration test suite', () => { query = ConseilQueryBuilder.addOrdering(query, 'block_level', ConseilSortDirection.DESC); query = ConseilQueryBuilder.setLimit(query, 5); query = ConseilQueryBuilder.setOutputType(query, ConseilOutput.csv); - const result = await ConseilDataClient.executeEntityQuery({ url: ConseilV2URL, apiKey: ConseilV2APIKey }, 'tezos', 'alphanet', 'operations', query); + const result = await ConseilDataClient.executeEntityQuery(conseilServer, 'tezos', conseilServer.network, 'operations', query); expect(result.length).to.be.greaterThan(100); expect(result.toString().split('\n').length).to.equal(6); diff --git a/integration_test/TezosConseilClient.spec.ts b/ConseilJS-core/integration_test/reporting/tezos/TezosConseilClient.spec.ts similarity index 61% rename from integration_test/TezosConseilClient.spec.ts rename to ConseilJS-core/integration_test/reporting/tezos/TezosConseilClient.spec.ts index a2b46a98..12f0844d 100644 --- a/integration_test/TezosConseilClient.spec.ts +++ b/ConseilJS-core/integration_test/reporting/tezos/TezosConseilClient.spec.ts @@ -1,62 +1,71 @@ import 'mocha'; -import {expect} from 'chai'; +import { expect } from 'chai'; import fetch from 'node-fetch'; -import FetchSelector from '../src/utils/FetchSelector'; -FetchSelector.setFetch(fetch); - -import {ConseilQueryBuilder} from "../src/reporting/ConseilQueryBuilder"; -import {ConseilOperator, ConseilSortDirection} from "../src/types/conseil/QueryTypes" -import {TezosConseilClient} from '../src/reporting/tezos/TezosConseilClient' -import {OperationKindType} from "../src/types/tezos/TezosChainTypes"; -import {servers} from "./servers"; +import * as loglevel from 'loglevel'; +import LogSelector from '../../../src/utils/LoggerSelector'; +LogSelector.setLogger(loglevel.getLogger('conseiljs')); +LogSelector.setLevel('debug'); -const util = require('util'); +import FetchSelector from '../../../src/utils/FetchSelector'; +FetchSelector.setFetch(fetch); -const ConseilV2URL = servers.conseilServer; -const ConseilV2APIKey = servers.conseilApiKey; +import { ConseilQueryBuilder } from '../../../src/reporting/ConseilQueryBuilder'; +import { ConseilOperator, ConseilSortDirection } from '../../../src/types/conseil/QueryTypes' +import { TezosConseilClient } from '../../../src/reporting/tezos/TezosConseilClient' +import { OperationKindType } from '../../../src/types/tezos/TezosChainTypes'; +import { conseilServer } from '../../TestAssets'; describe('Tezos date interface test suite', () => { it('retrieve top block', async () => { - const result = await TezosConseilClient.getBlockHead({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet'); + const result = await TezosConseilClient.getBlockHead(conseilServer, conseilServer.network); - expect(result.length).to.equal(1); + expect(result['level']).to.be.greaterThan(52466, 'this may vary as the network changes'); + expect(result['baker'].length).to.be.greaterThan(0) }); it('retrieve a block by hash', async () => { - const result = await TezosConseilClient.getBlock({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet', 'BKnMKWCeJwRtetQwuY5HRtbrsXPLyACFrygdwnM8jxAYcYEVkdd'); + const result = await TezosConseilClient.getBlock(conseilServer, conseilServer.network, 'BKnMKWCeJwRtetQwuY5HRtbrsXPLyACFrygdwnM8jxAYcYEVkdd'); expect(result.length).to.equal(1); }); - it('retrieve an account by address', async () => { - const result = await TezosConseilClient.getAccount({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet', 'tz1UzDGcT9JAZnryiDJmvGnNRMg3WzVnjLrn'); + it('retrieve an operation group by hash', async () => { + const result = await TezosConseilClient.getOperationGroup(conseilServer, conseilServer.network, 'ooH1GMyC7zHRP7SJgqnjzoxs5DshEUrYNehAQm9j5PUxMA4TdeP'); expect(result.length).to.equal(1); }); - //TODO: getOperationGroup - //TODO: getOperationGroups + it('retrieve an operation group by hash', async () => { + let query = ConseilQueryBuilder.blankQuery(); + query = ConseilQueryBuilder.addPredicate(query, 'operation_group_hash', ConseilOperator.EQ, ['ooH1GMyC7zHRP7SJgqnjzoxs5DshEUrYNehAQm9j5PUxMA4TdeP'], false); + query = ConseilQueryBuilder.setLimit(query, 10); + + const result = await TezosConseilClient.getOperations(conseilServer, conseilServer.network, query); + + expect(result.length).to.equal(1); + }); + it('retrieve some blocks', async () => { let q = ConseilQueryBuilder.blankQuery(); q = ConseilQueryBuilder.addPredicate(q, 'level', ConseilOperator.LT, [1000], true); q = ConseilQueryBuilder.addOrdering(q, 'level', ConseilSortDirection.ASC); q = ConseilQueryBuilder.setLimit(q, 10); - const result = await TezosConseilClient.getBlocks({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet', q); + const result = await TezosConseilClient.getBlocks(conseilServer, conseilServer.network, q); expect(result.length).to.equal(10); - expect(parseInt(result[9]["level"])).to.greaterThan(parseInt(result[1]["level"])); - expect(result[9]["predecessor"]).to.equal(result[8]["hash"]); + expect(parseInt(result[9]['level'])).to.greaterThan(parseInt(result[1]['level'])); + expect(result[9]['predecessor']).to.equal(result[8]['hash']); }); - + it('retrieve a single an account', async () => { - var result = await TezosConseilClient.getAccount({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet', 'tz1XErrAm8vFBzu69UU74JUSbvsmvXiQBy6e'); + var result = await TezosConseilClient.getAccount(conseilServer, conseilServer.network, 'tz1bwSatfnvehPG8v5razwMJ7KzJXDBRtxwk'); expect(result.length).to.equal(1); - expect(result[0]['account_id']).to.equal('tz1XErrAm8vFBzu69UU74JUSbvsmvXiQBy6e', 'this test may fail based on alphanet state'); + expect(result[0]['account_id']).to.equal('tz1XErrAm8vFBzu69UU74JUSbvsmvXiQBy6e', 'this may vary as the network changes'); }); it('retrieve accounts for a manager address', async () => { @@ -65,12 +74,10 @@ describe('Tezos date interface test suite', () => { accountsquery = ConseilQueryBuilder.addPredicate(accountsquery, 'account_id', ConseilOperator.EQ, ['tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2'], true); accountsquery = ConseilQueryBuilder.addOrdering(accountsquery, 'block_level', ConseilSortDirection.DESC); accountsquery = ConseilQueryBuilder.setLimit(accountsquery, 300); - const result = await TezosConseilClient.getAccounts({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet', accountsquery); - - expect(result.length).to.equal(1, 'this test may fail based on alphanet state'); - expect(result[0]['account_id']).to.equal('KT1V3ri4nnNQTsG52ypMQhZsnZpJEDi6gB4J', 'this test may fail based on alphanet state'); + const result = await TezosConseilClient.getAccounts(conseilServer, conseilServer.network, accountsquery); - //console.log(util.inspect(accountsquery, {showHidden: false, depth: 5, colors: false, maxArrayLength: 100})); + expect(result.length).to.be.greaterThan(1, 'this may vary as the network changes'); + expect(result[0]['account_id']).to.equal('KT1SJdeXcP4KkVFF13SYEDFixunJBP7Nwmum', 'this may vary as the network changes'); }); it('retrieve transactions for an account', async () => { @@ -86,10 +93,10 @@ describe('Tezos date interface test suite', () => { target = ConseilQueryBuilder.addOrdering(target, 'block_level', ConseilSortDirection.DESC); target = ConseilQueryBuilder.setLimit(target, 300); - var result = await Promise.all([target, origin].map(q => TezosConseilClient.getOperations({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet', q))) + var result = await Promise.all([target, origin].map(q => TezosConseilClient.getOperations(conseilServer, conseilServer.network, q))) .then(responses => responses.reduce((result, r) => { r.forEach(rr => result.push(rr)); return result; })); - expect(result.length).to.equal(10, 'this may vary as the network changes'); + expect(result.length).to.be.greaterThan(10, 'this may vary as the network changes'); }); it('calculate average fees for transaction type operations', async () => { @@ -99,15 +106,15 @@ describe('Tezos date interface test suite', () => { operationFeesQuery = ConseilQueryBuilder.addOrdering(operationFeesQuery, 'block_level', ConseilSortDirection.DESC); operationFeesQuery = ConseilQueryBuilder.setLimit(operationFeesQuery, 1000); - const fees = await TezosConseilClient.getOperations({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet', operationFeesQuery); - const sortedfees = fees.map(f => parseInt(f['fee'])).sort((a, b) => a - b); + const fees = await TezosConseilClient.getOperations(conseilServer, conseilServer.network, operationFeesQuery); + const sortedfees = fees.map(f => parseInt(f['fee'])).filter(i => !isNaN(i)).sort((a, b) => a - b); const lowAverageFee = sortedfees.slice(0, 300).reduce((s, c) => s + c) / 300; const mediumAverageFee = sortedfees.slice(300, 700).reduce((s, c) => s + c) / 400; const highAverageFee = sortedfees.slice(700).reduce((s, c) => s + c) / 300; - expect(lowAverageFee).to.lessThan(mediumAverageFee); - expect(mediumAverageFee).to.lessThan(highAverageFee); + expect(lowAverageFee).to.lessThan(mediumAverageFee + 1); + expect(mediumAverageFee).to.lessThan(highAverageFee + 1); }); it('retrieve average fees for transaction type operations', async () => { @@ -117,7 +124,7 @@ describe('Tezos date interface test suite', () => { operationFeesQuery = ConseilQueryBuilder.addOrdering(operationFeesQuery, 'timestamp', ConseilSortDirection.DESC); operationFeesQuery = ConseilQueryBuilder.setLimit(operationFeesQuery, 1); - const fees = await TezosConseilClient.getTezosEntityData({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet', 'fees', operationFeesQuery); + const fees = await TezosConseilClient.getTezosEntityData(conseilServer, conseilServer.network, 'fees', operationFeesQuery); expect(fees[0]['low']).to.lessThan(fees[0]['medium']); expect(fees[0]['medium']).to.lessThan(fees[0]['high']); @@ -130,7 +137,7 @@ describe('Tezos date interface test suite', () => { operationFeesQuery = ConseilQueryBuilder.addOrdering(operationFeesQuery, 'timestamp', ConseilSortDirection.DESC); operationFeesQuery = ConseilQueryBuilder.setLimit(operationFeesQuery, 1); - const fees = await TezosConseilClient.getFeeStatistics({url: ConseilV2URL, apiKey: ConseilV2APIKey}, 'alphanet', OperationKindType.Transaction); + const fees = await TezosConseilClient.getFeeStatistics(conseilServer, conseilServer.network, OperationKindType.Transaction); expect(fees[0]['low']).to.lessThan(fees[0]['medium']); expect(fees[0]['medium']).to.lessThan(fees[0]['high']); diff --git a/package-lock.json b/ConseilJS-core/package-lock.json similarity index 63% rename from package-lock.json rename to ConseilJS-core/package-lock.json index b641f794..0bde49bd 100644 --- a/package-lock.json +++ b/ConseilJS-core/package-lock.json @@ -1,64 +1,199 @@ { "name": "conseiljs", - "version": "0.2.3", + "version": "5.0.0-alpha.2", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", "dev": true, "requires": { "@babel/highlight": "^7.0.0" } }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, "@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", "dev": true, "requires": { - "@babel/types": "^7.4.0", + "@babel/types": "^7.9.5", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "lodash": "^4.17.13", + "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@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": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@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": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", "dev": true, "requires": { - "@babel/types": "^7.4.0" + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", "dev": true, "requires": { "chalk": "^2.0.0", @@ -67,433 +202,472 @@ } }, "@babel/parser": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", - "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", "dev": true }, "@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + } } }, "@babel/traverse": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", - "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/types": "^7.4.0", + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.11" + "lodash": "^4.17.13" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "ms": "^2.1.1" + "@babel/highlight": "^7.8.3" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true } } }, "@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, - "@ledgerhq/hw-transport": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-4.24.0.tgz", - "integrity": "sha512-L34TG1Ss7goRB+5BxtvBwUuu0CmDSIxS33oUqkpEy6rCs31k7XicV48iUGAnRnt8hNY2DvJ9WFyaOroUE9h6wQ==", + "@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "dev": true, "requires": { - "events": "^3.0.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, - "@ledgerhq/hw-transport-node-hid": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-4.24.0.tgz", - "integrity": "sha512-RA3ZlRM+6y/XL/sAFKUpuLIU5tsmEpDBwJEBKC+qdzG508Vl/kBJDMuQyo6pmx/YcKZrtjfKiXXQEXP9Fgk75w==", - "requires": { - "@ledgerhq/hw-transport": "^4.24.0", - "lodash": "^4.17.11", - "node-hid": "^0.7.2", - "usb": "^1.3.3" - } + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true }, "@types/chai": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.7.tgz", - "integrity": "sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", + "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==", "dev": true }, "@types/chai-as-promised": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz", - "integrity": "sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ==", + "version": "7.1.2", + "resolved": false, + "integrity": "sha512-PO2gcfR3Oxa+u0QvECLe1xKXOqYTzCmWf0FhLhjREoW3fPAVamjihL7v1MOVLJLsnAMdLcjkfrs01yvDMwVK4Q==", "dev": true, "requires": { "@types/chai": "*" } }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/fs-extra": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.4.tgz", - "integrity": "sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/handlebars": { - "version": "4.0.40", - "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.40.tgz", - "integrity": "sha512-sGWNtsjNrLOdKha2RV1UeF8+UbQnPSG7qbe5wwbni0mw4h2gHXyPFUMOC+xwGirIiiydM/HSqjDO4rk6NFB18w==", + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, - "@types/highlight.js": { - "version": "9.12.3", - "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.3.tgz", - "integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ==", + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", "dev": true }, "@types/json5": { "version": "0.0.29", - "resolved": "http://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, - "@types/lodash": { - "version": "4.14.120", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.120.tgz", - "integrity": "sha512-jQ21kQ120mo+IrDs1nFNVm/AsdFxIx2+vZ347DbogHJPd/JzKNMOqU6HCYin1W6v8l5R9XSO2/e9cxmn7HAnVw==", - "dev": true - }, - "@types/marked": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.2.tgz", - "integrity": "sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, "@types/mocha": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.6.tgz", - "integrity": "sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw==", + "version": "7.0.2", + "resolved": false, + "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", "dev": true }, "@types/nock": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@types/nock/-/nock-9.3.1.tgz", - "integrity": "sha512-eOVHXS5RnWOjTVhu3deCM/ruy9E6JCgeix2g7wpFiekQh3AaEAK1cz43tZDukKmtSmQnwvSySq7ubijCA32I7Q==", + "version": "11.1.0", + "resolved": false, + "integrity": "sha512-jI/ewavBQ7X5178262JQR0ewicPAcJhXS/iFaNJl0VHLfyosZ/kwSrsa6VNQNSO8i9d8SqdRgOtZSOKJ/+iNMw==", "dev": true, "requires": { - "@types/node": "*" + "nock": "*" } }, "@types/node": { - "version": "11.13.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.8.tgz", - "integrity": "sha512-szA3x/3miL90ZJxUCzx9haNbK5/zmPieGraZEe4WI+3srN0eGLiT22NXeMHmyhNEopn+IrxqMc7wdVwvPl8meg==", + "version": "13.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", + "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==", "dev": true }, "@types/node-fetch": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.3.3.tgz", - "integrity": "sha512-MIplfRxrDTsIbOLGyFqNWTmxho5Fs710Kul35tEcaqkx9He86mGbSCDvILL0LCMfmm+oJ8tDg51crE9+pJGgiQ==", + "version": "2.5.6", + "resolved": false, + "integrity": "sha512-2w0NTwMWF1d3NJMK0Uiq2UNN8htVCyOWOD0jIPjPgC5Ph/YP4dVhs9YxxcMcuLuwAslz0dVEcZQUaqkLs3IzOQ==", "dev": true, "requires": { - "@types/node": "*" + "@types/node": "*", + "form-data": "^3.0.0" } }, - "@types/shelljs": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.2.tgz", - "integrity": "sha512-vVp7BCQn0yUQgpiohrdxAhHdm/bTlXshB4HG3LEBq1PgvjKiyeYHohIPIv0QBt/jipb140iMS5Xy1iR6qKovKw==", + "@typescript-eslint/eslint-plugin": { + "version": "2.29.0", + "resolved": false, + "integrity": "sha512-X/YAY7azKirENm4QRpT7OVmzok02cSkqeIcLmdz6gXUQG4Hk0Fi9oBAynSAyNXeGdMRuZvjBa0c1Lu0dn/u6VA==", "dev": true, "requires": { - "@types/glob": "*", - "@types/node": "*" + "@typescript-eslint/experimental-utils": "2.29.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" } }, - "@types/zxcvbn": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@types/zxcvbn/-/zxcvbn-4.4.0.tgz", - "integrity": "sha512-GQLOT+SN20a+AI51y3fAimhyTF4Y0RG+YP3gf91OibIZ7CJmPFgoZi+ZR5a+vRbS01LbQosITWum4ATmJ1Z6Pg==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz", - "integrity": "sha512-NUSz1aTlIzzTjFFVFyzrbo8oFjHg3K/M9MzYByqbMCxeFdErhLAcGITVfXzSz+Yvp5OOpMu3HkIttB0NyKl54Q==", + "@typescript-eslint/experimental-utils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.29.0.tgz", + "integrity": "sha512-H/6VJr6eWYstyqjWXBP2Nn1hQJyvJoFdDtsHxGiD+lEP7piGnGpb/ZQd+z1ZSB1F7dN+WsxUDh8+S4LwI+f3jw==", "dev": true, "requires": { - "@typescript-eslint/parser": "1.7.0", - "@typescript-eslint/typescript-estree": "1.7.0", - "eslint-utils": "^1.3.1", - "regexpp": "^2.0.1", - "requireindex": "^1.2.0", - "tsutils": "^3.7.0" + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" }, "dependencies": { - "requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } } } }, "@typescript-eslint/parser": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.7.0.tgz", - "integrity": "sha512-1QFKxs2V940372srm12ovSE683afqc1jB6zF/f8iKhgLz1yoSjYeGHipasao33VXKI+0a/ob9okeogGdKGvvlg==", + "version": "2.29.0", + "resolved": false, + "integrity": "sha512-H78M+jcu5Tf6m/5N8iiFblUUv+HJDguMSdFfzwa6vSg9lKR8Mk9BsgeSjO8l2EshKnJKcbv0e8IDDOvSNjl0EA==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "1.7.0", - "eslint-scope": "^4.0.0", - "eslint-visitor-keys": "^1.0.0" + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.29.0", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-visitor-keys": "^1.1.0" } }, "@typescript-eslint/typescript-estree": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.7.0.tgz", - "integrity": "sha512-K5uedUxVmlYrVkFbyV3htDipvLqTE3QMOUQEHYJaKtgzxj6r7c5Ca/DG1tGgFxX+fsbi9nDIrf4arq7Ib7H/Yw==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.29.0.tgz", + "integrity": "sha512-3YGbtnWy4az16Egy5Fj5CckkVlpIh0MADtAQza+jiMADRSKkjdpzZp/5WuvwK/Qib3Z0HtzrDFeWanS99dNhnA==", "dev": true, "requires": { - "lodash.unescape": "4.0.1", - "semver": "5.5.0" + "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" }, "dependencies": { "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@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/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@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/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@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/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@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/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@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", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -509,55 +683,32 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", "dev": true }, - "acorn-globals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.1.tgz", - "integrity": "sha512-gJSiKY8dBIjV/0jagZIFBdVMtfQyA5QHCvAT48H2q8REQoW8Fs5AOjqBql1LgSXgrMWdevcE+8cdZ33NtVbIBA==", + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", "dev": true, "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" } }, - "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", - "dev": true - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", - "dev": true - }, "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -573,9 +724,9 @@ "dev": true }, "ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "dev": true }, "ansi-colors": { @@ -585,15 +736,19 @@ "dev": true }, "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { "version": "3.2.1", @@ -626,18 +781,19 @@ } }, "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, "requires": { - "default-require-extensions": "^2.0.0" + "default-require-extensions": "^3.0.0" } }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, "archy": { "version": "1.0.0", @@ -645,19 +801,10 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, "argparse": { @@ -687,20 +834,64 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "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" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } } }, "array-unique": { @@ -709,6 +900,16 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -730,11 +931,12 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -746,7 +948,7 @@ }, "util": { "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -758,7 +960,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assertion-error": { "version": "1.1.0", @@ -779,12 +982,12 @@ "dev": true }, "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.14" } }, "async-each": { @@ -793,12 +996,6 @@ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -813,7 +1010,7 @@ }, "awesome-typescript-loader": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz", + "resolved": false, "integrity": "sha512-slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g==", "dev": true, "requires": { @@ -827,34 +1024,6 @@ "webpack-log": "^1.2.0" } }, - "aws-sdk": { - "version": "2.447.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.447.0.tgz", - "integrity": "sha512-bAnNeYJx8U/SGb0zo13YbYvOmHhN3h+3eagP+X7uVG5kmpJMsEpn1EqZJ/Jby7qEB/DQXFGFUzg5kLt//C37/g==", - "requires": { - "buffer": "4.9.1", - "events": "1.1.1", - "ieee754": "1.1.8", - "jmespath": "0.15.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "uuid": "3.3.2", - "xml2js": "0.4.19" - }, - "dependencies": { - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" - } - } - }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -862,24 +1031,16 @@ "dev": true }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "base": { "version": "0.11.2", @@ -936,33 +1097,19 @@ } } }, - "base-n": { - "version": "git://github.com/yourcodesucks/base-n.git#9d983f475c7396fbdc2fcbbc35b4821f0deeaa25", - "from": "git://github.com/yourcodesucks/base-n.git", - "requires": { - "dashdash": "^1.14.1" - } - }, "base-x": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.4.tgz", - "integrity": "sha512-UYOadoSIkEI/VrRGSG6qp93rp2WdokiAiNYDfGW5qURAY8GiAQkvMbwNNSDYiVJopqv4gCna7xqf4rrNGp+5AA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.7.tgz", + "integrity": "sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw==", "requires": { "safe-buffer": "^5.0.1" } }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" - }, - "basil-tezos-ledger": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/basil-tezos-ledger/-/basil-tezos-ledger-0.0.1.tgz", - "integrity": "sha512-w4qU75Ta0i4uvTUNDFC+/h+oc7bAqNaEP6tqXbkZJNn6Q4cyRv/3NHTIFGchKSm8UOu6VA/7jouwt/oGvUsfZA==", - "requires": { - "@ledgerhq/hw-transport": "^4.21.0" - } + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -974,14 +1121,14 @@ } }, "big-integer": { - "version": "1.6.43", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz", - "integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==" + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" }, "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, "binary-extensions": { @@ -990,31 +1137,14 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, - "bip39": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.1.tgz", - "integrity": "sha512-h1mxBCpocHoZ6eUWNwh13bSXCZYy/wknSAvs1se3XDOTeerHU3jA8E4PIoPr8YMY3kdDSCpM1HypJmDS+C7U2Q==", - "requires": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - }, - "dependencies": { - "@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - } - } - }, - "bl": { - "version": "1.2.2", - "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "file-uri-to-path": "1.0.0" } }, "blakejs": { @@ -1023,9 +1153,9 @@ "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" }, "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "bn.js": { @@ -1038,6 +1168,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1078,12 +1209,6 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -1092,7 +1217,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -1129,7 +1254,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -1180,34 +1305,16 @@ } }, "buffer": { - "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -1227,32 +1334,39 @@ "dev": true }, "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", "dev": true, "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", + "chownr": "^1.1.2", "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" }, "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } } } }, @@ -1274,33 +1388,15 @@ } }, "caching-transform": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", - "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "requires": { - "hasha": "^3.0.0", - "make-dir": "^2.0.0", - "package-hash": "^3.0.0", - "write-file-atomic": "^2.4.2" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" } }, "callsites": { @@ -1310,9 +1406,9 @@ "dev": true }, "camelcase": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "caseless": { @@ -1323,7 +1419,7 @@ }, "chai": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "resolved": false, "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { @@ -1337,7 +1433,7 @@ }, "chai-as-promised": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "resolved": false, "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dev": true, "requires": { @@ -1345,9 +1441,9 @@ } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -1368,9 +1464,9 @@ "dev": true }, "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -1385,17 +1481,41 @@ "path-is-absolute": "^1.0.0", "readdirp": "^2.2.1", "upath": "^1.1.1" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } } }, "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "dev": true }, "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -1433,13 +1553,19 @@ } } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-width": { @@ -1449,20 +1575,20 @@ "dev": true }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "is-fullwidth-code-point": { @@ -1472,22 +1598,23 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } @@ -1495,7 +1622,8 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "collection-visit": { "version": "1.0.0", @@ -1523,14 +1651,19 @@ "dev": true }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -1538,15 +1671,16 @@ "dev": true }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "concat-stream": { "version": "1.6.2", @@ -1560,19 +1694,17 @@ "typedarray": "^0.0.6" } }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "constants-browserify": { "version": "1.0.0", @@ -1587,9 +1719,9 @@ "dev": true }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -1616,9 +1748,9 @@ "dev": true }, "copyfiles": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.1.0.tgz", - "integrity": "sha512-cAeDE0vL/koE9WSEGxqPpSyvU638Kgfu6wfrnj7kqp9FWa1CWsU54Coo6sdYZP4GstWa39tL/wIVJWfXcujgNA==", + "version": "2.2.0", + "resolved": false, + "integrity": "sha512-iJbHJI+8OKqsq+4JF0rqgRkZzo++jqO6Wf4FUU1JM41cJF6JcY5968XyF4tm3Kkm7ZOMrqlljdm8N9oyY5raGw==", "dev": true, "requires": { "glob": "^7.0.5", @@ -1626,219 +1758,26 @@ "mkdirp": "^0.5.1", "noms": "0.0.0", "through2": "^2.0.1", - "yargs": "^11.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } + "yargs": "^13.2.4" } }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "coveralls": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.3.tgz", - "integrity": "sha512-viNfeGlda2zJr8Gj1zqXpDMRjw9uM54p7wzZdvLRyOgnAfCe974Dq4veZkjJdxQXbmdppu6flEajFYseHYaUhg==", + "version": "3.0.12", + "resolved": false, + "integrity": "sha512-cDOGf4JFb1XKxT811GuLixVgJc3ZFElCLtgxkrdo0hm9Q8lmJ3cP4cZqlQTRE45MvwJNlHYwwzHPuWEv1f4f4Q==", "dev": true, "requires": { - "growl": "~> 1.10.0", - "js-yaml": "^3.11.0", - "lcov-parse": "^0.0.10", + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", "log-driver": "^1.2.7", - "minimist": "^1.2.0", - "request": "^2.86.0" - } - }, - "cp-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", - "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "make-dir": "^2.0.0", - "nested-error-stacks": "^2.0.0", - "pify": "^4.0.1", - "safe-buffer": "^5.0.1" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "minimist": "^1.2.5", + "request": "^2.88.0" } }, "create-ecdh": { @@ -1853,7 +1792,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { "cipher-base": "^1.0.1", @@ -1865,8 +1804,9 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -1908,80 +1848,38 @@ "randomfill": "^1.0.3" } }, - "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", - "dev": true - }, - "cssstyle": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", - "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "dev": true, "requires": { - "es5-ext": "^0.10.9" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } + "assert-plus": "^1.0.0" } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "decamelize": { @@ -1996,14 +1894,6 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", @@ -2013,36 +1903,27 @@ "type-detect": "^4.0.0" } }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true - }, "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, "requires": { - "strip-bom": "^3.0.0" + "strip-bom": "^4.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + } } }, "define-properties": { @@ -2101,15 +1982,10 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -2122,11 +1998,6 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" - }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -2135,7 +2006,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -2164,15 +2035,6 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -2196,9 +2058,9 @@ } }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -2223,21 +2085,22 @@ "dev": true }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "requires": { "once": "^1.4.0" } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" } }, @@ -2260,23 +2123,28 @@ } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.17.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", + "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", + "has-symbols": "^1.0.1", "is-callable": "^1.1.4", "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -2285,14 +2153,14 @@ } }, "es5-ext": { - "version": "0.10.46", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", - "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "dev": true, "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, "es6-error": { @@ -2313,13 +2181,13 @@ } }, "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "ext": "^1.1.2" } }, "escape-string-regexp": { @@ -2328,170 +2196,180 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "version": "6.8.0", + "resolved": false, + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", + "ajv": "^6.10.0", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", + "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": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "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.11", + "lodash": "^4.17.14", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^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" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true } } }, "eslint-config-airbnb-base": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz", - "integrity": "sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==", + "version": "14.1.0", + "resolved": false, + "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", "dev": true, "requires": { - "eslint-restricted-globals": "^0.1.1", + "confusing-browser-globals": "^1.0.9", "object.assign": "^4.1.0", - "object.entries": "^1.0.4" + "object.entries": "^1.1.1" } }, "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", "dev": true, "requires": { "debug": "^2.6.9", - "resolve": "^1.5.0" + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "eslint-module-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz", - "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "dev": true, "requires": { - "debug": "^2.6.8", + "debug": "^2.6.9", "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "eslint-plugin-import": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.2.tgz", - "integrity": "sha512-m+cSVxM7oLsIpmwNn2WXTJoReOF9f/CtLMo7qOVmKd1KntBy0hEcuNZ3erTmWjx+DxRO0Zcrm5KwAvI9wHcV5g==", + "version": "2.20.2", + "resolved": false, + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", "dev": true, "requires": { "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.0", + "eslint-module-utils": "^2.4.1", "has": "^1.0.3", - "lodash": "^4.17.11", "minimatch": "^3.0.4", + "object.values": "^1.1.0", "read-pkg-up": "^2.0.0", - "resolve": "^1.10.0" + "resolve": "^1.12.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "doctrine": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", @@ -2501,28 +2379,19 @@ "esutils": "^2.0.2", "isarray": "^1.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "eslint-plugin-typescript": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-typescript/-/eslint-plugin-typescript-0.14.0.tgz", - "integrity": "sha512-2u1WnnDF2mkWWgU1lFQ2RjypUlmRoBEvQN02y9u+IL12mjWlkKFGEBnVsjs9Y8190bfPQCvWly1c2rYYUSOxWw==", - "dev": true, - "requires": { - "requireindex": "~1.1.0" - } - }, - "eslint-restricted-globals": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", - "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", - "dev": true - }, "eslint-scope": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.2.tgz", - "integrity": "sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -2530,26 +2399,29 @@ } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" } }, "esprima": { @@ -2577,21 +2449,22 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true }, "evp_bytestokey": { "version": "1.0.3", @@ -2633,6 +2506,15 @@ "to-regex": "^3.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -2650,14 +2532,15 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" - }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -2667,6 +2550,23 @@ "homedir-polyfill": "^1.0.1" } }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2695,9 +2595,9 @@ } }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -2783,9 +2683,9 @@ "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -2801,9 +2701,9 @@ "dev": true }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -2821,7 +2721,9 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true }, "fill-range": { "version": "4.0.0", @@ -2847,100 +2749,80 @@ } }, "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "dependencies": { "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-locate": "^4.1.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } } } }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^3.0.0" } }, "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", "dev": true, "requires": { "detect-file": "^1.0.0", - "is-glob": "^3.1.0", + "is-glob": "^4.0.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } } }, "flat": { @@ -2953,9 +2835,9 @@ }, "dependencies": { "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", "dev": true } } @@ -2969,23 +2851,12 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, "flush-write-stream": { @@ -3005,40 +2876,55 @@ "dev": true }, "foreground-child": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" }, "dependencies": { "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "shebang-regex": "^3.0.0" } }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -3049,13 +2935,13 @@ "dev": true }, "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", "dev": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, @@ -3078,28 +2964,30 @@ "readable-stream": "^2.0.0" } }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "fromentries": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", + "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", + "dev": true }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^3.0.0" } }, "fs-write-stream-atomic": { @@ -3117,17 +3005,19 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz", - "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==", + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "node-pre-gyp": "*" }, "dependencies": { "abbrev": { @@ -3175,7 +3065,7 @@ } }, "chownr": { - "version": "1.1.1", + "version": "1.1.4", "bundled": true, "dev": true, "optional": true @@ -3205,7 +3095,7 @@ "optional": true }, "debug": { - "version": "4.1.1", + "version": "3.2.6", "bundled": true, "dev": true, "optional": true, @@ -3232,12 +3122,12 @@ "optional": true }, "fs-minipass": { - "version": "1.2.5", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -3263,7 +3153,7 @@ } }, "glob": { - "version": "7.1.3", + "version": "7.1.6", "bundled": true, "dev": true, "optional": true, @@ -3292,7 +3182,7 @@ } }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "optional": true, @@ -3311,7 +3201,7 @@ } }, "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true, "dev": true, "optional": true @@ -3347,13 +3237,13 @@ } }, "minimist": { - "version": "0.0.8", + "version": "1.2.5", "bundled": true, "dev": true, "optional": true }, "minipass": { - "version": "2.3.5", + "version": "2.9.0", "bundled": true, "dev": true, "optional": true, @@ -3363,49 +3253,42 @@ } }, "minizlib": { - "version": "1.2.1", + "version": "1.3.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.9.0" } }, "mkdirp": { - "version": "0.5.1", + "version": "0.5.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "ms": { - "version": "2.1.1", + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, - "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", - "dev": true, - "optional": true - }, "needle": { - "version": "2.3.0", + "version": "2.3.3", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^4.1.0", + "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.12.0", + "version": "0.14.0", "bundled": true, "dev": true, "optional": true, @@ -3419,11 +3302,11 @@ "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^4" + "tar": "^4.4.2" } }, "nopt": { - "version": "4.0.1", + "version": "4.0.3", "bundled": true, "dev": true, "optional": true, @@ -3433,19 +3316,29 @@ } }, "npm-bundled": { - "version": "1.0.6", + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.4.1", + "version": "1.4.8", "bundled": true, "dev": true, "optional": true, "requires": { "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" } }, "npmlog": { @@ -3510,7 +3403,7 @@ "optional": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "dev": true, "optional": true @@ -3525,18 +3418,10 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } } }, "readable-stream": { - "version": "2.3.6", + "version": "2.3.7", "bundled": true, "dev": true, "optional": true, @@ -3551,7 +3436,7 @@ } }, "rimraf": { - "version": "2.6.3", + "version": "2.7.1", "bundled": true, "dev": true, "optional": true, @@ -3578,7 +3463,7 @@ "optional": true }, "semver": { - "version": "5.7.0", + "version": "5.7.1", "bundled": true, "dev": true, "optional": true @@ -3631,18 +3516,18 @@ "optional": true }, "tar": { - "version": "4.4.8", + "version": "4.4.13", "bundled": true, "dev": true, "optional": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "yallist": "^3.0.3" } }, "util-deprecate": { @@ -3667,7 +3552,7 @@ "optional": true }, "yallist": { - "version": "3.0.3", + "version": "3.1.1", "bundled": true, "dev": true, "optional": true @@ -3686,25 +3571,16 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-func-name": { @@ -3720,18 +3596,6 @@ "dev": true, "requires": { "pump": "^3.0.0" - }, - "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } } }, "get-value": { @@ -3749,15 +3613,11 @@ "assert-plus": "^1.0.0" } }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" - }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3768,37 +3628,36 @@ } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "global-prefix": "^3.0.0" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" } } } }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, "global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", @@ -3813,15 +3672,18 @@ } }, "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", - "dev": true + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, "growl": { @@ -3831,15 +3693,16 @@ "dev": true }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "dependencies": { "source-map": { @@ -3882,16 +3745,11 @@ "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3944,12 +3802,21 @@ } }, "hasha": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", - "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", + "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", "dev": true, "requires": { - "is-stream": "^1.0.1" + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + } } }, "he": { @@ -3959,9 +3826,9 @@ "dev": true }, "highlight.js": { - "version": "9.14.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.14.2.tgz", - "integrity": "sha512-Nc6YNECYpxyJABGYJAyw7dBAYbXEuIzwzkqoJnwbc1nIpCiN+3ioYf0XrBnLiyyG0JLuJhpPtt2iTSbXiKLoyA==", + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", + "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==", "dev": true }, "hmac-drbg": { @@ -3985,19 +3852,16 @@ } }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "http-signature": { "version": "1.2.0", @@ -4010,11 +3874,6 @@ "sshpk": "^1.7.0" } }, - "https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", - "integrity": "sha1-PDfHrhqO65ZpBKKtHpdaGUt+06Q=" - }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -4025,14 +3884,16 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true }, "iferr": { "version": "0.1.5", @@ -4046,18 +3907,10 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "requires": { - "minimatch": "^3.0.4" - } - }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -4074,49 +3927,6 @@ "resolve-cwd": "^2.0.0" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -4134,92 +3944,96 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true }, "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", + "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", + "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", + "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", "through": "^2.3.6" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } @@ -4244,9 +4058,9 @@ } }, "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, "invert-kv": { @@ -4363,6 +4177,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4412,12 +4227,12 @@ "dev": true }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "dev": true, "requires": { - "has": "^1.0.1" + "has": "^1.0.3" } }, "is-stream": { @@ -4426,13 +4241,19 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, "is-typedarray": { @@ -4447,10 +4268,17 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -4471,125 +4299,155 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true }, "istanbul-lib-hook": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz", - "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "requires": { - "append-transform": "^1.0.0" + "append-transform": "^2.0.0" } }, "istanbul-lib-instrument": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz", - "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", "dev": true, "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.4", - "semver": "^6.0.0" + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "dependencies": { "semver": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", - "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "istanbul-lib-report": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz", - "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==", + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.4", - "make-dir": "^2.1.0", - "supports-color": "^6.0.0" + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" }, "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "glob": "^7.1.3" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" } } } }, - "istanbul-lib-source-maps": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz", - "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==", + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.4", - "make-dir": "^2.1.0", - "rimraf": "^2.6.2", - "source-map": "^0.6.1" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "has-flag": "^4.0.0" } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4599,18 +4457,41 @@ } }, "istanbul-reports": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.3.tgz", - "integrity": "sha512-T6EbPuc8Cb620LWAYyZ4D8SSn06dY9i1+IgUX2lTH8gbwflMc9Obd33zHTyNX653ybjpamAHS9toKS3E6cGhTw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", "dev": true, "requires": { - "handlebars": "^4.1.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" } }, - "jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" + "jest-worker": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", + "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, "js-tokens": { "version": "4.0.0", @@ -4634,48 +4515,6 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - } - } - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -4713,10 +4552,13 @@ "dev": true }, "json5": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } }, "jsonfile": { "version": "4.0.0", @@ -4727,6 +4569,11 @@ "graceful-fs": "^4.1.6" } }, + "jsonpath-plus": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-3.0.0.tgz", + "integrity": "sha512-WQwgWEBgn+SJU1tlDa/GiY5/ngRpa9yrSj8n4BYPHcwoxTDaMEaYCHMOn42hIHHDd3CrUoRr3+HpsK0hCKoxzA==" + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -4740,9 +4587,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "lcid": { @@ -4755,15 +4602,9 @@ } }, "lcov-parse": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", - "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", - "dev": true - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", "dev": true }, "levn": { @@ -4776,19 +4617,6 @@ "type-check": "~0.3.2" } }, - "libsodium-sumo": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.4.tgz", - "integrity": "sha512-xBQaiQ7X0pKmeT7+stva/JplcqdDzd3sag2nVC+UIenYg33w5QUihuZfI1+7JVODvCr4MXFsHm9lv+eIVrJALA==" - }, - "libsodium-wrappers-sumo": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.4.tgz", - "integrity": "sha512-znWGEGMXru7uIilryz+FvOTrNfT7yK0+17yOqVqp6nRulB9fjfML3VtFKMShOyWjlPqrFFPgYyeVrFb9I2th3g==", - "requires": { - "libsodium-sumo": "0.7.4" - } - }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -4799,14 +4627,6 @@ "parse-json": "^2.2.0", "pify": "^2.0.0", "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } } }, "loader-runner": { @@ -4816,30 +4636,31 @@ "dev": true }, "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { - "big.js": "^3.1.3", + "big.js": "^5.2.2", "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "json5": "^1.0.1" } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^2.0.0", + "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true }, "lodash.flattendeep": { "version": "4.4.0", @@ -4847,18 +4668,6 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.unescape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", - "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", - "dev": true - }, "log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", @@ -4874,6 +4683,12 @@ "chalk": "^2.0.1" } }, + "loglevel": { + "version": "1.6.8", + "resolved": false, + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "dev": true + }, "loglevelnext": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", @@ -4891,27 +4706,43 @@ "dev": true, "requires": { "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } } }, + "lunr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", + "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", + "dev": true + }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", "dev": true, "requires": { - "pify": "^3.0.0" + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", - "dev": true - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, "map-age-cleaner": { @@ -4939,9 +4770,9 @@ } }, "marked": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz", - "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", + "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", "dev": true }, "md5.js": { @@ -4955,50 +4786,31 @@ } }, "mem": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", - "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", - "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", - "dev": true - } } }, "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", "dev": true, "requires": { "errno": "^0.1.3", "readable-stream": "^2.0.1" } }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "micromatch": { "version": "3.1.10", @@ -5032,31 +4844,26 @@ } }, "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", "dev": true }, "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "dev": true, "requires": { - "mime-db": "~1.38.0" + "mime-db": "1.43.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -5073,30 +4880,51 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "yallist": "^4.0.0" } }, - "minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "dev": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^3.0.0" } }, "mississippi": { @@ -5115,24 +4943,12 @@ "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -5151,28 +4967,23 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } + "minimist": "^1.2.5" } }, "mocha": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", - "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", + "version": "7.1.1", + "resolved": false, + "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", "dev": true, "requires": { "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", + "chokidar": "3.3.0", "debug": "3.2.6", "diff": "3.5.0", "escape-string-regexp": "1.0.5", @@ -5181,21 +4992,68 @@ "growl": "1.10.5", "he": "1.2.0", "js-yaml": "3.13.1", - "log-symbols": "2.2.0", + "log-symbols": "3.0.0", "minimatch": "3.0.4", - "mkdirp": "0.5.1", + "mkdirp": "0.5.3", "ms": "2.1.1", - "node-environment-flags": "1.0.5", + "node-environment-flags": "1.0.6", "object.assign": "4.1.0", "strip-json-comments": "2.0.1", "supports-color": "6.0.0", "which": "1.3.1", "wide-align": "1.1.3", - "yargs": "13.2.2", - "yargs-parser": "13.0.0", - "yargs-unparser": "1.5.0" + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -5205,23 +5063,79 @@ "ms": "^2.1.1" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "to-regex-range": "^5.0.1" } }, - "locate-path": { + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "log-symbols": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "chalk": "^2.4.2" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "dev": true, + "requires": { + "minimist": "^1.2.5" } }, "ms": { @@ -5230,29 +5144,34 @@ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "picomatch": "^2.0.4" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } }, "supports-color": { "version": "6.0.0", @@ -5262,6 +5181,43 @@ "requires": { "has-flag": "^3.0.0" } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "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-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -5285,20 +5241,23 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "nan": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true }, "nanomatch": { "version": "1.2.13", @@ -5319,11 +5278,6 @@ "to-regex": "^3.0.1" } }, - "napi-build-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz", - "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==" - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5331,49 +5285,21 @@ "dev": true }, "nearley": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz", - "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==", + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.19.1.tgz", + "integrity": "sha512-xq47GIUGXxU9vQg7g/y1o1xuKnkO7ev4nRWqftmQrLkfnE/FjRqDaGOUakM8XHPn/6pW3bGjU2wgoJyId90rqg==", "requires": { "commander": "^2.19.0", - "moo": "^0.4.3", + "moo": "^0.5.0", "railroad-diagrams": "^1.0.0", "randexp": "0.4.6", "semver": "^5.4.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "moo": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", - "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==" - } - } - }, - "needle": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", - "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" } }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", - "dev": true - }, - "nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, "next-tick": { @@ -5389,99 +5315,37 @@ "dev": true }, "nock": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/nock/-/nock-10.0.6.tgz", - "integrity": "sha512-b47OWj1qf/LqSQYnmokNWM8D88KvUl2y7jT0567NB3ZBAZFz2bWp2PC81Xn7u8F2/vJxzkzNZybnemeFa7AZ2w==", + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-12.0.3.tgz", + "integrity": "sha512-QNb/j8kbFnKCiyqi9C5DD0jH/FubFGj5rt9NQFONXwQm3IPB0CULECg/eS3AU1KgZb/6SwUa4/DTRKhVxkGABw==", "dev": true, "requires": { - "chai": "^4.1.2", "debug": "^4.1.0", - "deep-equal": "^1.0.0", "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.5", - "mkdirp": "^0.5.0", - "propagate": "^1.0.0", - "qs": "^6.5.1", - "semver": "^5.5.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "node-abi": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.6.0.tgz", - "integrity": "sha512-kCnEh6af6Z6DB7RFI/7LHNwqRjvJW7rgrv3lhIFoQ/+XhLPI/lJYwsk5vzvkldPWWgqnAMcuPF5S8/jj56kVOA==", - "requires": { - "semver": "^5.4.1" + "lodash": "^4.17.13", + "propagate": "^2.0.0" } }, "node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", "dev": true, "requires": { "object.getownpropertydescriptors": "^2.0.3", "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } } }, "node-fetch": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz", - "integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw==" - }, - "node-hid": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-0.7.6.tgz", - "integrity": "sha512-cjbjL1CmOpImKQrqkvQKZUWuzvofwECZQ50zoih5vtPRowIZ4TFJDTN3tJYfVhbQYM9PGqDFXLcTILjx9EPvzw==", - "requires": { - "bindings": "^1.3.1", - "nan": "^2.12.1", - "prebuild-install": "^5.2.2" - }, - "dependencies": { - "bindings": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.4.0.tgz", - "integrity": "sha512-7znEVX22Djn+nYjxCWKDne0RRloa9XfYa84yk3s+HkE3LpDYZmhArYr9O9huBoHY3/oXispx5LorIX7Sl2CgSQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==" - } - } + "version": "2.6.0", + "resolved": false, + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -5494,7 +5358,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -5506,36 +5370,24 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true } } }, - "node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "process-on-spawn": "^1.0.0" } }, "noms": { @@ -5574,20 +5426,6 @@ } } }, - "noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -5606,20 +5444,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "npm-bundled": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", - "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==" - }, - "npm-packlist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", - "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -5629,215 +5453,203 @@ "path-key": "^2.0.0" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nwsapi": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.3.tgz", - "integrity": "sha512-RowAaJGEgYXEZfQ7tvvdtAQUKPyTR6T6wNu0fwlNsGQYr/h3yQc6oI8WnVZh3Y/Sylwc+dtAlvPqfFZjhTyk3A==", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "nyc": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.0.0.tgz", - "integrity": "sha512-R1zC6UZak6pzn5BZQorkSH5GdOGafrwyeja+eimS5Tu+KJ/hCgBc8qA1QWSzxQmT2FDl2lbpqPw7tBDbSvhAHg==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "caching-transform": "^3.0.2", - "convert-source-map": "^1.6.0", - "cp-file": "^6.2.0", - "find-cache-dir": "^2.1.0", - "find-up": "^3.0.0", - "foreground-child": "^1.5.6", - "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.4", - "istanbul-lib-hook": "^2.0.6", - "istanbul-lib-instrument": "^3.2.0", - "istanbul-lib-report": "^2.0.7", - "istanbul-lib-source-maps": "^3.0.5", - "istanbul-reports": "^2.2.2", - "make-dir": "^2.1.0", - "merge-source-map": "^1.1.0", - "resolve-from": "^4.0.0", - "rimraf": "^2.6.3", + "version": "15.0.1", + "resolved": false, + "integrity": "sha512-n0MBXYBYRqa67IVt62qW1r/d9UH/Qtr7SF1w/nQLJ9KxvWF6b2xCHImRAixHN9tnMMYHC2P14uo6KddNGwMgGg==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", "signal-exit": "^3.0.2", - "spawn-wrap": "^1.4.2", - "test-exclude": "^5.2.2", - "uuid": "^3.3.2", - "yargs": "^13.2.2", - "yargs-parser": "^13.0.0" + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "color-name": "~1.1.4" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-locate": "^4.1.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" } }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "yargs": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", - "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "find-up": "^3.0.0", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.0.0" + "yargs-parser": "^18.1.1" } }, "yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -5855,7 +5667,8 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-copy": { "version": "0.1.0", @@ -5888,10 +5701,16 @@ } } }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object-visit": { @@ -5916,25 +5735,25 @@ } }, "object.entries": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", "has": "^1.0.3" } }, "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "object.pick": { @@ -5946,61 +5765,48 @@ "isobject": "^3.0.1" } }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } + "mimic-fn": "^2.1.0" } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } + "word-wrap": "~1.2.3" } }, "os-browserify": { @@ -6009,11 +5815,6 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -6028,16 +5829,8 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "p-defer": { "version": "1.0.0", @@ -6052,68 +5845,69 @@ "dev": true }, "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "aggregate-error": "^3.0.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "package-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", - "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, "requires": { "graceful-fs": "^4.1.15", - "hasha": "^3.0.0", + "hasha": "^5.0.0", "lodash.flattendeep": "^4.4.0", "release-zalgo": "^1.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - } } }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "requires": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } @@ -6128,9 +5922,9 @@ } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -6156,12 +5950,6 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -6169,9 +5957,9 @@ "dev": true }, "path-browserify": { - "version": "0.0.0", - "resolved": "http://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -6189,12 +5977,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { @@ -6216,14 +5999,6 @@ "dev": true, "requires": { "pify": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } } }, "pathval": { @@ -6236,6 +6011,7 @@ "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -6250,10 +6026,16 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pkg-dir": { @@ -6263,43 +6045,59 @@ "dev": true, "requires": { "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } } }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, - "prebuild-install": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.2.2.tgz", - "integrity": "sha512-4e8VJnP3zJdZv/uP0eNWmr2r9urp4NECw7Mt1OSAi3rcLrbBRxGiAkfUFtre2MhQ5wfREAjRV+K1gubvs/GPsA==", - "requires": { - "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.2.0", - "noop-logger": "^0.1.1", - "npmlog": "^4.0.1", - "os-homedir": "^1.0.1", - "pump": "^2.0.1", - "rc": "^1.2.7", - "simple-get": "^2.7.0", - "tar-fs": "^1.13.0", - "tunnel-agent": "^0.6.0", - "which-pm-runs": "^1.0.0" - } - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -6313,9 +6111,19 @@ "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } }, "progress": { "version": "2.0.3", @@ -6330,9 +6138,9 @@ "dev": true }, "propagate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz", - "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, "prr": { @@ -6341,16 +6149,10 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", + "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==", "dev": true }, "public-encrypt": { @@ -6368,9 +6170,10 @@ } }, "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -6385,12 +6188,25 @@ "duplexify": "^3.6.0", "inherits": "^2.0.3", "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", @@ -6401,7 +6217,8 @@ "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true }, "querystring-es3": { "version": "0.2.1", @@ -6427,6 +6244,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "requires": { "safe-buffer": "^5.1.0" } @@ -6441,17 +6259,6 @@ "safe-buffer": "^5.1.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -6471,12 +6278,58 @@ "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } } }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6507,11 +6360,6 @@ "resolve": "^1.1.6" } }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6523,9 +6371,9 @@ } }, "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "release-zalgo": { @@ -6556,9 +6404,9 @@ "dev": true }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -6568,7 +6416,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -6578,41 +6426,53 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } } }, "request-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.4.tgz", - "integrity": "sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg==", + "version": "4.2.5", + "resolved": false, + "integrity": "sha512-ZgnepCykFdmpq86fKGwqntyTiUrHycALuGggpyCZwMvGaZWgxW6yagT0FHkgo5LzYvOaCNvxYwWYIjevSH1EDg==", "dev": true, "requires": { "bluebird": "^3.5.0", - "request-promise-core": "1.1.2", + "request-promise-core": "1.1.3", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" } }, "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", "dev": true, "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" + "lodash": "^4.17.15" } }, "require-directory": { @@ -6622,21 +6482,15 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requireindex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", - "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.1.tgz", + "integrity": "sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -6667,6 +6521,19 @@ "requires": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } } }, "resolve-from": { @@ -6682,12 +6549,12 @@ "dev": true }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, @@ -6697,11 +6564,12 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "ripemd160": { @@ -6732,9 +6600,9 @@ } }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -6747,7 +6615,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -6757,44 +6625,60 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + } } }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -6822,7 +6706,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { "inherits": "^2.0.1", @@ -6858,22 +6742,8 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "simple-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" - }, - "simple-get": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", - "requires": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "slice-ansi": { "version": "2.1.0", @@ -6910,6 +6780,15 @@ "use": "^3.1.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -6927,6 +6806,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -7015,7 +6900,7 @@ }, "source-map-loader": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "resolved": false, "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", "dev": true, "requires": { @@ -7037,9 +6922,9 @@ } }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.18.tgz", + "integrity": "sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -7061,17 +6946,37 @@ "dev": true }, "spawn-wrap": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", "signal-exit": "^3.0.2", - "which": "^1.3.0" + "which": "^2.0.1" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "spdx-correct": { @@ -7085,9 +6990,9 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { @@ -7101,9 +7006,9 @@ } }, "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "split-string": { @@ -7117,7 +7022,7 @@ }, "sprintf-js": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, @@ -7139,12 +7044,13 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" } }, "static-extend": { @@ -7208,33 +7114,174 @@ } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "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" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "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" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -7247,14 +7294,15 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "5.5.0", @@ -7265,20 +7313,14 @@ "has-flag": "^3.0.0" } }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true - }, "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", + "ajv": "^6.10.2", + "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, @@ -7318,78 +7360,22 @@ } }, "tapable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz", - "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, - "tar": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "tar-fs": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", - "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", - "requires": { - "chownr": "^1.0.1", - "mkdirp": "^0.5.1", - "pump": "^1.0.0", - "tar-stream": "^1.1.2" - }, - "dependencies": { - "pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - } - }, "terser": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", - "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz", + "integrity": "sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g==", "dev": true, "requires": { - "commander": "~2.17.1", + "commander": "^2.20.0", "source-map": "~0.6.1", - "source-map-support": "~0.5.9" + "source-map-support": "~0.5.12" }, "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7399,21 +7385,31 @@ } }, "terser-webpack-plugin": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", - "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", + "version": "2.3.5", + "resolved": false, + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", "dev": true, "requires": { - "cacache": "^11.0.2", - "find-cache-dir": "^2.0.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", "source-map": "^0.6.1", - "terser": "^3.16.1", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" }, "dependencies": { + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7423,118 +7419,14 @@ } }, "test-exclude": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz", - "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - } + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" } }, "text-table": { @@ -7560,9 +7452,9 @@ } }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -7583,11 +7475,6 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -7654,82 +7541,106 @@ } } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, "ts-loader": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz", - "integrity": "sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw==", + "version": "6.2.1", + "resolved": false, + "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", "dev": true, "requires": { "chalk": "^2.3.0", "enhanced-resolve": "^4.0.0", "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "ts-node": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz", - "integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==", + "version": "8.9.0", + "resolved": false, + "integrity": "sha512-rwkXfOs9zmoHrV8xE++dmNd6ZIS+nmHHCxcV53ekGJrxFLMbp+pizpPS07ARvhwneCIECPppOwbZHvw9sQtU4w==", "dev": true, "requires": { "arg": "^4.1.0", - "diff": "^3.1.0", + "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } } }, "tsconfig-paths": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.6.0.tgz", - "integrity": "sha512-mrqQIP2F4e03aMTCiPdedCIT300//+q0ET53o5WqqtQjmEICxP9yfz/sHTpPqXpssuJEzODsEzJaLRaf5J2X1g==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "dev": true, "requires": { "@types/json5": "^0.0.29", - "deepmerge": "^2.0.1", "json5": "^1.0.1", "minimist": "^1.2.0", "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } } }, "tsconfig-paths-webpack-plugin": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz", + "resolved": false, "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", "dev": true, "requires": { @@ -7739,15 +7650,15 @@ } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, "tsutils": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz", - "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==", + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -7755,7 +7666,7 @@ }, "tty-browserify": { "version": "0.0.0", - "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, @@ -7763,17 +7674,9 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "turndown": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/turndown/-/turndown-5.0.3.tgz", - "integrity": "sha512-popfGXEiedpq6F5saRIAThKxq/bbEPVFnsDnUdjaDGIre9f3/OL9Yi/yPbPcZ7RYUDpekghr666bBfZPrwNnhQ==", "dev": true, "requires": { - "jsdom": "^11.9.0" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -7782,6 +7685,12 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -7797,126 +7706,90 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typedoc": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.14.2.tgz", - "integrity": "sha512-aEbgJXV8/KqaVhcedT7xG6d2r+mOvB5ep3eIz1KuB5sc4fDYXcepEEMdU7XSqLFO5hVPu0nllHi1QxX2h/QlpQ==", - "dev": true, - "requires": { - "@types/fs-extra": "^5.0.3", - "@types/handlebars": "^4.0.38", - "@types/highlight.js": "^9.12.3", - "@types/lodash": "^4.14.110", - "@types/marked": "^0.4.0", - "@types/minimatch": "3.0.3", - "@types/shelljs": "^0.8.0", - "fs-extra": "^7.0.0", - "handlebars": "^4.0.6", - "highlight.js": "^9.13.1", - "lodash": "^4.17.10", - "marked": "^0.4.0", + "version": "0.17.4", + "resolved": false, + "integrity": "sha512-4Lotef1l6lNU5Fulpux809WPlF9CkmcXfv5QFyanrjYlxMFxSdARRdsy8Jv1OU3z0vjR4JsvUQT0YpiPqztcOA==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.6", + "highlight.js": "^9.18.1", + "lodash": "^4.17.15", + "lunr": "^2.3.8", + "marked": "0.8.2", "minimatch": "^3.0.0", - "progress": "^2.0.0", - "shelljs": "^0.8.2", - "typedoc-default-themes": "^0.5.0", - "typescript": "3.2.x" - }, - "dependencies": { - "typescript": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", - "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", - "dev": true - } + "progress": "^2.0.3", + "shelljs": "^0.8.3", + "typedoc-default-themes": "^0.10.0" } }, "typedoc-default-themes": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.5.0.tgz", - "integrity": "sha1-bcJDPnjti+qOiHo6zeLzF4W9Yic=", - "dev": true + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.1.tgz", + "integrity": "sha512-SuqAQI0CkwhqSJ2kaVTgl37cWs733uy9UGUqwtcds8pkFK8oRF4rZmCq+FXTGIb9hIUOu40rf5Kojg0Ha6akeg==", + "dev": true, + "requires": { + "lunr": "^2.3.8" + } }, "typedoc-plugin-markdown": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-1.2.0.tgz", - "integrity": "sha512-M3M9bx8q5u9VppIQ4ATjYV233ZyhRNbxkgTsjy7WVo4UY38dj1JWg90335ZCYktqkNkobSzE2OhVkmbQFGvi2g==", + "version": "2.2.17", + "resolved": false, + "integrity": "sha512-eE6cTeqsZIbjur6RG91Lhx1vTwjR49OHwVPRlmsxY3dthS4FNRL8sHxT5Y9pkosBwv1kSmNGQEPHjMYy1Ag6DQ==", "dev": true, "requires": { - "turndown": "^5.0.3" + "fs-extra": "^8.1.0", + "handlebars": "^4.7.3" } }, "typescript": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", - "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", + "version": "3.8.3", + "resolved": false, + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", "dev": true }, "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.0.tgz", + "integrity": "sha512-j5wNQBWaql8gr06dOUrfaohHlscboQZ9B8sNsoK5o4sBjm7Ht9dxSbrMXyktQpA16Acaij8AcoozteaPYZON0g==", "dev": true, "optional": true, "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } + "commander": "~2.20.3" } }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unique-filename": { @@ -7929,9 +7802,9 @@ } }, "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -7984,9 +7857,9 @@ } }, "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "uri-js": { @@ -8013,21 +7886,21 @@ "dev": true }, "url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, "requires": { "punycode": "1.3.2", "querystring": "0.2.0" - } - }, - "usb": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/usb/-/usb-1.5.0.tgz", - "integrity": "sha512-/0stiQEmweuO2BKv2avzQQ8ypDUjo4Osz5sSEi+d0F4Rc+ddX1xED3uf4Tkelc1eADlfn0JQZYHP0bI7CNDA0Q==", - "requires": { - "nan": "^2.8.0", - "node-pre-gyp": "^0.11.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } } }, "use": { @@ -8043,22 +7916,32 @@ "dev": true, "requires": { "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, "validate-npm-package-license": { @@ -8083,193 +7966,287 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "http://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^2.1.8", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0" } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, "webpack": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.30.0.tgz", - "integrity": "sha512-4hgvO2YbAFUhyTdlR4FNyt2+YaYBYHavyzjCMbZzgglo02rlKi/pcsEzwCuCpsn1ryzIl1cq/u8ArIKu8JBYMg==", - "dev": true, - "requires": { - "@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.0.5", - "acorn-dynamic-import": "^4.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", + "version": "4.43.0", + "resolved": false, + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.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.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" - } - }, - "webpack-cli": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.1.tgz", - "integrity": "sha512-c2inFU7SM0IttEgF7fK6AaUsbBnORRzminvbyRKS+NlbQHVZdCtzKBlavRL5359bFsywXGRAItA5di/IruC8mg==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.0", - "findup-sync": "^2.0.0", - "global-modules": "^1.0.0", - "import-local": "^2.0.0", - "interpret": "^1.1.0", - "loader-utils": "^1.1.0", - "supports-color": "^5.5.0", - "v8-compile-cache": "^2.0.2", - "yargs": "^12.0.5" + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "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" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, - "locate-path": { + "pkg-dir": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "find-up": "^3.0.0" } }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "p-try": "^2.0.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "figgy-pudding": "^3.5.1" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "webpack-cli": { + "version": "3.3.11", + "resolved": false, + "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" } } } @@ -8288,14 +8265,14 @@ }, "webpack-node-externals": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz", + "resolved": false, "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==", "dev": true }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -8310,32 +8287,6 @@ } } }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -8351,48 +8302,86 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, "requires": { "string-width": "^1.0.2 || 2" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "requires": { "errno": "~0.1.7" } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write": { "version": "1.0.3", @@ -8404,49 +8393,22 @@ } }, "write-file-atomic": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", - "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true }, "y18n": { "version": "4.0.0", @@ -8455,27 +8417,27 @@ "dev": true }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "yargs": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", - "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", "dev": true, "requires": { - "cliui": "^4.0.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "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.0.0" + "yargs-parser": "^13.1.1" }, "dependencies": { "ansi-regex": { @@ -8484,67 +8446,12 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -8568,9 +8475,9 @@ } }, "yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -8578,132 +8485,21 @@ } }, "yargs-unparser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz", - "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", "dev": true, "requires": { "flat": "^4.1.0", - "lodash": "^4.17.11", - "yargs": "^12.0.5" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "lodash": "^4.17.15", + "yargs": "^13.3.0" } }, "yn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz", - "integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true - }, - "zxcvbn": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz", - "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA=" } } } diff --git a/ConseilJS-core/package.json b/ConseilJS-core/package.json new file mode 100644 index 00000000..f1527027 --- /dev/null +++ b/ConseilJS-core/package.json @@ -0,0 +1,172 @@ +{ + "name": "conseiljs", + "version": "5.0.0-alpha.2", + "description": "Client-side library for dApp development.", + "browser": "dist/index-web.js", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "test": "mocha \"test/**/*.spec.ts\"", + "integration-test": "mocha -r source-map-support/register -r ts-node/register --full-trace -t 600000 -b false \"integration_test/**/*.spec.ts\"", + "format": "eslint --fix-dry-run src/*/*.ts", + "coverage": "nyc mocha \"test/**/*.spec.ts\" || nyc report | coveralls", + "integration-coverage": "nyc mocha -r source-map-support/register -r ts-node/register --full-trace -t 600000 -b false \"integration_test/**/*.spec.ts\" && nyc report | coveralls", + "release-check": "npm run test && npm audit && npm outdated", + "doc": "rm -rf ./tsdoc && typedoc --readme none --excludeNotExported --mode file --theme markdown --out ./tsdoc ./src", + "compile-tezos-parsers": "nearleyc grammar/tezos/Micheline.ne -o src/chain/tezos/lexer/Micheline.ts && nearleyc grammar/tezos/Michelson.ne -o src/chain/tezos/lexer/Michelson.ts && nearleyc grammar/tezos/EntryPointTemplate.ne -o src/chain/tezos/lexer/EntryPointTemplate.ts", + "package": "rm -rf ./dist && npm run compile-tezos-parsers && tsc && copyfiles -u 1 \"./src/**/*.js\" dist/", + "package-web": "webpack && rm -rf ./dist-web/dist && openssl dgst -sha384 -binary ./dist-web/conseiljs.min.js | openssl base64 -A" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Cryptonomic/ConseilJS.git" + }, + "keywords": [ + "tezos", + "conseil", + "blockchain analytics", + "blockchain reporting", + "blockchain data access", + "web3", + "dapp" + ], + "author": "Cryptonomic Inc", + "license": "Apache-2.0", + "licenses": [ + { + "type": "Apache-2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + } + ], + "bugs": { + "url": "https://github.com/Cryptonomic/ConseilJS/issues" + }, + "homepage": "https://cryptonomic.github.io/ConseilJS/#/", + "nyc": { + "include": [ + "src/**/*.ts" + ], + "exclude": [ + "src/**/lexer/*.*" + ], + "extension": [ + ".ts" + ], + "require": [ + "ts-node/register" + ], + "reporter": [ + "text-lcov" + ], + "sourceMap": true, + "instrument": true + }, + "dependencies": { + "big-integer": "1.6.48", + "blakejs": "1.1.0", + "bs58check": "2.1.2", + "jsonpath-plus": "3.0.0", + "moo": "0.5.0", + "nearley": "2.19.1" + }, + "devDependencies": { + "@types/chai": "4.2.11", + "@types/chai-as-promised": "7.1.2", + "@types/mocha": "7.0.2", + "@types/nock": "11.1.0", + "@types/node": "13.9.1", + "@types/node-fetch": "2.5.6", + "@typescript-eslint/eslint-plugin": "2.29.0", + "@typescript-eslint/parser": "2.29.0", + "awesome-typescript-loader": "5.2.1", + "chai": "4.2.0", + "chai-as-promised": "7.1.1", + "copyfiles": "2.2.0", + "coveralls": "3.0.12", + "eslint": "6.8.0", + "eslint-config-airbnb-base": "14.1.0", + "eslint-plugin-import": "2.20.2", + "glob": "7.1.6", + "loglevel": "1.6.8", + "mocha": "7.1.1", + "nock": "12.0.3", + "node-fetch": "2.6.0", + "nyc": "15.0.1", + "request-promise": "4.2.5", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.18", + "terser-webpack-plugin": "2.3.5", + "ts-loader": "6.2.1", + "ts-node": "8.9.0", + "tsconfig-paths-webpack-plugin": "3.2.0", + "typedoc": "0.17.4", + "typedoc-plugin-markdown": "2.2.17", + "typescript": "3.8.3", + "webpack": "4.43.0", + "webpack-cli": "3.3.11", + "webpack-node-externals": "1.7.2" + }, + "engines": { + "node": ">=12.16.x", + "npm": ">=6.14.x" + }, + "eslintConfig": { + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "env": { + "mocha": true, + "node": true + }, + "overrides": [ + { + "files": [ + "**/**/*.ts" + ], + "excludedFiles": [ + "lexer/*.ts" + ] + } + ], + "extends": "airbnb-base", + "rules": { + "comma-dangle": [ + 2, + "never" + ], + "curly": [ + 2, + "all" + ], + "indent": [ + 1, + 4 + ], + "max-len": [ + 2, + { + "code": 200, + "ignoreTrailingComments": true + } + ], + "no-tabs": [ + 2 + ], + "quotes": [ + 2, + "single" + ], + "array-element-newline": [ + 2, + { + "multiline": true, + "minItems": 5 + } + ] + } + } +} diff --git a/ConseilJS-core/src/chain/tezos/TezosContractIntrospector.ts b/ConseilJS-core/src/chain/tezos/TezosContractIntrospector.ts new file mode 100644 index 00000000..a9df26bd --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/TezosContractIntrospector.ts @@ -0,0 +1,55 @@ +import { TezosConseilClient } from '../../reporting/tezos/TezosConseilClient'; +import { TezosLanguageUtil } from './TezosLanguageUtil'; +import { EntryPoint } from '../../types/tezos/ContractIntrospectionTypes'; +import { ConseilServerInfo } from '../../types/conseil/QueryTypes'; +import * as EntryPointTemplate from './lexer/EntryPointTemplate'; +import * as nearley from 'nearley'; + +/** + * Functions for performing contract introspection, such as generating the entry points of a smart contract. + */ +export namespace TezosContractIntrospector { + /** + * Generates invocation templates given Michelson contract parameter section. + * + * @param {string} params - The parameters section of the smart contract in Michelson format. + * @returns {EntryPoint[]} Information about the entry points, including name, parameters, structure, and invocation parameter generator. + */ + export function generateEntryPointsFromParams(params: string): EntryPoint[] { + const parser: nearley.Parser = new nearley.Parser(nearley.Grammar.fromCompiled(EntryPointTemplate.default)); + parser.feed(TezosLanguageUtil.normalizeMichelineWhiteSpace(TezosLanguageUtil.stripComments(params))); + + const entryPoints = parser.results[0]; + + if (entryPoints.length === 1) { + entryPoints[0].name = 'default'; + } + + return entryPoints; + } + + /** + * Generates the entry points of the given smart contract code in Michelson. + * + * @param {string} contractCode - The entire code of the smart contract. + * @returns {EntryPoint[]} Information about the entry points, including name, parameters, structure, and invocation parameter generator. + */ + export function generateEntryPointsFromCode(contractCode: string): EntryPoint[] { + const contractParameter: string = TezosLanguageUtil.preProcessMichelsonScript(contractCode)[0]; + return generateEntryPointsFromParams(contractParameter); + } + + /** + * Generates the entry points of the smart contract at the given address. + * + * @param {ConseilServerInfo} conseilServer - Conseil server connection definition. + * @param {string} network - Tezos network to query, mainnet, alphanet, etc. + * @param {string} contractAddress - The address of the smart contract. + * @returns {Promise} Information about the entry points, including name, parameters, structure, and invocation parameter generator. + */ + export async function generateEntryPointsFromAddress(conseilServer: ConseilServerInfo, network: string, contractAddress: string): Promise { + const account = await TezosConseilClient.getAccount(conseilServer, network, contractAddress); + const contractCode: string = account.script; + return generateEntryPointsFromCode(contractCode); + } +} diff --git a/src/chain/tezos/TezosLanguageUtil.ts b/ConseilJS-core/src/chain/tezos/TezosLanguageUtil.ts similarity index 90% rename from src/chain/tezos/TezosLanguageUtil.ts rename to ConseilJS-core/src/chain/tezos/TezosLanguageUtil.ts index 2db29471..23ae65ad 100644 --- a/src/chain/tezos/TezosLanguageUtil.ts +++ b/ConseilJS-core/src/chain/tezos/TezosLanguageUtil.ts @@ -13,7 +13,7 @@ const MichelineKeywords = ['"parameter"', '"storage"', '"code"', '"False"', '"El export namespace TezosLanguageUtil { /** * Parse out a single message from a hex string. - * @param {string} hex + * @param {string} hex * @returns {codeEnvelope} Parsed Micheline object as a string along with the number of bytes that was consumed in the process. */ export function hexToMicheline(hex: string): codeEnvelope { @@ -24,7 +24,7 @@ export namespace TezosLanguageUtil { offset += 2; switch (fieldType) { - case '00': { // literal natural int + case '00': { // literal int or nat const value = TezosMessageUtils.findInt(hex.substring(offset), 0, true); code += `{ "int": "${value.value}" }`; offset += value.length; @@ -40,7 +40,7 @@ export namespace TezosLanguageUtil { const length = parseInt(hex.substring(offset, offset + 8), 16); offset += 8; let buffer: string[] = []; - let consumed = 0; + let consumed = 0; while (consumed < length) { let envelope = hexToMicheline(hex.substring(offset)); buffer.push(envelope.code); @@ -156,22 +156,28 @@ export namespace TezosLanguageUtil { * Converts Michelson to Micheline and wraps the result in a script property. */ export function translateMichelsonToMicheline(code: string): string { - const parser = new nearley.Parser(nearley.Grammar.fromCompiled(Michelson)); + const parser = new nearley.Parser(nearley.Grammar.fromCompiled(Michelson.default)); preProcessMichelsonScript(code).forEach(p => { parser.feed(p); }); - //TODO: parser.results[0] is a workaround to a bug which causes duplicate matches return parser.results[0]; } /** - * Convenience function to take Michelson code straight to hex, calls translateMichelsonToMicheline() then translateMichelineToHex() internally. - * + * Converts simple (read non-lambda) Michelson parameters to Micheline and wraps the result in a script property. + */ + export function translateParameterMichelsonToMicheline(code: string): string { + return translateMichelsonToMicheline(code); + } + + /** + * Convenience function to take Michelson contract straight to hex, calls translateMichelsonToMicheline() then translateMichelineToHex() internally. + * * @param {string} code Michelson code string * @returns {string} hex-encoded contract content */ export function translateMichelsonToHex(code: string): string { return preProcessMicheline(translateMichelsonToMicheline(code)) - .map(p => { var c = normalizeMichelineWhiteSpace(p); console.log(`--- C ${c}`); return c; } ) + .map(p => { var c = normalizeMichelineWhiteSpace(p); return c; } ) .map(p => translateMichelineToHex(p)) .reduce((m, p) => { return m += ('0000000' + (p.length / 2).toString(16)).slice(-8) + p; }, ''); } @@ -185,9 +191,9 @@ export namespace TezosLanguageUtil { return parts; } - + function getSection(container: any, key: string): string { - let root = container; + let root = container; if (!!container.script) { root = container.script; } for (let i = 0; i < root.length; i++) { @@ -203,7 +209,7 @@ export namespace TezosLanguageUtil { * Translate Micheline fragment into hex. Resulting hex string may need to be processed further before being submitted to the server. */ export function translateMichelineToHex(code: string): string { - const parser = new nearley.Parser(nearley.Grammar.fromCompiled(Micheline)); + const parser = new nearley.Parser(nearley.Grammar.fromCompiled(Micheline.default)); parser.feed(normalizeMichelineWhiteSpace(code)); return parser.results.join(''); } @@ -222,7 +228,7 @@ export namespace TezosLanguageUtil { /** * Translated a plain hex-encoded int into a Michelson/Micheline keyword. - * + * * @param hex Hex-encoded contract to process * @param offset Offset to read one byte from * @returns {string} Michelson/Micheline keyword @@ -233,10 +239,10 @@ export namespace TezosLanguageUtil { /** * Translates hex-encoded stream into a collection of annotations. Determines the length internally. Annotations are prefixed with ':', '@', or '%' for type, variable, and field annotations. - * + * * @param {string} hex Hex-encoded contract fragment to process * @returns {codeEnvelope} Parsed annotations and the number of consumed bytes. - * * @see [Michelson Annotations]{@link https://tezos.gitlab.io/master/whitedoc/michelson.html#annotations} + * * @see [Michelson Annotations]{@link https://tezos.gitlab.io/whitedoc/michelson.html#annotations} */ function michelineHexToAnnotations(hex: string): codeEnvelope { const stringEnvelope = michelineHexToString(hex); @@ -248,9 +254,9 @@ export namespace TezosLanguageUtil { */ export function preProcessMichelsonScript(code: string): string[] { let sections = new Map(); - sections['parameter'] = code.search(/parameter/), - sections['storage'] = code.search(/storage/), - sections['code'] = code.search(/code/) + sections['parameter'] = code.search(/(^|\s+)parameter/m); + sections['storage'] = code.search(/(^|\s+)storage/m); + sections['code'] = code.search(/(^|\s+)code/m); const boundaries = Object.values(sections).sort((a, b) => Number(a) - Number(b) ); sections[Object.keys(sections).find(key => sections[key] === boundaries[0]) + ''] = code.substring(boundaries[0], boundaries[1]); @@ -276,9 +282,23 @@ export namespace TezosLanguageUtil { .replace(/":\[/g, '": [') .replace(/{"/g, '{ "') .replace(/"}/g, '" }') + .replace(/,"/g, ', "') .replace(/","/g, '", "') .replace(/\[\[/g, '[ [') - .replace(/\]\]/g, '] ]'); + .replace(/\]\]/g, '] ]') + .replace(/\["/g, '\[ "') + .replace(/"\]/g, '" \]') + .replace(/\[ +\]/g, '\[\]') + .trim(); + } + + /** + * + * + * @param fragment + */ + export function stripComments(fragment: string): string { + return fragment.trim().split('\n').map(l => l.replace(/\#[\s\S]+$/, '').trim()).filter(v => v.length > 0).join(' '); } interface codeEnvelope { diff --git a/src/chain/tezos/TezosMessageCodec.ts b/ConseilJS-core/src/chain/tezos/TezosMessageCodec.ts similarity index 72% rename from src/chain/tezos/TezosMessageCodec.ts rename to ConseilJS-core/src/chain/tezos/TezosMessageCodec.ts index 5fa7e611..30f92fb8 100644 --- a/src/chain/tezos/TezosMessageCodec.ts +++ b/ConseilJS-core/src/chain/tezos/TezosMessageCodec.ts @@ -1,28 +1,34 @@ import { TezosMessageUtils } from "./TezosMessageUtil"; import { TezosLanguageUtil } from "./TezosLanguageUtil"; -import { Activation, Ballot, BallotVote, Operation } from "../../types/tezos/TezosChainTypes"; - -const operationTypes: Array = [ - "endorsement", - "seedNonceRevelation", - "doubleEndorsementEvidence", - "doubleBakingEvidence", - "accountActivation", - "proposal", - "ballot", - "reveal", - "transaction", - "origination", - "delegation" -]; +import { Activation, Ballot, BallotVote, Transaction, Delegation, Origination, Reveal, Operation, ContractParameters } from "../../types/tezos/TezosP2PMessageTypes"; + +const operationTypes: Map = new Map([ + [0, 'endorsement'], + [1, 'seedNonceRevelation'], + [2, 'doubleEndorsementEvidence'], + [3, 'doubleBakingEvidence'], + [4, 'accountActivation'], + [5, 'proposal'], + [6, 'ballot'], + [7, 'reveal'], + [8, 'transaction'], + [9, 'origination'], + [10, 'delegation'], + [107, 'reveal'], // >=P005 + [108, 'transaction'], // >=P005 + [109, 'origination'], // >=P005 + [110, 'delegation'] // >=P005 +]); + +const sepyTnoitarepo: Map = [...operationTypes.keys()].reduce((m, k) => { const v = operationTypes.get(k) || ''; if (m[v] > k) { return m; } return { ...m, [v]: k } }, new Map()); export namespace TezosMessageCodec { /** * Parse operation type from a bounded hex string and translate to enum. - * @param {string} hex + * @param {string} hex */ - export function getOperationType(hex: string) { - return operationTypes[TezosMessageUtils.readInt(hex)]; + export function getOperationType(hex: string): string { + return operationTypes.get(TezosMessageUtils.readInt(hex)) || ''; } /** @@ -35,7 +41,7 @@ export namespace TezosMessageCodec { /** * Parse an operation of unknown length, possibly containing siblings. - * + * * @param {string} hex Encoded message * @param {string} opType Operation type to parse * @param {boolean} isFirst Flag to indicate first operation of Operation Group @@ -71,9 +77,9 @@ export namespace TezosMessageCodec { /** * "Forges" Tezos P2P messages. - * + * * @param {any} hex Message to encode - * + * * @returns {string} Hex string of the message content */ export function encodeOperation(message: any): string { @@ -83,10 +89,10 @@ export namespace TezosMessageCodec { if (message.hasOwnProperty('kind')) { const operation = message as Operation; - if (operation.kind === 'reveal') { return encodeReveal(operation); } - if (operation.kind === 'transaction') { return encodeTransaction(operation); } - if (operation.kind === 'origination') { return encodeOrigination(operation); } - if (operation.kind === 'delegation') { return encodeDelegation(operation); } + if (operation.kind === 'reveal') { return encodeReveal(message as Reveal); } + if (operation.kind === 'transaction') { return encodeTransaction(message as Transaction); } + if (operation.kind === 'origination') { return encodeOrigination(message as Origination); } + if (operation.kind === 'delegation') { return encodeDelegation(message as Delegation); } } if (message.hasOwnProperty('vote')) { @@ -98,11 +104,11 @@ export namespace TezosMessageCodec { /** * "Forges" Tezos P2P Activation message. Note that to be sent to the node it will need to be added to an operation group or be prepended with a Branch. - * + * * @param activation Message to encode */ export function encodeActivation(activation: Activation): string { - let hex = TezosMessageUtils.writeInt(operationTypes.indexOf('accountActivation')); + let hex = TezosMessageUtils.writeInt(sepyTnoitarepo['accountActivation']); hex += TezosMessageUtils.writeAddress(activation.pkh).slice(4); hex += activation.secret; @@ -111,7 +117,7 @@ export namespace TezosMessageCodec { /** * Parse a Ballot, tag 6, message possibly containing siblings. - * + * * @param {string} ballotMessage Encoded ballot message * @param {boolean} isFirst Flag to indicate first operation of Operation Group. */ @@ -148,6 +154,7 @@ export namespace TezosMessageCodec { } const ballot: Ballot = { + kind: 'ballot', source: source, period: period, proposal: proposal, @@ -166,11 +173,11 @@ export namespace TezosMessageCodec { /** * "Forges" Tezos P2P Ballot message. Note that to be sent to the node it will need to be added to an operation group or be prepended with a Branch. - * + * * @param ballot Message to encode */ export function encodeBallot(ballot: Ballot): string { - let hex = TezosMessageUtils.writeInt(operationTypes.indexOf('ballot')); + let hex = TezosMessageUtils.writeInt(sepyTnoitarepo['ballot']); hex += TezosMessageUtils.writeAddress(ballot.source).slice(2); hex += ('00000000' + ballot.period.toString(16)).slice(-8); hex += TezosMessageUtils.writeBufferWithHint(ballot.proposal).toString('hex').slice(4); @@ -181,7 +188,7 @@ export namespace TezosMessageCodec { /** * Parse a Reveal, tag 7, message possibly containing siblings. - * + * * @param {string} revealMessage Encoded reveal-type message * @param {boolean} isFirst Flag to indicate first operation of Operation Group. */ @@ -200,8 +207,14 @@ export namespace TezosMessageCodec { fieldoffset += 2; // type } - let source = TezosMessageUtils.readAddress(revealMessage.substring(fieldoffset, fieldoffset + 44)); - fieldoffset += 44; + let source = ''; + if (parseInt(hexOperationType, 16) < 100) { // pre protocol 5 + source = TezosMessageUtils.readAddress(revealMessage.substring(fieldoffset, fieldoffset + 44)); + fieldoffset += 44; + } else { // post protocol 5 + source = TezosMessageUtils.readAddress(revealMessage.substring(fieldoffset, fieldoffset + 42)); + fieldoffset += 42; + } let feeInfo = TezosMessageUtils.findInt(revealMessage, fieldoffset); @@ -245,15 +258,14 @@ export namespace TezosMessageCodec { /** * Creates a hex string for the provided reveal operation. Note that to be sent to the node it will need to be added to an operation group or be prepended with a Branch. - * + * * @param {string} reveal A reveal operation to be encoded. */ - export function encodeReveal(reveal: Operation): string { + export function encodeReveal(reveal: Reveal): string { if (reveal.kind !== 'reveal') { throw new Error('Incorrect operation type.'); } - if (reveal.public_key === undefined) { throw new Error('Missing public key.'); } - let hex = TezosMessageUtils.writeInt(operationTypes.indexOf('reveal')); - hex += TezosMessageUtils.writeAddress(reveal.source); + let hex = TezosMessageUtils.writeInt(sepyTnoitarepo['reveal']); + hex += TezosMessageUtils.writeAddress(reveal.source).slice(2); hex += TezosMessageUtils.writeInt(parseInt(reveal.fee)); hex += TezosMessageUtils.writeInt(parseInt(reveal.counter)); hex += TezosMessageUtils.writeInt(parseInt(reveal.gas_limit)); @@ -265,7 +277,7 @@ export namespace TezosMessageCodec { /** * Parse a Transaction, tag 8, message possibly containing siblings. - * + * * @param {string} transactionMessage Encoded transaction-type message * @param {boolean} isFirst Flag to indicate first operation of Operation Group. */ @@ -284,8 +296,14 @@ export namespace TezosMessageCodec { fieldoffset += 2; // type } - let source = TezosMessageUtils.readAddress(transactionMessage.substring(fieldoffset, fieldoffset + 44)); - fieldoffset += 44; + let source = ''; + if (parseInt(hexOperationType, 16) < 100) { // pre protocol 5 + source = TezosMessageUtils.readAddress(transactionMessage.substring(fieldoffset, fieldoffset + 44)); + fieldoffset += 44; + } else { // post protocol 5 + source = TezosMessageUtils.readAddress(transactionMessage.substring(fieldoffset, fieldoffset + 42)); + fieldoffset += 42; + } let feeInfo = TezosMessageUtils.findInt(transactionMessage, fieldoffset); @@ -307,14 +325,46 @@ export namespace TezosMessageCodec { let hasParameters = TezosMessageUtils.readBoolean(transactionMessage.substring(fieldoffset, fieldoffset + 2)); fieldoffset += 2; - let parameters = ''; - if (hasParameters) { + let parameters: string | ContractParameters = ''; + + if (hasParameters && parseInt(hexOperationType, 16) < 100) { // pre protocol 5 const paramLength = parseInt(transactionMessage.substring(fieldoffset, fieldoffset + 8), 16); fieldoffset += 8; const codeEnvelope = TezosLanguageUtil.hexToMicheline(transactionMessage.substring(fieldoffset)); parameters = codeEnvelope.code; if (codeEnvelope.consumed !== paramLength * 2) { throw new Error('Failed to parse transaction parameters: length mismatch'); } fieldoffset += paramLength * 2; + } else if (hasParameters && parseInt(hexOperationType, 16) > 100) { // post protocol 5 + const entrypointType = parseInt(transactionMessage.substring(fieldoffset, fieldoffset + 2), 16); + fieldoffset += 2; + + let entrypointName = '' + if (entrypointType === 255) { + const endpointLength = parseInt(transactionMessage.substring(fieldoffset, fieldoffset + 2), 16); + fieldoffset += 2; + + entrypointName = Buffer.from(transactionMessage.substring(fieldoffset, fieldoffset + endpointLength * 2), 'hex').toString(); + fieldoffset += endpointLength * 2; + } else if (entrypointType === 0) { + entrypointName = 'default'; + } else if (entrypointType === 1) { + entrypointName = 'root'; + } else if (entrypointType === 2) { + entrypointName = 'do'; + } else if (entrypointType === 3) { + entrypointName = 'set_delegate'; + } else if (entrypointType === 4) { + entrypointName = 'remove_delegate'; + } + + const paramLength = parseInt(transactionMessage.substring(fieldoffset, fieldoffset + 8), 16); + fieldoffset += 8; + const codeEnvelope = TezosLanguageUtil.hexToMicheline(transactionMessage.substring(fieldoffset)); + const endpointParameters = codeEnvelope.code; + if (codeEnvelope.consumed !== paramLength * 2) { throw new Error('Failed to parse transaction parameters: length mismatch'); } + fieldoffset += paramLength * 2; + + parameters = { entrypoint: entrypointName, value: endpointParameters }; } let next; @@ -346,19 +396,19 @@ export namespace TezosMessageCodec { /** * Encodes a Transaction operation. - * - * @param {Operation} transaction + * + * Warning, `Operation.parameters` is expected to be of type `ContractParameters`. Furthermore, `ContractParameters.entrypoint` is expected to exclude the leading '%'. Finally P005 requires that the entry point name be no more than 31 chars. + * + * @param {Operation} transaction * @returns {string} - * - * @see {@link https://tezos.gitlab.io/mainnet/api/p2p.html#transaction-tag-8|Tezos P2P message format} + * + * @see {@link https://tezos.gitlab.io/api/p2p.html#transaction-tag-108 | Tezos P2P message format} */ - export function encodeTransaction(transaction: Operation): string { + export function encodeTransaction(transaction: Transaction): string { if (transaction.kind !== 'transaction') { throw new Error('Incorrect operation type'); } - if (transaction.amount === undefined) { throw new Error('Missing amount'); } - if (transaction.destination === undefined) { throw new Error('Missing destination'); } - let hex = TezosMessageUtils.writeInt(operationTypes.indexOf('transaction')); - hex += TezosMessageUtils.writeAddress(transaction.source); + let hex = TezosMessageUtils.writeInt(sepyTnoitarepo['transaction']); + hex += TezosMessageUtils.writeAddress(transaction.source).slice(2); hex += TezosMessageUtils.writeInt(parseInt(transaction.fee)); hex += TezosMessageUtils.writeInt(parseInt(transaction.counter)); hex += TezosMessageUtils.writeInt(parseInt(transaction.gas_limit)); @@ -367,9 +417,37 @@ export namespace TezosMessageCodec { hex += TezosMessageUtils.writeAddress(transaction.destination); if (!!transaction.parameters) { - const code = TezosLanguageUtil.normalizeMichelineWhiteSpace(JSON.stringify(transaction.parameters)); + const composite = transaction.parameters as ContractParameters; + const code = TezosLanguageUtil.normalizeMichelineWhiteSpace(JSON.stringify(composite.value)); const result = TezosLanguageUtil.translateMichelineToHex(code); - hex += 'ff' + ('0000000' + (result.length / 2).toString(16)).slice(-8) + result; // prefix byte length + + if ((composite.entrypoint === 'default' || composite.entrypoint === '') && result === '030b') { + hex += '00'; + } else { + hex += 'ff'; + + if (composite.entrypoint === 'default' || composite.entrypoint === '') { + hex += '00'; + } else if (composite.entrypoint === 'root') { + hex += '01'; + } else if (composite.entrypoint === 'do') { + hex += '02'; + } else if (composite.entrypoint === 'set_delegate') { + hex += '03'; + } else if (composite.entrypoint === 'remove_delegate') { + hex += '04'; + } else { + hex += 'ff' + + ('0' + composite.entrypoint.length.toString(16)).slice(-2) + + composite.entrypoint.split('').map(c => c.charCodeAt(0).toString(16)).join(''); + } + + if (result === '030b') { // { "prim": "Unit" } + hex += '00'; + } else { + hex += ('0000000' + (result.length / 2).toString(16)).slice(-8) + result; // prefix byte length + } + } } else { hex += '00'; } @@ -379,7 +457,7 @@ export namespace TezosMessageCodec { /** * Parse an Origination, tag 9, message possibly containing siblings. - * + * * @param {string} originationMessage Encoded origination-type message * @param {boolean} isFirst Flag to indicate first operation of Operation Group. */ @@ -398,8 +476,14 @@ export namespace TezosMessageCodec { fieldoffset += 2; // type } - let source = TezosMessageUtils.readAddress(originationMessage.substring(fieldoffset, fieldoffset + 44)); - fieldoffset += 44; + let source = ''; + if (parseInt(hexOperationType, 16) < 100) { // pre protocol 5 + source = TezosMessageUtils.readAddress(originationMessage.substring(fieldoffset, fieldoffset + 44)); + fieldoffset += 44; + } else { // post protocol 5 + source = TezosMessageUtils.readAddress(originationMessage.substring(fieldoffset, fieldoffset + 42)); + fieldoffset += 42; + } let feeInfo = TezosMessageUtils.findInt(originationMessage, fieldoffset); @@ -413,18 +497,25 @@ export namespace TezosMessageCodec { let storageInfo = TezosMessageUtils.findInt(originationMessage, fieldoffset); fieldoffset += storageInfo.length; - let publickeyhash = TezosMessageUtils.readAddress(originationMessage.substring(fieldoffset, fieldoffset + 42)); - fieldoffset += 42; + let manager_pubkey = '' + if (parseInt(hexOperationType, 16) < 100) { // pre protocol 5 + manager_pubkey = TezosMessageUtils.readAddress(originationMessage.substring(fieldoffset, fieldoffset + 42)); + fieldoffset += 42; + } let balanceInfo = TezosMessageUtils.findInt(originationMessage, fieldoffset); - fieldoffset += balanceInfo.length; - let spendable = TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); - fieldoffset += 2; - let delegatable = TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); + let spendable = false; + let delegatable = false; + if (parseInt(hexOperationType, 16) < 100) { // pre protocol 5 + spendable = TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); + fieldoffset += 2; + + delegatable = TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); + fieldoffset += 2; + } - fieldoffset += 2; let hasDelegate = TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); fieldoffset += 2; @@ -434,9 +525,13 @@ export namespace TezosMessageCodec { fieldoffset += 42; } - let hasScript = TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); - fieldoffset += 2; - let script = ''; + let hasScript = true; + if (parseInt(hexOperationType, 16) < 100) { // pre protocol 5 + hasScript = TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); + fieldoffset += 2; + } + + let script = {}; if (hasScript) { let codesize = parseInt(originationMessage.substring(fieldoffset, fieldoffset + 8), 16); fieldoffset += 8; @@ -450,7 +545,7 @@ export namespace TezosMessageCodec { const storage = TezosLanguageUtil.hexToMicheline(originationMessage.substring(fieldoffset, fieldoffset + storagesize * 2)).code; fieldoffset += storagesize * 2; - script = `{ "script": [ ${code}, ${storage} ] }`; + script = JSON.parse(`{ "script": [ ${code}, ${storage} ] }`); } let next; @@ -458,13 +553,10 @@ export namespace TezosMessageCodec { next = getOperationType(originationMessage.substring(fieldoffset, fieldoffset + 2)); } - const origination: Operation = { + let origination: Operation = { kind: "origination", source: source, - managerPubkey: publickeyhash, balance: balanceInfo.value + "", - spendable: spendable, - delegatable: delegatable, delegate: hasDelegate ? delegate : undefined, fee: feeInfo.value + "", gas_limit: gasInfo.value + "", @@ -473,6 +565,12 @@ export namespace TezosMessageCodec { script: hasScript ? script : undefined, }; + if (parseInt(hexOperationType, 16) < 100) { // pre protocol 5 + origination.manager_pubkey = manager_pubkey; + origination.spendable = spendable; + origination.delegatable = delegatable; + } + const envelope: OperationEnvelope = { operation: origination, branch: branch, @@ -485,24 +583,19 @@ export namespace TezosMessageCodec { /** * "Forges" Tezos P2P Origination message. Note that to be sent to the node it will need to be added to an operation group or be prepended with a Branch. Script parameter, if present, is expected to be in Micheline format. - * + * * @param origination Message to encode */ - export function encodeOrigination(origination: Operation): string { + export function encodeOrigination(origination: Origination): string { if (origination.kind !== 'origination') { throw new Error('Incorrect operation type'); } - if (origination.managerPubkey === undefined) { throw new Error('Missing manager address'); } - if (origination.balance === undefined) { throw new Error('Missing balance'); } - let hex = TezosMessageUtils.writeInt(operationTypes.indexOf('origination')); - hex += TezosMessageUtils.writeAddress(origination.source); + let hex = TezosMessageUtils.writeInt(sepyTnoitarepo['origination']); + hex += TezosMessageUtils.writeAddress(origination.source).slice(2); hex += TezosMessageUtils.writeInt(parseInt(origination.fee)); hex += TezosMessageUtils.writeInt(parseInt(origination.counter)); hex += TezosMessageUtils.writeInt(parseInt(origination.gas_limit)); hex += TezosMessageUtils.writeInt(parseInt(origination.storage_limit)); - hex += TezosMessageUtils.writeAddress(origination.managerPubkey).slice(2); hex += TezosMessageUtils.writeInt(parseInt(origination.balance)); - hex += origination.spendable !== undefined ? TezosMessageUtils.writeBoolean(origination.spendable) : '00'; - hex += origination.delegatable !== undefined ? TezosMessageUtils.writeBoolean(origination.delegatable) : '00'; if (origination.delegate !== undefined) { hex += TezosMessageUtils.writeBoolean(true); @@ -512,20 +605,14 @@ export namespace TezosMessageCodec { } if (!!origination.script) { - hex += 'ff'; - let container: any = origination.script; - try { container = JSON.parse(origination.script as string); } catch { } - let parts: string[] = []; - parts.push(JSON.stringify(container['code'], null, 1)); // full contract definition containing code, storage and parameters properties - parts.push(JSON.stringify(container['storage'], null, 1)); // initial storage + parts.push(origination.script['code']); // full contract definition containing code, storage and parameters properties + parts.push(origination.script['storage']); // initial storage hex += parts - .map(p => TezosLanguageUtil.normalizeMichelineWhiteSpace(p)) + .map(p => TezosLanguageUtil.normalizeMichelineWhiteSpace(JSON.stringify(p))) .map(p => TezosLanguageUtil.translateMichelineToHex(p)) .reduce((m, p) => { return m += ('0000000' + (p.length / 2).toString(16)).slice(-8) + p; }, ''); - } else { - hex += '00'; } return hex; @@ -533,7 +620,7 @@ export namespace TezosMessageCodec { /** * Parse an Delegation, tag 10, message possibly containing siblings. - * + * * @param {string} delegationMessage Encoded delegation-type message * @param {boolean} isFirst Flag to indicate first operation of Operation Group. */ @@ -552,8 +639,14 @@ export namespace TezosMessageCodec { fieldoffset += 2; // type } - let source = TezosMessageUtils.readAddress(delegationMessage.substring(fieldoffset, fieldoffset + 44)); - fieldoffset += 44; + let source = ''; + if (parseInt(hexOperationType, 16) < 100) { // pre protocol 5 + source = TezosMessageUtils.readAddress(delegationMessage.substring(fieldoffset, fieldoffset + 44)); + fieldoffset += 44; + } else { // post protocol 5 + source = TezosMessageUtils.readAddress(delegationMessage.substring(fieldoffset, fieldoffset + 42)); + fieldoffset += 42; + } let feeInfo = TezosMessageUtils.findInt(delegationMessage, fieldoffset); @@ -603,20 +696,20 @@ export namespace TezosMessageCodec { /** * "Forges" Tezos P2P Delegation message. Note that to be sent to the node it will need to be added to an operation group or be prepended with a Branch. - * + * * @param delegation Message to encode */ - export function encodeDelegation(delegation: Operation): string { + export function encodeDelegation(delegation: Delegation): string { if (delegation.kind !== 'delegation') { throw new Error('Incorrect operation type'); } - let hex = TezosMessageUtils.writeInt(operationTypes.indexOf('delegation')); - hex += TezosMessageUtils.writeAddress(delegation.source); + let hex = TezosMessageUtils.writeInt(sepyTnoitarepo['delegation']); + hex += TezosMessageUtils.writeAddress(delegation.source).slice(2); hex += TezosMessageUtils.writeInt(parseInt(delegation.fee)); hex += TezosMessageUtils.writeInt(parseInt(delegation.counter)); hex += TezosMessageUtils.writeInt(parseInt(delegation.gas_limit)); hex += TezosMessageUtils.writeInt(parseInt(delegation.storage_limit)); - if (delegation.delegate !== undefined) { + if (delegation.delegate !== undefined && delegation.delegate !== '') { hex += TezosMessageUtils.writeBoolean(true); hex += TezosMessageUtils.writeAddress(delegation.delegate).slice(2); } else { @@ -628,7 +721,7 @@ export namespace TezosMessageCodec { /** * Parse an operation group. - * + * * @param {string} hex Encoded message stream */ export function parseOperationGroup(hex: string): Array { diff --git a/src/chain/tezos/TezosMessageUtil.ts b/ConseilJS-core/src/chain/tezos/TezosMessageUtil.ts similarity index 61% rename from src/chain/tezos/TezosMessageUtil.ts rename to ConseilJS-core/src/chain/tezos/TezosMessageUtil.ts index 8ecc3588..73a37e60 100644 --- a/src/chain/tezos/TezosMessageUtil.ts +++ b/ConseilJS-core/src/chain/tezos/TezosMessageUtil.ts @@ -1,14 +1,11 @@ /*eslint no-bitwise: 0*/ import base58check from "bs58check"; -import baseN from "base-n"; import bigInt from 'big-integer'; +import * as blakejs from 'blakejs'; import { SignedOperationGroup } from '../../types/tezos/TezosChainTypes'; -import { CryptoUtils } from '../../utils/CryptoUtils'; - -const base128 = baseN.create({ - characters: [...Array(128).keys()].map(k => ('0' + k.toString(16)).slice(-2)) -}); +import { TezosLanguageUtil } from './TezosLanguageUtil'; +import { TezosParameterFormat } from '../../types/tezos/TezosChainTypes'; /** * A collection of functions to encode and decode various Tezos P2P message components like amounts, addresses, hashes, etc. @@ -31,13 +28,13 @@ export namespace TezosMessageUtils { } /** - * Encodes an integer into hex after converting it to Zarith format. + * Encodes an uint into hex after converting it to Zarith format. * @param {number} value Number to be obfuscated. */ export function writeInt(value: number): string { if (value < 0) { throw new Error('Use writeSignedInt to encode negative numbers'); } //@ts-ignore - return Buffer.from(Buffer.from(base128.encode(value), 'hex').map((v, i) => { return i === 0 ? v : v ^ 0x80; }).reverse()).toString('hex'); + return Buffer.from(Buffer.from(twoByteHex(value), 'hex').map((v, i) => { return i === 0 ? v : v ^ 0x80; }).reverse()).toString('hex'); } /** @@ -77,14 +74,13 @@ export namespace TezosMessageUtils { } /** - * Takes a bounded hex string that is known to contain a number and decodes the int. + * Takes a bounded hex string that is known to contain a number in Zarith format and decodes the uint. * @param {string} hex Encoded message part. */ export function readInt(hex: string): number { - return base128.decode( - //@ts-ignore - Buffer.from(Buffer.from(hex, 'hex').reverse().map((v, i) => { return i === 0 ? v : v & 0x7f; })).toString('hex') - ); + //@ts-ignore + const h = Buffer.from(Buffer.from(hex, 'hex').reverse().map((v, i) => { return i === 0 ? v : v & 0x7f; })).toString('hex') + return fromByteHex(h); } export function readSignedInt(hex: string): number { @@ -124,6 +120,27 @@ export namespace TezosMessageUtils { return signed ? { value: readSignedInt(buffer), length: i * 2 } : { value: readInt(buffer), length: i * 2 }; } + export function writeString(value: string): string { + const len = dataLength(value.length); + const text = value.split('').map(c => c.charCodeAt(0).toString(16)).join(''); + + return len + text; + } + + export function readString(hex: string): string { + const stringLen = parseInt(hex.substring(0, 8), 16); + if (stringLen === 0) { return ''; } + + const stringHex = hex.slice(8); + + let text = ''; + for (let i = 0; i < stringHex.length; i += 2) { + text += String.fromCharCode(parseInt(stringHex.substring(i, i + 2), 16)); + } + + return text; + } + /** * Takes a bounded hex string that is known to contain a Tezos address and decodes it. Supports implicit tz1, tz2, tz3 accounts and originated kt1. * An address is a public key hash of the account. @@ -152,6 +169,8 @@ export namespace TezosMessageUtils { /** * Reads an address value from binary and decodes it into a Base58-check address without a prefix. * + * This is data type is referred to as `$contract_id` in the official documentation. + * * @param {Buffer | Uint8Array} b Bytes containing address. * @param hint One of: 'kt1', 'tz1', 'tz2', 'tz3'. */ @@ -174,6 +193,8 @@ export namespace TezosMessageUtils { /** * Encodes a Tezos address to hex, stripping off the top 3 bytes which contain address type, either 'tz1', 'tz2', 'tz3' or 'kt1'. Message format contains hints on address type. * + * This is data type is referred to as `$contract_id` in the official documentation. Cutting off the first byte (2-chars) makes this string compatible with `$public_key_hash` as well. + * * @param {string} address Base58-check address to encode. * @returns {string} Hex representation of a Tezos address. */ @@ -188,7 +209,7 @@ export namespace TezosMessageUtils { } else if (address.startsWith("KT1")) { return "01" + hex + "00"; } else { - throw new Error("Unrecognized address type"); + throw new Error(`Unrecognized address prefix: ${address.substring(0, 3)}`); } } @@ -205,10 +226,10 @@ export namespace TezosMessageUtils { * Encodes the branch hash to hex. * * @param {string} branch Branch hash. - * @returns {string} Hex represntaton of the Base58-check branch hash. + * @returns {string} Hex representation of the Base58-check branch hash. */ export function writeBranch(branch: string): string { - return base58check.decode(branch).toString("hex").slice(4); + return base58check.decode(branch).slice(2).toString("hex"); } /** @@ -225,7 +246,7 @@ export namespace TezosMessageUtils { return base58check.encode(Buffer.from("0d0f25d9" + hex.substring(2), "hex")); } else if (hint === "01" && hex.length === 68) { // secp256k1 return base58check.encode(Buffer.from("03fee256" + hex.substring(2), "hex")); - } else if (hint === "02" && hex.length === 68) { // p256 + } else if (hint === "02" && hex.length === 68) { // secp256r1 return base58check.encode(Buffer.from("03b28b7f" + hex.substring(2), "hex")); } else { throw new Error('Unrecognized key type'); @@ -268,12 +289,14 @@ export namespace TezosMessageUtils { /** * Writes a Base58-check key into hex. * - * @param key Key to encode. + * @param key Key to encode, input is expected to be a base58-check encoded string. * @param hint Key type, usually the curve it was generated from, eg: 'edsk'. */ export function writeKeyWithHint(key: string, hint: string): Buffer { - if (hint === 'edsk' || hint === 'edpk') { + if (hint === 'edsk' || hint === 'edpk') { // ed25519 return base58check.decode(key).slice(4); + //} else if (hint === 'sppk') { // secp256k1 + //} else if (hint === 'p2pk') { // secp256r1 } else { throw new Error(`Unrecognized key hint, '${hint}'`); } @@ -295,6 +318,20 @@ export namespace TezosMessageUtils { } } + /** + * Writes a Base58-check key into hex. + * + * @param key Key to encode, input is expected to be a base58-check encoded string. + * @param hint Key type, usually the curve it was generated from, eg: 'edsig'. + */ + export function writeSignatureWithHint(sig: string, hint: string): Buffer { + if (hint === 'edsig') { + return base58check.decode(sig).slice(5); + } else { + throw new Error(`Unrecognized key hint, '${hint}'`); + } + } + /** * Reads a binary buffer and decodes it into a Base58-check string subject to a hint. Calling this method with a blank hint makes it a wraper for base58check.encode(). * @@ -308,6 +345,8 @@ export namespace TezosMessageUtils { return base58check.encode(Buffer.from('0574' + buffer.toString('hex'), 'hex')); } else if (hint === 'p') { return base58check.encode(Buffer.from('02aa' + buffer.toString('hex'), 'hex')); + } else if (hint === 'expr') { + return base58check.encode(Buffer.from('0d2c401b' + buffer.toString('hex'), 'hex')); } else if (hint === '') { return base58check.encode(buffer); } else { @@ -331,7 +370,7 @@ export namespace TezosMessageUtils { * @returns {string} Base58Check hash of signed operation */ export function computeOperationHash(signedOpGroup: SignedOperationGroup): string { - const hash = CryptoUtils.simpleHash(signedOpGroup.bytes, 32); + const hash = simpleHash(signedOpGroup.bytes, 32); return readBufferWithHint(hash, "op"); } @@ -343,7 +382,154 @@ export namespace TezosMessageUtils { * @returns Base58-check encoded key hash. */ export function computeKeyHash(key: Buffer, prefix: string = 'tz1'): string { - const hash = CryptoUtils.simpleHash(key, 20); + const hash = simpleHash(key, 20); return readAddressWithHint(hash, prefix); } + + function dataLength(value: number) { + return ('0000000' + (value).toString(16)).slice(-8); + } + + /** + * Creates a binary representation of the provided value. This is the equivalent of the PACK instruction in Michelson. + * + * @param value string, number or bytes to encode. A string value can also be code. + * @param type Type of data to encode, supports various Michelson primitives like int, nat, string, key_hash, address and bytes. This argument should be left blank if encoding a complex value, see format. + * @param format value format, this argument is used to encode complex values, Michelson and Micheline encoding is supported with the internal parser. + */ + export function writePackedData(value: string | number | Buffer, type: string, format: TezosParameterFormat = TezosParameterFormat.Micheline): string { + switch(type) { + case 'int': { + return '0500' + writeSignedInt(value as number); + } + case 'nat': { + return '0500' + writeInt(value as number); + } + case 'string': { + return '0501' + writeString(value as string); + } + case 'key_hash': { + const address = writeAddress(value as string).slice(2); + return `050a${dataLength(address.length / 2)}${address}`; + } + case 'address': { + const address = writeAddress(value as string); + return `050a${dataLength(address.length / 2)}${address}`; + } + case 'bytes': { + const buffer = (value as Buffer).toString('hex'); + return `050a${dataLength(buffer.length / 2)}${buffer}`; + } + default: { + try { + if (format === TezosParameterFormat.Micheline) { + return `05${TezosLanguageUtil.translateMichelineToHex(value as string)}`; + } else if (format === TezosParameterFormat.Michelson) { + const micheline = TezosLanguageUtil.translateMichelsonToMicheline(value as string) + return `05${TezosLanguageUtil.translateMichelineToHex(micheline)}`; + } else { + throw new Error(`Unsupported format, ${format}, provided`); + } + } catch (e) { + throw new Error(`Unrecognized data type or format: '${type}', '${format}': ${e}`); + } + } + } + } + + /** + * + * @param hex + * @param type + */ + export function readPackedData(hex: string, type: string) : string | number { + switch(type) { + case 'int': { + return readSignedInt(hex.slice(4)); + } + case 'nat': { + return readInt(hex.slice(4)); + } + case 'string': { + return readString(hex.slice(4)); + } + case 'key_hash': { + return readAddress(`00${hex.slice(4 + 8)}`); + } + case 'address': { + return readAddress(hex.slice(4 + 8)); + } + case 'bytes': { + return hex.slice(4 + 8); + } + default: { + return TezosLanguageUtil.hexToMicheline(hex.slice(2)).code; + } + } + } + + /** + * Created a hash of the provided buffer that can then be used to query a big_map structure on chain. + */ + export function encodeBigMapKey(key: Buffer): string { + return readBufferWithHint(simpleHash(key, 32), 'expr'); + } + + /** + * Computes a BLAKE2b message hash of the requested length. + */ + export function simpleHash(payload: Buffer, length: number) : Buffer { + return Buffer.from(blakejs.blake2b(payload, null, length)); // Same as libsodium.crypto_generichash + } + + /** + * Encodes the provided number as base128. + * @param n + */ + function twoByteHex(n: number) : string { + if (n < 128) { return ('0' + n.toString(16)).slice(-2); } + + let h = ''; + if (n > 2147483648) { + let r = bigInt(n); + while (r.greater(0)) { + h = ('0' + (r.and(127)).toString(16)).slice(-2) + h; + r = r.shiftRight(7); + } + } else { + let r = n; + while (r > 0) { + h = ('0' + (r & 127).toString(16)).slice(-2) + h; + r = r >> 7; + } + } + + return h; + } + + /** + * Decodes the provided base128 string into a number + * @param s + */ + function fromByteHex(s: string) : number { + if (s.length === 2) { return parseInt(s, 16); } + + if (s.length <= 8) { + let n = parseInt(s.slice(-2), 16); + + for (let i = 1; i < s.length / 2; i++) { + n += parseInt(s.slice(-2 * i - 2, -2 * i), 16) << (7 * i); + } + + return n; + } + + let n = bigInt(parseInt(s.slice(-2), 16)); + + for (let i = 1; i < s.length / 2; i++) { + n = n.add(bigInt(parseInt(s.slice(-2 * i - 2, -2 * i), 16)).shiftLeft(7 * i)); + } + + return n.toJSNumber(); + } } diff --git a/ConseilJS-core/src/chain/tezos/TezosNodeReader.ts b/ConseilJS-core/src/chain/tezos/TezosNodeReader.ts new file mode 100644 index 00000000..36ad926e --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/TezosNodeReader.ts @@ -0,0 +1,210 @@ +import { JSONPath } from 'jsonpath-plus'; + +import * as TezosRPCTypes from '../../types/tezos/TezosRPCResponseTypes' +import { TezosRequestError } from '../../types/tezos/TezosErrorTypes'; +import FetchSelector from '../../utils/FetchSelector' +import LogSelector from '../../utils/LoggerSelector'; + +const log = LogSelector.log; +const fetch = FetchSelector.fetch; + +/** + * Utility functions for interacting with a Tezos node. + */ +export namespace TezosNodeReader { + /** + * Send a GET request to a Tezos node. + * + * @param {string} server Tezos node to query + * @param {string} command RPC route to invoke + * @returns {Promise} JSON-encoded response + */ + function performGetRequest(server: string, command: string): Promise { + const url = `${server}/${command}`; + + return fetch(url, { method: 'get' }) + .then(response => { + if (!response.ok) { + log.error(`TezosNodeReader.performGetRequest error: ${response.status} for ${command} on ${server}`); + throw new TezosRequestError(response.status, response.statusText, url, null); + } + return response; + }) + .then(response => { + const json: any = response.json(); + log.debug(`TezosNodeReader.performGetRequest response: ${json} for ${command} on ${server}`); + return json; + }); + } + + /** + * Gets a block for a given hash. + * + * @param {string} server Tezos node to query + * @param {string} hash Hash of the given block, defaults to 'head' + * @param {string} chainid Chain id, expected to be 'main' or 'test', defaults to main + * @returns {Promise} Block + */ + export function getBlock(server: string, hash: string = 'head', chainid: string = 'main'): Promise { + return performGetRequest(server, `chains/${chainid}/blocks/${hash}`).then(json => { return json }); + } + + /** + * Gets the top block. + * + * @param {string} server Tezos node to query + * @returns {Promise} Block head + */ + export function getBlockHead(server: string): Promise { + return getBlock(server); + } + + /** + * Fetches a specific account for a given block. + * + * @param {string} server Tezos node to query + * @param {string} blockHash Hash of given block + * @param {string} accountHash Account address + * @param {string} chainid Chain id, expected to be 'main' or 'test', defaults to main + * @returns {Promise} The account + */ + export function getAccountForBlock(server: string, blockHash: string, accountHash: string, chainid: string = 'main'): Promise { + return performGetRequest(server, `chains/${chainid}/blocks/${blockHash}/context/contracts/${accountHash}`) + .then(json => json); + } + + /** + * Fetches the current counter for an account. + * + * @param {string} server Tezos node to query + * @param {string} accountHash Account address + * @param {string} chainid Chain id, expected to be 'main' or 'test', defaults to main + * @returns {Promise} Current account counter + */ + export async function getCounterForAccount(server: string, accountHash: string, chainid: string = 'main'): Promise { + const counter = await performGetRequest(server, `chains/${chainid}/blocks/head/context/contracts/${accountHash}/counter`) + .then(r => r.toString()); + return parseInt(counter.toString(), 10); + } + + /** + * Returns account balance as of the Head. Will return current balance or 0 if the account is marked as `spendable: false`. + * Use `getAccountForBlock()` to get balance as of a specific block. Balance value is in utez. + * + * @param {string} server Tezos node to query + * @param {string} accountHash Account address + * @param chainid Chain id, expected to be 'main' or 'test', defaults to main + */ + export async function getSpendableBalanceForAccount(server: string, accountHash: string, chainid: string = 'main'): Promise { + const account = await performGetRequest(server, `chains/${chainid}/blocks/head/context/contracts/${accountHash}`) + .then(json => json); + return parseInt(account.balance.toString(), 10); + } + + /** + * Fetches the manager public key of a specific account for a given block. + * + * @param {string} server Tezos node to query + * @param {string} block Hash of given block, will also accept block level and 'head' + * @param {string} accountHash Account address + * @param {string} chainid Chain id, expected to be 'main' or 'test', defaults to main. + * @returns {Promise} Manager public key + */ + export function getAccountManagerForBlock(server: string, block: string, accountHash: string, chainid: string = 'main'): Promise { + return performGetRequest(server, `chains/${chainid}/blocks/${block}/context/contracts/${accountHash}/manager_key`) + .then(result => (result && result.toString() !== 'null') ? result.toString() : '').catch(err => ''); + } + + /** + * Indicates whether an account is implicit and empty. If true, transaction will burn 0.257tz. + * + * @param {string} server Tezos node to connect to + * @param {string} accountHash Account address + * @returns {Promise} Result + */ + export async function isImplicitAndEmpty(server: string, accountHash: string): Promise { + const account = await getAccountForBlock(server, 'head', accountHash); + + const isImplicit = accountHash.toLowerCase().startsWith('tz'); + const isEmpty = Number(account.balance) === 0; + + return (isImplicit && isEmpty); + } + + /** + * Indicates whether a reveal operation has already been done for a given account. + * + * @param {string} server Tezos node to connect to + * @param {string} accountHash Account address to delegate from + * @returns {Promise} Result + */ + export async function isManagerKeyRevealedForAccount(server: string, accountHash: string): Promise { + const managerKey = await getAccountManagerForBlock(server, 'head', accountHash); + + return managerKey.length > 0; + } + + export function getContractStorage(server: string, accountHash: string, block: string = 'head', chainid: string = 'main'): Promise { + return performGetRequest(server, `chains/${chainid}/blocks/${block}/context/contracts/${accountHash}/storage`); + } + + /** + * Queries the node for a key of a big_map + * + * @param {string} server Tezos node to connect to + * @param index big_map index to query + * @param key encoded big_map key to get, see `TezosMessageUtils.encodeBigMapKey`, `TezosMessageUtils.writePackedData` + * @param {string} block Block reference, level or hash, 'head' is default + * @param {string} chainid Chain id, expected to be 'main' or 'test', defaults to main. + */ + export function getValueForBigMapKey(server: string, index: number, key: string, block: string = 'head', chainid: string = 'main'): Promise { + return performGetRequest(server, `chains/${chainid}/blocks/${block}/context/big_maps/${index}/${key}`).catch(err => undefined); + } + + /** + * Queries the /mempool/pending_operations RPC and parses it looking for the provided operation group id. + * + * @param {string} server Tezos node to connect to + * @param {string} operationGroupId + * @param {string} chainid Chain id, expected to be 'main' or 'test', defaults to main. + */ + export async function getMempoolOperation(server: string, operationGroupId: string, chainid: string = 'main') { + const mempoolContent: any = await performGetRequest(server, `chains/${chainid}/mempool/pending_operations`).catch(() => undefined); + const jsonresult = JSONPath({ path: `$.applied[?(@.hash=='${operationGroupId}')]`, json: mempoolContent }); + + return jsonresult[0]; + } + + /** + * This method is meant to be used with the output of `getMempoolOperationsForAccount()` to estimate TTL of pending transactions. + * + * @param {string} server Tezos node to connect to. + * @param {string} branch Branch field of the operation in question. + * @param {string} chainid Chain id, expected to be 'main' or 'test', defaults to main. + * @returns {Promise} Number of blocks until the operation expires. + */ + export async function estimateBranchTimeout(server: string, branch: string, chainid: string = 'main'): Promise { + const refBlock = getBlock(server, branch, chainid); + const headBlock = getBlock(server, 'head', chainid); + + var result = await Promise.all([refBlock, headBlock]).then(blocks => Number(blocks[1]['header']['level']) - Number(blocks[0]['header']['level'])); + + return 64 - result; // TODO: named const + } + + /** + * Queries the /mempool/pending_operations RPC and parses it looking for applied operations submitted by the provided account + * + * @param {string} server Tezos node to connect to + * @param accountHash + * @param {string} chainid Chain id, expected to be 'main' or 'test', defaults to main. + */ + export async function getMempoolOperationsForAccount(server: string, accountHash: string, chainid: string = 'main') { + const mempoolContent: any = await performGetRequest(server, `chains/${chainid}/mempool/pending_operations`).catch(() => undefined); + + const a = mempoolContent.applied.filter(g => g.contents.some(s => (s.source === accountHash || s.destination === accountHash))); + const o = a.map(g => { g.contents = g.contents.filter(s => (s.source === accountHash || s.destination === accountHash)); return g; }); + + return o; + } +} diff --git a/ConseilJS-core/src/chain/tezos/TezosNodeWriter.ts b/ConseilJS-core/src/chain/tezos/TezosNodeWriter.ts new file mode 100644 index 00000000..e3b15521 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/TezosNodeWriter.ts @@ -0,0 +1,603 @@ +import * as blakejs from 'blakejs'; + +import { KeyStore, Signer } from '../../types/ExternalInterfaces'; +import * as TezosTypes from '../../types/tezos/TezosChainTypes'; +import { TezosConstants } from '../../types/tezos/TezosConstants'; +import * as TezosP2PMessageTypes from '../../types/tezos/TezosP2PMessageTypes'; +import * as TezosRPCTypes from '../../types/tezos/TezosRPCResponseTypes'; +import { TezosNodeReader } from './TezosNodeReader'; +import { TezosMessageCodec } from './TezosMessageCodec'; +import { TezosMessageUtils } from './TezosMessageUtil'; +import { TezosLanguageUtil } from './TezosLanguageUtil'; +import { TezosOperationQueue } from './TezosOperationQueue'; + +import FetchSelector from '../../utils/FetchSelector' +const fetch = FetchSelector.fetch; + +import LogSelector from '../../utils/LoggerSelector'; +const log = LogSelector.log; + +let operationQueues = {} + +/** + * Functions for sending operations on the Tezos network. + */ +export namespace TezosNodeWriter { + /** + * Send a POST request to a Tezos node. + * + * @param {string} server Which Tezos node to go against + * @param {string} command RPC route to invoke + * @param {object} payload Payload to submit + * @returns {Promise} JSON-encoded response + */ + function performPostRequest(server: string, command: string, payload = {}): Promise { + const url = `${server}/${command}`; + const payloadStr = JSON.stringify(payload); + + log.debug(`TezosNodeWriter.performPostRequest sending ${payloadStr}\n->\n${url}`); + + return fetch(url, { method: 'post', body: payloadStr, headers: { 'content-type': 'application/json' } }); + } + + /** + * Forge an operation group. + * + * @param {string} branch Hash of the current top block. + * @param {TezosP2PMessageTypes.Operation[]} operations The operations being forged as part of this operation group. + * + * @returns {string} Forged operation bytes (as a hex string) + */ + // TODO: move to an appropriate place + export function forgeOperations(branch: string, operations: TezosP2PMessageTypes.Operation[]): string { + log.debug('TezosNodeWriter.forgeOperations:'); + log.debug(JSON.stringify(operations)); + let encoded = TezosMessageUtils.writeBranch(branch); + operations.forEach(m => encoded += TezosMessageCodec.encodeOperation(m)); + + return encoded; + } + + /** + * Forge an operation group using the Tezos RPC client. This is not a trustless path, but 'reveal', 'transaction', 'delegation', 'origination' operations are validated with a local parse. This method is available because the internal Michelson/Micheline converter is not yet 100% complete. + * @deprecated + * + * @param {string} server Tezos node to connect to + * @param {TezosRPCTypes.TezosBlock} blockHead The block head + * @param {TezosP2PMessageTypes.Operation[]} operations The operations being forged as part of this operation group + * + * @returns {Promise} Forged operation bytes (as a hex string) + */ + export async function forgeOperationsRemotely(server: string, blockHead: TezosRPCTypes.TezosBlock, operations: TezosP2PMessageTypes.Operation[], chainid: string = 'main'): Promise { + log.debug('TezosNodeWriter.forgeOperations:'); + log.debug(JSON.stringify(operations)); + log.warn('forgeOperationsRemotely() is not intrinsically trustless'); + const response = await performPostRequest(server, `chains/${chainid}/blocks/head/helpers/forge/operations`, { branch: blockHead.hash, contents: operations }); + const forgedOperation = await response.text(); + const ops = forgedOperation.replace(/\n/g, '').replace(/['"]+/g, ''); + + let optypes = Array.from(operations.map(o => o["kind"])); + let validate = false; + for (let t in optypes) { + validate = ['reveal', 'transaction', 'delegation', 'origination'].includes(t); + if (validate) { break; } + } + + if (validate) { + const decoded = TezosMessageCodec.parseOperationGroup(ops); + + for (let i = 0; i < operations.length; i++) { + const clientop = operations[i]; + const serverop = decoded[i]; + if (clientop['kind'] === 'transaction') { // Smart contract invocation parameters are not parsed due to limitations in the Michelson converter + if (serverop.kind !== clientop['kind'] || serverop.fee !== clientop['fee'] || serverop.amount !== clientop['amount'] || serverop.destination !== clientop['destination']) { + throw new Error('Forged transaction failed validation.'); + } + } else if (clientop['kind'] === 'delegation') { + if (serverop.kind !== clientop['kind'] || serverop.fee !== clientop['fee'] || serverop.delegate !== clientop['delegate']) { + throw new Error('Forged delegation failed validation.'); + } + } else if (clientop['kind'] === 'origination') { + if (serverop.kind !== clientop['kind'] || serverop.fee !== clientop['fee'] || serverop.balance !== clientop['balance'] || serverop.spendable !== clientop['spendable'] || serverop.delegatable !== clientop['delegatable'] || serverop.delegate !== clientop['delegate'] || serverop.script !== undefined) { + throw new Error('Forged origination failed validation.'); + } + } + } + } + + return ops; + } + + /** + * Applies an operation using the Tezos RPC client. + * + * @param {string} server Tezos node to connect to + * @param {string} branch Hash of the current top block + * @param {string} protocol Protocol of the current top block + * @param {Operation[]} operations The operations to create and send + * @param {SignedOperationGroup} signedOpGroup Signed operation group + * @returns {Promise} Array of contract handles + */ + export async function preapplyOperation(server: string, branch: string, protocol: string, operations: TezosP2PMessageTypes.Operation[], signedOpGroup: TezosTypes.SignedOperationGroup, chainid: string = 'main'): Promise { + const payload = [{ + protocol: protocol, + branch: branch, + contents: operations, + signature: signedOpGroup.signature + }]; + + const response = await performPostRequest(server, `chains/${chainid}/blocks/head/helpers/preapply/operations`, payload); + const text = await response.text(); + + let json; + try { + log.debug(`TezosNodeWriter.preapplyOperation received ${text}`); + + json = JSON.parse(text); + } catch (err) { + log.error(`TezosNodeWriter.preapplyOperation failed to parse response`); + throw new Error(`Could not parse JSON from response of chains/${chainid}/blocks/head/helpers/preapply/operation: '${text}' for ${payload}`); + } + + parseRPCError(text); + + return json as TezosTypes.AlphaOperationsWithMetadata[]; + } + + /** + * Injects an operation using the Tezos RPC client. + * + * @param {string} server Tezos node to connect to + * @param {SignedOperationGroup} signedOpGroup Signed operation group + * @returns {Promise} ID of injected operation + */ + export async function injectOperation(server: string, signedOpGroup: TezosTypes.SignedOperationGroup, chainid: string = 'main'): Promise { + const response = await performPostRequest(server, `injection/operation?chain=${chainid}`, signedOpGroup.bytes.toString('hex')); + const text = await response.text(); + + parseRPCError(text); + + return text; + } + + /** + * Master function for creating and sending all supported types of operations. + * + * @param {string} server Tezos node to connect to + * @param {Operation[]} operations The operations to create and send + * @param {Signer} + * @returns {Promise} The ID of the created operation group + */ + export async function sendOperation(server: string, operations: TezosP2PMessageTypes.Operation[], signer: Signer): Promise { + const blockHead = await TezosNodeReader.getBlockHead(server); + const forgedOperationGroup = forgeOperations(blockHead.hash, operations); + + const opHash = TezosMessageUtils.simpleHash(Buffer.from(TezosConstants.OperationGroupWatermark + forgedOperationGroup, 'hex'), 32); + + const opSignature = await signer.sign(opHash); + + const signedOpGroup = Buffer.concat([Buffer.from(forgedOperationGroup, 'hex'), opSignature]); + const hexSignature = TezosMessageUtils.readSignatureWithHint(opSignature, 'edsig'); + const opPair = { bytes: signedOpGroup, signature: hexSignature }; + + const appliedOp = await preapplyOperation(server, blockHead.hash, blockHead.protocol, operations, opPair); + const injectedOperation = await injectOperation(server, opPair); + + return { results: appliedOp[0], operationGroupID: injectedOperation }; // TODO + } + + /** + * + * @param server + * @param operations + * @param keyStore + * @param {number} batchDelay Number of seconds to wait before sending transactions off. + */ + export function queueOperation(server: string, operations: TezosP2PMessageTypes.Operation[], signer: Signer, keyStore: KeyStore, batchDelay: number = 25): void { + const k = blakejs.blake2s(`${server}${keyStore.publicKeyHash}`, null, 16); + + if (!!!operationQueues[k]) { + operationQueues[k] = TezosOperationQueue.createQueue(server, signer, keyStore, batchDelay); + } + + operationQueues[k].addOperations(...operations); + } + + export function getQueueStatus(server: string, keyStore: KeyStore){ + const k = blakejs.blake2s(`${server}${keyStore.publicKeyHash}`, null, 16); + + if (operationQueues[k]) { + return operationQueues[k].getStatus(); + } + + return -1; + } + + /** + * Helper function for sending Delegations, Transactions, and Originations. Checks if manager's public key has been revealed for operation. If yes, do nothing, else, bundle a reveal operation before the input operation. + * + * @param {string} server Tezos node to connect to + * @param {string} publicKey Key to be revealed + * @param {string} accountHash Account address to reveal. + * @param {number} accountOperationIndex + * @param {StackableOperation[]} operations Delegation, Transaction, or Origination to possibly bundle with a reveal + */ + export async function appendRevealOperation(server: string, publicKey: string, accountHash: string, accountOperationIndex: number, operations: TezosP2PMessageTypes.StackableOperation[]) { + const isKeyRevealed = await TezosNodeReader.isManagerKeyRevealedForAccount(server, accountHash); + const counter = accountOperationIndex + 1; + + if (!isKeyRevealed) { + const revealOp: TezosP2PMessageTypes.Reveal = { + kind: 'reveal', + source: accountHash, + fee: '0', // Reveal Fee will be covered by the appended operation + counter: counter.toString(), + gas_limit: '10600', + storage_limit: '0', + public_key: publicKey + }; + + operations.forEach((operation, index) => { + const c: number = accountOperationIndex + 2 + index; + operation.counter = c.toString(); + }); + + return [revealOp, ...operations]; + } + + return operations; + } + + /** + * Creates and sends a transaction operation. + * + * @param {string} server Tezos node to connect to + * @param {KeyStore} keyStore Key pair along with public key hash + * @param {String} to Destination public key hash + * @param {number} amount Amount to send + * @param {number} fee Fee to use + * @returns {Promise} Result of the operation + */ + export async function sendTransactionOperation(server: string, signer: Signer, keyStore: KeyStore, to: string, amount: number, fee: number) { + const counter = await TezosNodeReader.getCounterForAccount(server, keyStore.publicKeyHash) + 1; + + const transaction: TezosP2PMessageTypes.Transaction = { + destination: to, + amount: amount.toString(), + storage_limit: TezosConstants.DefaultTransactionStorageLimit + '', + gas_limit: TezosConstants.DefaultTransactionGasLimit + '', + counter: counter.toString(), + fee: fee.toString(), + source: keyStore.publicKeyHash, + kind: 'transaction' + }; + + const operations = await appendRevealOperation(server, keyStore.publicKey, keyStore.publicKeyHash, counter - 1, [transaction]) + + return sendOperation(server, operations, signer); + } + + /** + * Creates and sends a delegation operation. + * + * @param {string} server Tezos node to connect to + * @param {KeyStore} keyStore Key pair along with public key hash + * @param {string} delegate Account address to delegate to, alternatively, '' or undefined if removing delegation + * @param {number} fee Operation fee + * @returns {Promise} Result of the operation + */ + export async function sendDelegationOperation(server: string, signer: Signer, keyStore: KeyStore, delegate: string | undefined, fee: number = TezosConstants.DefaultDelegationFee) { + const counter = await TezosNodeReader.getCounterForAccount(server, keyStore.publicKeyHash) + 1; + + const delegation: TezosP2PMessageTypes.Delegation = { + kind: 'delegation', + source: keyStore.publicKeyHash, + fee: fee.toString(), + counter: counter.toString(), + storage_limit: TezosConstants.DefaultDelegationStorageLimit + '', + gas_limit: TezosConstants.DefaultDelegationGasLimit + '', + delegate: delegate + } + const operations = await appendRevealOperation(server, keyStore.publicKey, keyStore.publicKeyHash, counter - 1, [delegation]); + + return sendOperation(server, operations, signer); + } + + /** + * Internally calls sendDelegationOperation with a blank delegate. + * + * @param {string} server Tezos node to connect to + * @param {KeyStore} keyStore Key pair along with public key hash + * @param {string} delegator Account address to delegate from + * @param {number} fee Operation fee + * @returns {Promise} Result of the operation + */ + export async function sendUndelegationOperation(server: string, signer: Signer, keyStore: KeyStore, fee: number = TezosConstants.DefaultDelegationFee) { + return sendDelegationOperation(server, signer, keyStore, undefined, fee); + } + + /** + * Sends a contract origination operation. + * + * @param {string} server Tezos node to connect to + * @param {KeyStore} keyStore Key pair along with public key hash + * @param {number} amount Initial funding amount of new account + * @param {string} delegate Account ID to delegate to, blank if none + * @param {number} fee Operation fee + * @param {string} storage_limit Storage fee + * @param {string} gas_limit Gas limit + * @param {string} code Contract code + * @param {string} storage Initial storage value + * @param {TezosParameterFormat} codeFormat Code format + */ + export async function sendContractOriginationOperation( + server: string, + signer: Signer, + keyStore: KeyStore, + amount: number, + delegate: string | undefined, + fee: number, + storage_limit: number, + gas_limit: number, + code: string, + storage: string, + codeFormat: TezosTypes.TezosParameterFormat = TezosTypes.TezosParameterFormat.Micheline + ) { + let parsedCode: any = undefined; + let parsedStorage: any = undefined; + + if (codeFormat === TezosTypes.TezosParameterFormat.Michelson) { + parsedCode = JSON.parse(TezosLanguageUtil.translateMichelsonToMicheline(code)); + log.debug(`TezosNodeWriter.sendOriginationOperation code translation:\n${code}\n->\n${JSON.stringify(parsedCode)}`); + + parsedStorage = JSON.parse(TezosLanguageUtil.translateMichelsonToMicheline(storage)); + log.debug(`TezosNodeWriter.sendOriginationOperation storage translation:\n${storage}\n->\n${JSON.stringify(parsedStorage)}`); + } else if (codeFormat === TezosTypes.TezosParameterFormat.Micheline) { + parsedCode = JSON.parse(code); + parsedStorage = JSON.parse(storage); // TODO: handle empty storage + } + + const counter = await TezosNodeReader.getCounterForAccount(server, keyStore.publicKeyHash) + 1; + + const origination: TezosP2PMessageTypes.Origination = { + kind: 'origination', + source: keyStore.publicKeyHash, + fee: fee.toString(), + counter: counter.toString(), + gas_limit: gas_limit.toString(), + storage_limit: storage_limit.toString(), + balance: amount.toString(), + delegate: delegate, + script: { code: parsedCode, storage: parsedStorage } + }; + const operations = await appendRevealOperation(server, keyStore.publicKey, keyStore.publicKeyHash, counter - 1, [origination]); + + return sendOperation(server, operations, signer); + } + + /** + * Invokes a contract with desired parameters + * + * @param {string} server Tezos node to connect to + * @param {KeyStore} keyStore Key pair along with public key hash + * @param {string} to Contract address + * @param {number} amount Amount to transfer along with the invocation + * @param {number} fee Operation fee + * @param {string} storage_limit Storage fee + * @param {string} gas_limit Gas limit + * @param {string} entrypoint Contract entry point + * @param {string} parameters Contract arguments + * @param {TezosParameterFormat} parameterFormat Contract argument format + */ + export async function sendContractInvocationOperation( + server: string, + signer: Signer, + keyStore: KeyStore, + contract: string, + amount: number, + fee: number, + storageLimit: number, + gasLimit: number, + entrypoint: string | undefined, + parameters: string | undefined, + parameterFormat: TezosTypes.TezosParameterFormat = TezosTypes.TezosParameterFormat.Micheline + ) { + const counter = await TezosNodeReader.getCounterForAccount(server, keyStore.publicKeyHash) + 1; + + const transaction = constructContractInvocationOperation(keyStore.publicKeyHash, counter, contract, amount, fee, storageLimit, gasLimit, entrypoint, parameters, parameterFormat); + const operations = await appendRevealOperation(server, keyStore.publicKey, keyStore.publicKeyHash, counter - 1, [transaction]); + return sendOperation(server, operations, signer); + } + + /** + * Creates a transaction object for contract invocation. + * + */ + function constructContractInvocationOperation( + publicKeyHash: string, + counter: number, + to: string, + amount: number, + fee: number, + storageLimit: number, + gasLimit: number, + entrypoint: string | undefined, + parameters: string | undefined, + parameterFormat: TezosTypes.TezosParameterFormat = TezosTypes.TezosParameterFormat.Micheline + ): TezosP2PMessageTypes.Transaction { + let transaction: TezosP2PMessageTypes.Transaction = { + destination: to, + amount: amount.toString(), + storage_limit: storageLimit.toString(), + gas_limit: gasLimit.toString(), + counter: counter.toString(), + fee: fee.toString(), + source: publicKeyHash, + kind: 'transaction' + }; + + if (parameters !== undefined) { + if (parameterFormat === TezosTypes.TezosParameterFormat.Michelson) { + const michelineParams = TezosLanguageUtil.translateParameterMichelsonToMicheline(parameters); + transaction.parameters = { entrypoint: entrypoint || 'default', value: JSON.parse(michelineParams) }; + } else if (parameterFormat === TezosTypes.TezosParameterFormat.Micheline) { + transaction.parameters = { entrypoint: entrypoint || 'default', value: JSON.parse(parameters) }; + } else if (parameterFormat === TezosTypes.TezosParameterFormat.MichelsonLambda) { + const michelineLambda = TezosLanguageUtil.translateMichelsonToMicheline(`code ${parameters}`); + transaction.parameters = { entrypoint: entrypoint || 'default', value: JSON.parse(michelineLambda) }; + } + } else if (entrypoint !== undefined) { + transaction.parameters = { entrypoint: entrypoint, value: [ ] }; + } + + return transaction; + } + + /** + * Invokes a contract without parameters and a 0 amount. + * + * @param {string} server Tezos node to connect to + * @param {KeyStore} keyStore Key pair along with public key hash + * @param {string} to Contract address + * @param {number} fee Operation fee + * @param {string} storage_limit Storage fee + * @param {string} gas_limit Gas limit + * @param {string} entrypoint Contract entry point, or `undefined` + */ + export async function sendContractPing(server: string, signer: Signer, keyStore: KeyStore, to: string, fee: number, storageLimit: number, gasLimit: number, entrypoint: string | undefined) { + return sendContractInvocationOperation(server, signer, keyStore, to, 0, fee, storageLimit, gasLimit, entrypoint, undefined); + } + + /** + * Creates and sends a reveal operation. + * + * @param {string} server Tezos node to connect to + * @param {KeyStore} keyStore Key pair along with public key hash + * @param {number} fee Fee to pay + * @returns {Promise} Result of the operation + */ + export async function sendKeyRevealOperation(server: string, signer: Signer, keyStore: KeyStore, fee: number = TezosConstants.DefaultKeyRevealFee) { + const counter = await TezosNodeReader.getCounterForAccount(server, keyStore.publicKeyHash) + 1; + + const revealOp: TezosP2PMessageTypes.Reveal = { + kind: 'reveal', + source: keyStore.publicKeyHash, + fee: fee + '', + counter: counter.toString(), + gas_limit: '10000', + storage_limit: '0', + public_key: keyStore.publicKey + }; + const operations = [revealOp]; + + return sendOperation(server, operations, signer) + } + + /** + * Creates and sends a fundraiser account activation operation. + * + * @param {string} server Tezos node to connect to + * @param {KeyStore} keyStore Key pair along with public key hash + * @param {string} activationCode Activation code provided by fundraiser process + * @returns {Promise} Result of the operation + */ + export function sendIdentityActivationOperation(server: string, signer: Signer, keyStore: KeyStore, activationCode: string) { + const activation = { kind: 'activate_account', pkh: keyStore.publicKeyHash, secret: activationCode }; + + return sendOperation(server, [activation], signer); + } + + /** + * Operation dry-run to get consumed gas and storage numbers + * + * @param {string} server Tezos node to connect to + * @param {string} chainid + * @param {KeyStore} keyStore Key pair along with public key hash + * @param {string} to Contract address + * @param {number} amount Amount to transfer along with the invocation + * @param {number} fee Operation fee + * @param {string} storage_limit Storage fee + * @param {string} gas_limit Gas limit + * @param {string} entrypoint Contract entry point + * @param {string} parameters Contract arguments + * @param {TezosParameterFormat} parameterFormat Contract argument format + * @returns A two-element object gas and storage costs. Throws an error if one was encountered. + */ + export async function testContractInvocationOperation( + server: string, + chainid: string, + keyStore: KeyStore, + contract: string, + amount: number, + fee: number, + storageLimit: number, + gasLimit: number, + entrypoint: string | undefined, + parameters: string | undefined, + parameterFormat: TezosTypes.TezosParameterFormat = TezosTypes.TezosParameterFormat.Micheline + ): Promise<{gas: number, storageCost: number}> { + const counter = await TezosNodeReader.getCounterForAccount(server, keyStore.publicKeyHash) + 1; + const fake_signature = 'edsigu6xFLH2NpJ1VcYshpjW99Yc1TAL1m2XBqJyXrxcZQgBMo8sszw2zm626yjpA3pWMhjpsahLrWdmvX9cqhd4ZEUchuBuFYy'; + const fake_chainid = 'NetXdQprcVkpaWU'; + const fake_branch = 'BL94i2ShahPx3BoNs6tJdXDdGeoJ9ukwujUA2P8WJwULYNdimmq'; + + const transaction = constructContractInvocationOperation(keyStore.publicKeyHash, counter, contract, amount, fee, storageLimit, gasLimit, entrypoint, parameters, parameterFormat); + const response = await performPostRequest(server, `chains/${chainid}/blocks/head/helpers/scripts/run_operation`, { chain_id: fake_chainid, operation: { branch: fake_branch, contents: [transaction], signature: fake_signature } }); + const responseText = await response.text(); + + parseRPCError(responseText); + + const responseJSON = JSON.parse(responseText); + let gas = 0; + let storageCost = 0; + for (let c of responseJSON['contents']) { + try { + gas = parseInt(c['metadata']['operation_result']['consumed_gas']) || 0; + storageCost = parseInt(c['metadata']['operation_result']['paid_storage_size_diff']) || 0; + } catch { } + } + + return { gas, storageCost }; + } + + /** + * This function checks if the server response contains an error. There are multiple formats for errors coming + * back from the server, this method attempts to normalized them for downstream parsing. + * + * @param {string} response Text response from a Tezos RPC services + * @returns Error text or `undefined` + */ + function parseRPCError(response: string) { + let errors = ''; + + try { + const json = JSON.parse(response); + const arr = Array.isArray(json) ? json : [json]; + + if ('kind' in arr[0]) { + // TODO: show counter errors better: e.msg "already used for contract" + errors = arr.map(e => `(${e.kind}: ${e.id})`).join(''); + } else if (arr.length === 1 && arr[0].contents.length === 1 && arr[0].contents[0].kind === 'activate_account') { + // in CARTHAGE and prior protocols activation failures are caught in the first branch + } else { + errors = arr.map(r => r.contents) + .map(o => o.map(c => c.metadata.operation_result) + .filter(r => r.status !== 'applied') + .map(r => `${r.status}: ${r.errors.map(e => `(${e.kind}: ${e.id})`).join(', ')}\n`)) + .join(''); + } + } catch (err) { + if (response.startsWith('Failed to parse the request body: ')){ + errors = response.slice(34); + } else { + const hash = response.replace(/\"/g, '').replace(/\n/, ''); + if (hash.length === 51 && hash.charAt(0) === 'o') { + // TODO: confirm base58check operation hash + } else { + log.error(`failed to parse errors: '${err}' from '${response}'\n, PLEASE report this to the maintainers`); } + } + } + + if (errors.length > 0) { throw new Error(errors); } // TODO: use TezosResponseError + } +} diff --git a/ConseilJS-core/src/chain/tezos/TezosOperationQueue.ts b/ConseilJS-core/src/chain/tezos/TezosOperationQueue.ts new file mode 100644 index 00000000..a019f583 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/TezosOperationQueue.ts @@ -0,0 +1,83 @@ +import { Operation, StackableOperation } from '../../types/tezos/TezosP2PMessageTypes'; +import { TezosConstants } from '../../types/tezos/TezosConstants'; +import { KeyStore, Signer } from '../../types/ExternalInterfaces'; +import { TezosNodeReader } from './TezosNodeReader'; +import { TezosNodeWriter } from './TezosNodeWriter'; + +import LogSelector from '../../utils/LoggerSelector'; +const log = LogSelector.log; + +/** + * Note, this is a stateful object + */ +export class TezosOperationQueue { + readonly server: string; + readonly operations: Operation[]; + readonly keyStore: KeyStore; + readonly signer: Signer; + readonly delay: number; + + triggerTimestamp: number = 0; + + private constructor(server: string, signer: Signer, keyStore: KeyStore, delay: number) { + this.server = server; + this.keyStore = keyStore; + this.signer = signer; + this.delay = delay; + + this.operations = []; + } + + /** + * Creates a queue that can send operations to the specified `server` with the provided account information. + * + * @param server + * @param keyStore + * @param delay Number of seconds to wait before attempting to send the operations in queue + */ + public static createQueue(server: string, signer: Signer, keyStore: KeyStore, delay: number = TezosConstants.DefaultBatchDelay) { + return new TezosOperationQueue(server, signer, keyStore, delay); + } + + /** + * Enqueue operations and if not already running, trigger a timer specified in the prior `createQueue()` call. + */ + public addOperations(...operations: Operation[]) { + if (this.operations.length === 0) { + this.triggerTimestamp = Date.now(); + setTimeout(() => { this.sendOperations() }, this.delay * 1000); + } + + operations.forEach(o => this.operations.push(o)); // TODO: consider resetting the timer for each addition up to 2x delay + } + + /** + * Returns the number of operations currently in queue. + */ + public getStatus(): number { + return this.operations.length; + } + + private async sendOperations() { + let counter = await TezosNodeReader.getCounterForAccount(this.server, this.keyStore.publicKeyHash) + 1; + + let ops: Operation[] = []; + const queueLength = this.operations.length; + for (let i = 0; i < queueLength; i++) { + let o = this.operations.shift(); + if ((o as StackableOperation).counter) { (o as StackableOperation).counter = `${counter++}`; } + ops.push(o as Operation); + } + + if (this.operations.length > 0) { + this.triggerTimestamp = Date.now(); + setTimeout(() => { this.sendOperations() }, this.delay * 1000); + } + + try { + await TezosNodeWriter.sendOperation(this.server, ops, this.signer); + } catch(error) { + log.error(`Error sending queued operations: ${error}`); + } + } +} diff --git a/ConseilJS-core/src/chain/tezos/contracts/BabylonDelegationHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/BabylonDelegationHelper.ts new file mode 100644 index 00000000..8b9cc9ef --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/BabylonDelegationHelper.ts @@ -0,0 +1,177 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosLanguageUtil } from '../TezosLanguageUtil'; +import { TezosNodeReader } from '../TezosNodeReader'; +import { TezosNodeWriter } from '../TezosNodeWriter'; +import { KeyStore, Signer } from '../../../types/ExternalInterfaces'; +import * as TezosTypes from '../../../types/tezos/TezosChainTypes'; +import { TezosConstants } from '../../../types/tezos/TezosConstants'; + +export namespace BabylonDelegationHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. This function processes Micheline format contracts. + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(JSON.stringify(contract.script.code), null, 16)).toString('hex'); + + if (k !== 'd99cb8b4c7e40166f59c0f3c30724225') { throw new Error(`Contract does not match the expected code hash: ${k}, 'd99cb8b4c7e40166f59c0f3c30724225'`); } + + return true; + } + + /** + * In contrast to verifyDestination, this function uses compares Michelson hashes. + * + * @param script + */ + export function verifyScript(script: string): boolean { + const k = Buffer.from(blakejs.blake2s(TezosLanguageUtil.preProcessMichelsonScript(script).join('\n'), null, 16)).toString('hex'); + + if (k !== 'a585489ffaee60d07077059539d5bfc8') { throw new Error(`Contract does not match the expected code hash: ${k}, 'a585489ffaee60d07077059539d5bfc8'`); } + + return true; + } + + export async function getSimpleStorage(server: string, address: string): Promise<{administrator: string}> { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + + return { administrator: JSONPath({ path: '$.string', json: storageResult })[0] }; + } + + /** + * + * @param server Destination Tezos node. + * @param keyStore Key pair to sign the transaction. + * @param delegator KT1 address of the delegated account that `keyStore.publicKeyHash` controls. + * @param delegate + * @param fee Operation fee in µtz. + * @param derivationPath Derivation path, necessary if signing with a Ledger device. + */ + export function setDelegate(server: string, signer: Signer, keyStore: KeyStore, contract: string, delegate: string, fee: number): Promise { + if (contract.startsWith('KT1')) { + //const parameters = `{ DROP ; NIL operation ; PUSH key_hash "${delegate}" ; SOME ; SET_DELEGATE ; CONS }`; + const parameters = `[{ "prim": "DROP" }, { "prim": "NIL", "args": [{ "prim": "operation" }] }, { "prim": "PUSH", "args": [{ "prim": "key_hash" }, { "string": "${delegate}" } ] }, { "prim": "SOME" }, { "prim": "SET_DELEGATE" }, { "prim": "CONS" } ]`; + + return TezosNodeWriter.sendContractInvocationOperation(server, signer, keyStore, contract, 0, fee, 0, TezosConstants.P005ManagerContractWithdrawalGasLimit, 'do', parameters, TezosTypes.TezosParameterFormat.Micheline); + } else { + return TezosNodeWriter.sendDelegationOperation(server, signer, keyStore, delegate, fee); + } + } + + /** + * + * @param server Destination Tezos node. + * @param keyStore Key pair to sign the transaction. + * @param contract KT1 address of the delegated account that `keyStore.publicKeyHash` controls. + * @param fee Operation fee in µtz. + * @param derivationPath Derivation path, necessary if signing with a Ledger device. + */ + export function unSetDelegate(server: string, signer: Signer, keyStore: KeyStore, contract: string, fee: number): Promise { + if (contract.startsWith('KT1')) { + //const parameters = '{ DROP ; NIL operation ; NONE key_hash ; SET_DELEGATE ; CONS }'; + const parameters = `[{ "prim": "DROP" }, { "prim": "NIL", "args": [{ "prim": "operation" }] }, { "prim": "NONE", "args": [{ "prim": "key_hash" }] }, { "prim": "SET_DELEGATE" }, { "prim": "CONS" } ]`; + + return TezosNodeWriter.sendContractInvocationOperation(server, signer, keyStore, contract, 0, fee, 0, TezosConstants.P005ManagerContractWithdrawalGasLimit, 'do', parameters, TezosTypes.TezosParameterFormat.Micheline); + } else { + return TezosNodeWriter.sendUndelegationOperation(server, signer, keyStore, fee); + } + } + + /** + * Allows withdrawal of funds from pre-protocol 005 KT1 delegated accounts into what used be referred to as the manager account. + * + * @param server Destination Tezos node. + * @param keyStore Key pair to sign the transaction. + * @param contract KT1 address of the delegated account that `keyStore.publicKeyHash` controls. + * @param fee Operation fee in µtz. + * @param amount Amount to transfer in µtz. + * @param derivationPath Derivation path, necessary if signing with a Ledger device. + */ + export function withdrawDelegatedFunds(server: string, signer: Signer, keyStore: KeyStore, contract: string, fee: number, amount: number): Promise { + return sendDelegatedFunds(server, signer, keyStore, contract, fee, amount, keyStore.publicKeyHash); + } + + /** + * Allows sending funds from pre-protocol 005 KT1 delegated accounts to other accounts. + * + * @param server Destination Tezos node. + * @param keyStore Key pair to sign the transaction. + * @param contract KT1 address of the delegated account that `keyStore.publicKeyHash` controls. + * @param fee Operation fee in µtz. + * @param amount Amount to transfer in µtz. + * @param derivationPath Derivation path, necessary if signing with a Ledger device. + * @param destination + */ + export function sendDelegatedFunds(server: string, signer: Signer, keyStore: KeyStore, contract: string, fee: number, amount: number, destination: string): Promise { + let parameters = + `[ { "prim": "DROP" }, + { "prim": "NIL", "args": [ { "prim": "operation" } ] }, + { "prim": "PUSH", "args": [ { "prim": "key_hash" }, { "string": "${destination}" } ] }, + { "prim": "IMPLICIT_ACCOUNT" }, + { "prim": "PUSH", "args": [ { "prim": "mutez" }, { "int": "${amount}" } ] }, + { "prim": "UNIT" }, + { "prim": "TRANSFER_TOKENS" }, + { "prim": "CONS" } ]`; + + return TezosNodeWriter.sendContractInvocationOperation(server, signer, keyStore, contract, 0, fee, TezosConstants.P005ManagerContractWithdrawalStorageLimit, TezosConstants.P005ManagerContractWithdrawalGasLimit, 'do', parameters, TezosTypes.TezosParameterFormat.Micheline); + } + + /** + * Allows deposit of funds into a pre-protocol 005 KT1 delegated accounts. + * + * @param server Destination Tezos node. + * @param keyStore Key pair to sign the transaction. + * @param contract KT1 address of the delegated account that `keyStore.publicKeyHash` controls. + * @param fee Operation fee in µtz. + * @param amount Amount to transfer in µtz. + * @param derivationPath Derivation path, necessary if signing with a Ledger device. + */ + export function depositDelegatedFunds(server: string, signer: Signer, keyStore: KeyStore, contract: string, fee: number, amount: number): Promise { + return TezosNodeWriter.sendContractInvocationOperation(server, signer, keyStore, contract, amount, fee, 0, TezosConstants.P005ManagerContractDepositGasLimit, undefined, undefined); + } + + export function deployManagerContract(server: string, signer: Signer, keyStore: KeyStore, delegate: string, fee: number, amount: number): Promise { + const code = `[ { "prim": "parameter", + "args": + [ { "prim": "or", + "args": + [ { "prim": "lambda", + "args": + [ { "prim": "unit" }, { "prim": "list", "args": [ { "prim": "operation" } ] } ], "annots": [ "%do" ] }, + { "prim": "unit", "annots": [ "%default" ] } ] } ] }, + { "prim": "storage", "args": [ { "prim": "key_hash" } ] }, + { "prim": "code", + "args": + [ [ [ [ { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ], + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "PUSH", "args": [ { "prim": "mutez" }, { "int": "0" } ] }, + { "prim": "AMOUNT" }, + [ [ { "prim": "COMPARE" }, { "prim": "EQ" } ], + { "prim": "IF", "args": [ [], [ [ { "prim": "UNIT" }, { "prim": "FAILWITH" } ] ] ] } ], + [ { "prim": "DIP", "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + { "prim": "IMPLICIT_ACCOUNT" }, + { "prim": "ADDRESS" }, + { "prim": "SENDER" }, + [ [ { "prim": "COMPARE" }, { "prim": "EQ" } ], + { "prim": "IF", "args": [ [], [ [ { "prim": "UNIT" },{ "prim": "FAILWITH" } ] ] ] } ], + { "prim": "UNIT" }, { "prim": "EXEC" }, + { "prim": "PAIR" } ], + [ { "prim": "DROP" }, + { "prim": "NIL", "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] ] } ]`; + const storage = `{ "string": "${keyStore.publicKeyHash}" }`; + + return TezosNodeWriter.sendContractOriginationOperation(server, signer, keyStore, amount, delegate, fee, 600, 20000, code, storage, TezosTypes.TezosParameterFormat.Micheline); + } +} diff --git a/ConseilJS-core/src/chain/tezos/contracts/CryptonomicNameServiceHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/CryptonomicNameServiceHelper.ts new file mode 100644 index 00000000..85935633 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/CryptonomicNameServiceHelper.ts @@ -0,0 +1,170 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosMessageUtils } from '../TezosMessageUtil'; +import { TezosNodeReader } from '../TezosNodeReader'; +import { TezosNodeWriter } from '../TezosNodeWriter'; +import { KeyStore, Signer } from '../../../types/ExternalInterfaces'; +import * as TezosTypes from '../../../types/tezos/TezosChainTypes'; + +/** + * Interface for the Name Service contract developed by Cryptonomic, Inc. + */ +export namespace CryptonomicNameServiceHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(contract['script'].toString(), null, 16)).toString('hex'); + + if (k !== 'c020219e31ee3b462ed93c33124f117f') { throw new Error(`Contract at ${address} does not match the expected code hash: ${k}, 'c020219e31ee3b462ed93c33124f117f'`); } + + return true; + } + + /** + * Creates a name registry record. + * + * @param server + * @param keystore + * @param contract Contract address to call.. + * @param name Name to register. + * @param resolver Address to associate with the given name. + * @param registrationPeriod Duration to register the name for. + * @param registrationFee Registration fee to pay. + * @param operationFee Operation fee. + * @param freight Storage limit, will be estimated if not given. + * @param gas Gas limit, will be estimated if not given. + */ + export async function registerName(server: string, signer: Signer, keystore: KeyStore, contract: string, name: string, resolver: string, registrationPeriod: number, registrationFee: number, operationFee: number, freight?: number, gas?: number) { + const parameters = `(Pair ${registrationPeriod} (Pair "${name}" "${resolver}"))`; + + if (!freight || !gas) { + const cost = await TezosNodeWriter.testContractInvocationOperation(server, 'main', keystore, contract, registrationFee, operationFee, 6000, 500_000, 'registerName', parameters, TezosTypes.TezosParameterFormat.Michelson); + if (!freight){ freight = Number(cost['storageCost']) || 0; } + if (!gas) { gas = Number(cost['gas']) + 300; } + } + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, registrationFee, operationFee, 6000, 300_000, 'registerName', parameters, TezosTypes.TezosParameterFormat.Michelson); + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function transferNameOwnership(server: string, signer: Signer, keystore: KeyStore, contract: string, name: string, newNameOwner: string, fee: number, freight?: number, gas?: number) { + const parameters = `(Pair "${name}" "${newNameOwner}")`; + //(pair %transferNameOwnership (string %name) (address %newNameOwner)) + //(Right (Left (Pair $PARAM $PARAM))) + + if (!freight || !gas) { + const cost = await TezosNodeWriter.testContractInvocationOperation(server, 'main', keystore, contract, 0, fee, 1000, 100000, 'transferNameOwnership', parameters, TezosTypes.TezosParameterFormat.Michelson); + if (!freight) { freight = Number(cost['storageCost']) || 0; } + if (!gas) { gas = Number(cost['gas']) + 300; } + } + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, 'transferNameOwnership', parameters, TezosTypes.TezosParameterFormat.Michelson); + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function updateResolver(server: string, signer: Signer, keystore: KeyStore, contract: string, name: string, resolver: string, fee: number, freight?: number, gas?: number) { + const parameters = `(Pair "${name}" "${resolver}")`; + //(pair %updateResolver (string %name) (address %resolver)) + //(Right (Right (Right (Pair $PARAM $PARAM)))) + + if (!freight || !gas) { + const cost = await TezosNodeWriter.testContractInvocationOperation(server, 'main', keystore, contract, 0, fee, 1000, 100000, 'updateResolver', parameters, TezosTypes.TezosParameterFormat.Michelson); + if (!freight) { freight = Number(cost['storageCost']) || 0; } + if (!gas) { gas = Number(cost['gas']) + 300; } + } + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, 'updateResolver', parameters, TezosTypes.TezosParameterFormat.Michelson); + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function updateRegistrationPeriod(server: string, signer: Signer, keystore: KeyStore, contract: string, name: string, newRegistrationPeriod: number, registrationFee: number, operationFee: number, freight?: number, gas?: number) { + const parameters = `(Pair "${name}" ${newRegistrationPeriod})`; + //(pair %updateRegistrationPeriod (int %duration) (string %name)) + //(Right (Right (Left (Pair $PARAM $PARAM)))) + + if (!freight || !gas) { + const cost = await TezosNodeWriter.testContractInvocationOperation(server, 'main', keystore, contract, registrationFee, operationFee, 1000, 100000, 'updateRegistrationPeriod', parameters, TezosTypes.TezosParameterFormat.Michelson); + if (!freight) { freight = Number(cost['storageCost']) || 0; } + if (!gas) { gas = Number(cost['gas']) + 300; } + } + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, registrationFee, operationFee, freight, gas, 'updateRegistrationPeriod', parameters, TezosTypes.TezosParameterFormat.Michelson); + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function deleteName(server: string, signer: Signer, keystore: KeyStore, contract: string, name: string, fee: number, freight?: number, gas?: number) { + const parameters = `"${name}"`; + //(string %deleteName) + //(Left (Left $PARAM)) + + if (!freight || !gas) { + const cost = await TezosNodeWriter.testContractInvocationOperation(server, 'main', keystore, contract, 0, fee, 1000, 100000, 'deleteName', parameters, TezosTypes.TezosParameterFormat.Michelson); + if (!freight) { freight = Number(cost['storageCost']) || 0; } + if (!gas) { gas = Number(cost['gas']) + 300; } + } + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, 'deleteName', parameters, TezosTypes.TezosParameterFormat.Michelson); + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function getNameForAddress(server: string, mapid: number, address: string) { + const packedKey = TezosMessageUtils.encodeBigMapKey(Buffer.from(TezosMessageUtils.writePackedData(address, 'address'), 'hex')); + const mapResult = await TezosNodeReader.getValueForBigMapKey(server, mapid, packedKey); + + return JSONPath({ path: '$.string', json: mapResult })[0]; + } + + /** + * Queries the name registry big_map, 'nameMap' as returned by getSimpleStorage, for a specific name. + * + * @param server Destination Tezos node. + * @param mapid Map index to query + * @param name Name to look up. + */ + export async function getNameInfo(server: string, mapid: number, name: string): Promise{ + const packedKey = TezosMessageUtils.encodeBigMapKey(Buffer.from(TezosMessageUtils.writePackedData(name, 'string'), 'hex')); + const mapResult = await TezosNodeReader.getValueForBigMapKey(server, mapid, packedKey); + + return { + name, // name + owner: JSONPath({ path: '$.args[0].args[1].args[1].string', json: mapResult })[0], // owner + resolver: JSONPath({ path: '$.args[1].args[1].args[1].string', json: mapResult })[0], // resolver + registeredAt: new Date(JSONPath({ path: '$.args[1].args[0].string', json: mapResult })[0]), // registeredAt + registrationPeriod: JSONPath({ path: '$.args[1].args[1].args[0].int', json: mapResult })[0], // registrationPeriod + modified: Boolean(JSONPath({ path: '$.args[0].args[0].prim', json: mapResult })[0]) // modified + }; + } + + /** + * Returns basic contract configuration. + * + * @param server Destination Tezos node. + * @param contract Contract to query. + * @returns A JSON object in the following format: { nameMap, addressMap, manager, interval, maxDuration, intervalFee }. `nameMap` is the name dictionary, `addressMap` is the reverse lookup map, `manager` is the registry administrator, `interval` is the registration period increment, `maxDuration` longest interval for which a name may be registered, `intervalFee` cost per interval. + */ + export async function getSimpleStorage(server: string, contract: string): Promise<{ nameMap: number, addressMap: number, manager: string, interval: number, maxDuration: number, intervalFee: number }> { + const storageResult = await TezosNodeReader.getContractStorage(server, contract); + + return { + addressMap: Number(JSONPath({ path: '$.args[0].args[0].int', json: storageResult })[0]), + nameMap: Number(JSONPath({ path: '$.args[1].args[1].args[0].int', json: storageResult })[0]), + manager: JSONPath({ path: '$.args[0].args[1].args[0].string', json: storageResult })[0], + interval: Number(JSONPath({ path: '$.args[0].args[1].args[1].int', json: storageResult })[0]), + maxDuration: Number(JSONPath({ path: '$.args[1].args[0].int', json: storageResult })[0]), + intervalFee: Number(JSONPath({ path: '$.args[1].args[1].args[1].int', json: storageResult })[0]) + }; + } + + function clearRPCOperationGroupHash(hash: string) { + return hash.replace(/\"/g, '').replace(/\n/, ''); + } +} diff --git a/ConseilJS-core/src/chain/tezos/contracts/DexterTokenHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/DexterTokenHelper.ts new file mode 100644 index 00000000..7cc05c1f --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/DexterTokenHelper.ts @@ -0,0 +1,75 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosMessageUtils } from '../TezosMessageUtil'; +import { TezosNodeReader } from '../TezosNodeReader'; + +/** + * Awaiting contracts at https://gitlab.com/camlcase-dev/dexter + */ +export namespace DexterTokenHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(contract['script'].toString(), null, 16)).toString('hex'); + + if (k !== '1234') { throw new Error(`Contract at ${address} does not match the expected code hash`); } + + return true; + } + + /** + * Retrieves high level storage, including map id and token supply cap. + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function getBasicStorage(server: string, address: string) { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + console.log('-----') + console.log(storageResult); + console.log('-----') + + return { + mapid: Number(JSONPath({ path: '$.args[0].int', json: storageResult })[0]), + totalSupply: Number(JSONPath({ path: '$.args[1].int', json: storageResult })[0]) + }; + } + + /** + * + * + * @param server Destination Tezos node. + * @param mapid bigmap reference to query. + * @param account Account address to query. + */ + export async function getAddressRecord(server: string, mapid: number, account: string) { + const key = TezosMessageUtils.encodeBigMapKey(Buffer.from(TezosMessageUtils.writePackedData(account, 'address'), 'hex')); + const mapResult = await TezosNodeReader.getValueForBigMapKey(server, mapid, key); + + if (!!!mapResult) { return undefined; } + + return { + allowances: JSONPath({ path: '$.args[0]', json: mapResult })[0], + balance: Number(JSONPath({ path: '$.args[1].int', json: mapResult })[0]) + }; + } + + /** + * + * @param server Destination Tezos node. + * @param manager Token manager address + * @param supply Initial token supply + */ + export async function deployContract(server: string, manager: string, supply: number) { + + } +} diff --git a/ConseilJS-core/src/chain/tezos/contracts/MurbardMultisigHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/MurbardMultisigHelper.ts new file mode 100644 index 00000000..e99e5723 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/MurbardMultisigHelper.ts @@ -0,0 +1,118 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosLanguageUtil } from '../TezosLanguageUtil'; +import { TezosNodeReader } from '../TezosNodeReader'; +import { TezosNodeWriter } from '../TezosNodeWriter'; +import { KeyStore, Signer } from '../../../types/ExternalInterfaces'; +import * as TezosTypes from '../../../types/tezos/TezosChainTypes'; + +export namespace MurbardMultisigHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. This function processes Micheline format contracts. + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(JSON.stringify(contract.script.code), null, 16)).toString('hex'); + + if (k !== '914629850cfdad7b54a8c5a661d10bd0') { throw new Error(`Contract does not match the expected code hash: ${k}, '914629850cfdad7b54a8c5a661d10bd0'`); } + + return true; + } + + /** + * In contrast to verifyDestination, this function uses compares Michelson hashes. + * + * @param script + */ + export function verifyScript(script: string): boolean { + const k = Buffer.from(blakejs.blake2s(TezosLanguageUtil.preProcessMichelsonScript(script).join('\n'), null, 16)).toString('hex'); + + if (k !== 'ffcad1e376a6c8915780fe6676aceec6') { throw new Error(`Contract does not match the expected code hash: ${k}, 'ffcad1e376a6c8915780fe6676aceec6'`); } + + return true; + } + + export async function getSimpleStorage(server: string, address: string): Promise<{ counter: number, threshold: number, keys: string[] }> { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + + return { + counter: Number(JSONPath({ path: '$.args[0].int', json: storageResult })[0]), + threshold: Number(JSONPath({ path: '$.args[1].args[0].int', json: storageResult })[0]), + keys: JSONPath({ path: '$.args[1].args[1]..string', json: storageResult }) + }; + } + + /** + * Sample multi-sig contract retrieved in April 2020. + * https://github.com/murbard/smart-contracts/blob/master/multisig/michelson/multisig.tzip + */ + export async function deployContract(server: string, signer: Signer, keyStore: KeyStore, delegate: string, fee: number, amount: number, counter: number, threshold: number, keys: string[]): Promise { + if (threshold > keys.length) { throw new Error('Number of keys provided is lower than the threshold'); } + + const code = `parameter (pair (pair :payload (nat %counter) (or :action (pair :transfer (mutez %amount) (contract %dest unit)) (or (option %delegate key_hash) (pair %change_keys (nat %threshold) (list %keys key))))) (list %sigs (option signature))); + storage (pair (nat %stored_counter) (pair (nat %threshold) (list %keys key))); + code + { + UNPAIR ; SWAP ; DUP ; DIP { SWAP } ; + DIP + { + UNPAIR ; + DUP ; SELF ; ADDRESS ; CHAIN_ID ; PAIR ; PAIR ; + PACK ; + DIP { UNPAIR @counter ; DIP { SWAP } } ; SWAP + } ; + UNPAIR @stored_counter; DIP { SWAP }; + ASSERT_CMPEQ ; + DIP { SWAP } ; UNPAIR @threshold @keys; + DIP + { + PUSH @valid nat 0; SWAP ; + ITER + { + DIP { SWAP } ; SWAP ; + IF_CONS + { + IF_SOME + { SWAP ; + DIP + { + SWAP ; DIIP { DUUP } ; + CHECK_SIGNATURE ; ASSERT ; + PUSH nat 1 ; ADD @valid } } + { SWAP ; DROP } + } + { + FAIL + } ; + SWAP + } + } ; + ASSERT_CMPLE ; + DROP ; DROP ; + DIP { UNPAIR ; PUSH nat 1 ; ADD @new_counter ; PAIR} ; + NIL operation ; SWAP ; + IF_LEFT + { + UNPAIR ; UNIT ; TRANSFER_TOKENS ; CONS } + { IF_LEFT { + SET_DELEGATE ; CONS } + { + DIP { SWAP ; CAR } ; SWAP ; PAIR ; SWAP }} ; + PAIR }`; + const storage = `(Pair ${counter} (Pair ${threshold} { "${keys.join('" ; "') }" } ) )`; + + const nodeResult = await TezosNodeWriter.sendContractOriginationOperation(server, signer, keyStore, amount, delegate, fee, 5_000, 120_000, code, storage, TezosTypes.TezosParameterFormat.Michelson); + return clearRPCOperationGroupHash(nodeResult['operationGroupID']); + } + + function clearRPCOperationGroupHash(hash: string): string { + return hash.replace(/\"/g, '').replace(/\n/, ''); + } +} diff --git a/ConseilJS-core/src/chain/tezos/contracts/StakerDAOTokenHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/StakerDAOTokenHelper.ts new file mode 100644 index 00000000..8c0786ad --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/StakerDAOTokenHelper.ts @@ -0,0 +1,89 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosLanguageUtil } from '../TezosLanguageUtil'; +import { TezosMessageUtils } from '../TezosMessageUtil'; +import { TezosNodeReader } from '../TezosNodeReader'; +import { TezosNodeWriter } from '../TezosNodeWriter'; +import { KeyStore, Signer } from '../../../types/ExternalInterfaces'; +import * as TezosTypes from '../../../types/tezos/TezosChainTypes'; + +/** + * + */ +export namespace StakerDAOTokenHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. This function processes Micheline format contracts. + * + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(JSON.stringify(contract.script.code), null, 16)).toString('hex'); + + if (k !== '0e3e137841a959521324b4ce20ca2df7') { throw new Error(`Contract does not match the expected code hash: ${k}, '0e3e137841a959521324b4ce20ca2df7'`); } + + return true; + } + + /** + * In contrast to verifyDestination, this function uses compares Michelson hashes. + * + * @param script + */ + export function verifyScript(script: string): boolean { + const k = Buffer.from(blakejs.blake2s(TezosLanguageUtil.preProcessMichelsonScript(script).join('\n'), null, 16)).toString('hex'); + + if (k !== 'b77ada691b1d630622bea243696c84d7') { throw new Error(`Contract does not match the expected code hash: ${k}, 'b77ada691b1d630622bea243696c84d7'`); } + + return true; + } + + export async function getAccountBalance(server: string, mapid: number, account: string): Promise { + const packedKey = TezosMessageUtils.encodeBigMapKey(Buffer.from(TezosMessageUtils.writePackedData(account, 'address'), 'hex')); + const mapResult = await TezosNodeReader.getValueForBigMapKey(server, mapid, packedKey); + + if (mapResult === undefined) { throw new Error(`Map ${mapid} does not contain a record for ${account}`); } + + return Number(JSONPath({ path: '$.int', json: mapResult })[0]); + } + + /** + * Storage definition taken from https://github.com/StakerDAO/staker-dao/blob/master/stkr-token/src/Lorentz/Contracts/STKR/Storage.hs#L20 + * + * @param server + * @param address + */ + export async function getSimpleStorage(server: string, address: string): Promise<{ mapid: number, council: string[], stage: number, phase: number, supply: number, paused: boolean }> { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + + return { + mapid: Number(JSONPath({ path: '$.args[1].args[1].args[0].int', json: storageResult })[0]), + council: JSONPath({ path: '$.args[0].args[0].args[1]..string', json: storageResult }), + stage: Number(JSONPath({ path: '$.args[1].args[0].args[0].int', json: storageResult })[0]), + phase: Number(JSONPath({ path: '$.args[1].args[0].args[0].int', json: storageResult })[0]) % 4, + supply: Number(JSONPath({ path: '$.args[1].args[0].args[1].int', json: storageResult })[0]), + paused: (JSONPath({ path: '$.args[1].args[1].args[1].args[0].prim', json: storageResult })[0]).toString().toLowerCase().startsWith('t') + //policy + //proposals + //votes + }; + } + + export async function transferBalance(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, source: string, destination: string, amount: number, gas: number, freight: number) { + const parameters = `(Right (Left (Left (Right (Pair "${source}" (Pair "${destination}" ${amount}))))))`; + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + function clearRPCOperationGroupHash(hash: string) { + return hash.replace(/\"/g, '').replace(/\n/, ''); + } +} diff --git a/ConseilJS-core/src/chain/tezos/contracts/TCFBakerRegistryHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/TCFBakerRegistryHelper.ts new file mode 100644 index 00000000..668bb497 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/TCFBakerRegistryHelper.ts @@ -0,0 +1,114 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosMessageUtils } from '../TezosMessageUtil'; +import { TezosNodeReader } from '../TezosNodeReader'; + +/** + * Interface for the Tezos Commons Baker Registry contract outlined here: https://forum.tezosagora.org/t/bakers-registry-discussion/1238/55 + * + * Compatible with the contract as of December 22, 2019. + */ +export namespace TCFBakerRegistryHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(contract['script'].toString(), null, 16)).toString('hex'); + + if (k !== '1527ddf08bdf582dce0b28c051044897') { throw new Error(`Contract at ${address} does not match the expected code hash`); } + + return true; + } + + /** + * Retrieves high level storage, including map id and fees for invocation. + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function getSimpleStorage(server: string, address: string) { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + + return { + mapid: parseInt(JSONPath({ path: '$.args[0].int', json: storageResult })[0]), + owner: JSONPath({ path: '$.args[1].args[0].string', json: storageResult })[0], + signupFee: parseInt(JSONPath({ path: '$.args[1].args[1].args[0].int', json: storageResult })[0]), + updateFee: parseInt(JSONPath({ path: '$.args[1].args[1].args[1].int', json: storageResult })[0]) + }; + } + + /** + * Calls the set_data entry point to update registration for a baker. + * + * @param server Destination Tezos node. + * @param address Contract address to query. + * @param baker Baker address to register. + * @param name Baker name, can be empty string. + * @param isAcceptingDelegation + * @param detailsURL + * @param payoutShare + */ + export async function updateRegistration(server: string, address: string, baker: string, name: string, isAcceptingDelegation: boolean, detailsURL: string, payoutShare: number) { + + } + + /** + * Query the baker registry contract at the specified address for a given baker address. + * + * @param server Destination Tezos node. + * @param mapid bigmap reference to query. + * @param baker Baker address to query. + */ + export async function queryRegistration(server: string, mapid: number, baker: string) { + const key = TezosMessageUtils.encodeBigMapKey(Buffer.from(TezosMessageUtils.writePackedData(baker, 'key_hash'), 'hex')); + const mapResult = await TezosNodeReader.getValueForBigMapKey(server, mapid, key); + + if (!!!mapResult) { return undefined; } + + const textDecoder = new TextDecoder(); + + const paymentConfigMask = Number(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[1].args[1].args[0].args[1].int', json: mapResult })[0]); // paymentConfigMask + + return { + name: textDecoder.decode(Buffer.from(JSONPath({ path: '$.args[0].args[0].args[0].args[0].args[0].args[0].bytes', json: mapResult })[0], 'hex')), // bakerName + isAcceptingDelegation: Boolean(JSONPath({ path: '$.args[0].args[0].args[0].args[0].args[0].args[1].prim', json: mapResult })[0]), // openForDelegation + externalDataURL: textDecoder.decode(Buffer.from(JSONPath({ path: '$.args[0].args[0].args[0].args[0].args[1].bytes', json: mapResult })[0], 'hex')), // bakerOffchainRegistryUrl + split: Number(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[0].args[0].int', json: mapResult })[0]) / 10000, // split + paymentAccounts: JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[0].args[1]..string', json: mapResult }), // bakerPaysFromAccounts + minimumDelegation: Number(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[1].args[0].args[0].args[0].int', json: mapResult })[0]), // minDelegation + isGreedy: Boolean(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[1].args[0].args[0].args[1].prim', json: mapResult })[0]), // subtractPayoutsLessThanMin + payoutDelay: Number(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[1].args[0].args[1].args[0].int', json: mapResult })[0]), // payoutDelay + payoutFrequency: Number(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[1].args[0].args[1].args[1].args[0].int', json: mapResult })[0]), // payoutFrequency + minimumPayout: Number(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[1].args[0].args[1].args[1].args[1].int', json: mapResult })[0]), // minPayout + isCheap: Boolean(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[1].args[1].args[0].args[0].prim', json: mapResult })[0]), // bakerChargesTransactionFee + paymentConfig: { + payForOwnBlocks: Boolean(paymentConfigMask & 1), + payForEndorsements: Boolean(paymentConfigMask & 2), + payGainedFees: Boolean(paymentConfigMask & 4), + payForAccusationGains: Boolean(paymentConfigMask & 8), + subtractLostDepositsWhenAccused: Boolean(paymentConfigMask & 16), + subtractLostRewardsWhenAccused: Boolean(paymentConfigMask & 32), + subtractLostFeesWhenAccused: Boolean(paymentConfigMask & 64), + payForRevelation: Boolean(paymentConfigMask & 128), + subtractLostRewardsWhenMissRevelation: Boolean(paymentConfigMask & 256), + subtractLostFeesWhenMissRevelation: Boolean(paymentConfigMask & 512), + compensateMissedBlocks: !Boolean(paymentConfigMask & 1024), + payForStolenBlocks: Boolean(paymentConfigMask & 2048), + compensateMissedEndorsements: !Boolean(paymentConfigMask & 4096), + compensateLowPriorityEndorsementLoss: !Boolean(paymentConfigMask & 8192) + }, + overdelegationThreshold: Number(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[1].args[1].args[1].args[0].int', json: mapResult })[0]), // overDelegationThreshold + subtractRewardsFromUninvitedDelegation: Boolean(JSONPath({ path: '$.args[0].args[0].args[0].args[1].args[1].args[1].args[1].args[1].prim', json: mapResult })[0]), // subtractRewardsFromUninvitedDelegation + recordManager: JSONPath({ path: '$.args[0].args[1].args[0].string', json: mapResult })[0], // reporterAccount + timestamp: new Date(JSONPath({ path: '$.args[1].string', json: mapResult })[0]) // last_update + }; + } +} diff --git a/ConseilJS-core/src/chain/tezos/contracts/TzbtcTokenHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/TzbtcTokenHelper.ts new file mode 100644 index 00000000..a1652dbf --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/TzbtcTokenHelper.ts @@ -0,0 +1,145 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosLanguageUtil } from '../TezosLanguageUtil'; +import { TezosMessageUtils } from '../TezosMessageUtil'; +import { TezosNodeReader } from '../TezosNodeReader'; +import { TezosNodeWriter } from '../TezosNodeWriter'; +import { KeyStore, Signer } from '../../../types/ExternalInterfaces'; +import * as TezosTypes from '../../../types/tezos/TezosChainTypes'; + +/** + * + */ +export namespace TzbtcTokenHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. This function processes Micheline format contracts. + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(JSON.stringify(contract.script.code), null, 16)).toString('hex'); + + if (k !== '187c967006ca95a648c770fdd76947ef') { throw new Error(`Contract does not match the expected code hash: ${k}, '187c967006ca95a648c770fdd76947ef'`); } + + return true; + } + + /** + * In contrast to verifyDestination, this function uses compares Michelson hashes. + * + * @param script + */ + export function verifyScript(script: string): boolean { + const k = Buffer.from(blakejs.blake2s(TezosLanguageUtil.preProcessMichelsonScript(script).join('\n'), null, 16)).toString('hex'); + + if (k !== 'ffcad1e376a6c8915780fe6676aceec6') { throw new Error(`Contract does not match the expected code hash: ${k}, 'ffcad1e376a6c8915780fe6676aceec6'`); } + + return true; + } + + /** + * https://github.com/tz-wrapped/tezos-btc/blob/master/src/Lorentz/Contracts/TZBTC/V1.hs#L110 + * + * @param server + * @param mapid + * @param account + */ + export async function getAccountBalance(server: string, mapid: number, account: string): Promise { + const value = await queryMap(server, mapid, `(Pair "ledger" 0x${TezosMessageUtils.writeAddress(account)})`); + + return Number(JSONPath({ path: '$.args[0].int', json: value })[0]); + } + + /** + * https://github.com/tz-wrapped/tezos-btc/blob/master/src/Lorentz/Contracts/TZBTC/V1.hs#L105 + * + * @param server + * @param mapid + */ + export async function getOperatorList(server: string, mapid: number): Promise { + const value = await queryMap(server, mapid, '"operators"'); + + let addresses: string[] = []; + for (const a of value) { + addresses.push(TezosMessageUtils.readAddress(a.bytes)); + } + + return addresses; + } + + /** + * https://github.com/tz-wrapped/tezos-btc/blob/master/src/Lorentz/Contracts/TZBTC/V1.hs#L107 + * + * @param server + * @param mapid + */ + export async function getTokenMetadata(server: string, mapid: number): Promise { + return await queryMap(server, mapid, '"tokenMetadata"'); + } + + /** + * Returns the mapid of the associated contract and scale at which token values should be interpreted. With tzBTC, 1 means 0.00000001, that is 1 / 100000000 or 10 ^ 8. + */ + export async function getSimpleStorage(server: string, address: string): Promise<{ mapid: number, scale: number }> { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + + return { + mapid: Number(JSONPath({ path: '$.args[0].int', json: storageResult })[0]), + scale: 8 + }; + } + + export async function transferBalance(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, source: string, destination: string, amount: number, gas: number = 250_000, freight: number = 1_000) { + //const parameters = `(Right (Right (Right (Right (Left (Right (Right (Left (Pair "${source}" (Pair "${destination}" ${amount}))))))))))`; + const parameters = `(Pair "${source}" (Pair "${destination}" ${amount}))`; + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, 'transfer', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function approveBalance(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, destination: string, amount: number, gas: number = 250_000, freight: number = 1_000) { + const parameters = `(Right (Right (Right (Right (Left (Right (Right (Right (Pair "${destination}" ${amount})))))))))`; + //approve + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function mintBalance(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, destination: string, amount: number, gas: number = 250_000, freight: number = 1_000) { + const parameters = `(Right (Right (Right (Right (Right (Left (Left (Left (Pair "${destination}" ${amount})))))))))`; + //mint + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function addOperator(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, operator: string, gas: number = 250_000, freight: number = 1_000) { + const parameters = `(Right (Right (Right (Right (Right (Left (Right (Left "${operator}" ))))))))`; + //addOperator + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + async function queryMap(server: string, mapid: number, query: string): Promise { + const key = Buffer.from(TezosMessageUtils.writePackedData(query, '', TezosTypes.TezosParameterFormat.Michelson), 'hex'); + const packedKey = TezosMessageUtils.writePackedData(key, 'bytes'); + const encodedKey = TezosMessageUtils.encodeBigMapKey(Buffer.from(packedKey, 'hex')); + const mapResult = await TezosNodeReader.getValueForBigMapKey(server, mapid, encodedKey); + + if (mapResult === undefined) { throw new Error(`Could not get data from map ${mapid} for '${query}'`); } + const bytes = JSONPath({ path: '$.bytes', json: mapResult })[0]; + return JSON.parse(TezosLanguageUtil.hexToMicheline(bytes.slice(2)).code); + } + + function clearRPCOperationGroupHash(hash: string) { + return hash.replace(/\"/g, '').replace(/\n/, ''); + } +} diff --git a/ConseilJS-core/src/chain/tezos/contracts/Tzip7ReferenceTokenHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/Tzip7ReferenceTokenHelper.ts new file mode 100644 index 00000000..9e2d08a2 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/Tzip7ReferenceTokenHelper.ts @@ -0,0 +1,171 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosLanguageUtil } from '../TezosLanguageUtil'; +import { TezosMessageUtils } from '../TezosMessageUtil'; +import { TezosNodeReader } from '../TezosNodeReader'; +import { TezosNodeWriter } from '../TezosNodeWriter'; +import { KeyStore, Signer } from '../../../types/ExternalInterfaces'; +import * as TezosTypes from '../../../types/tezos/TezosChainTypes'; + +/** + * Interface for the FA1.2 contract implementation from the Morley Project outlined here: https://gitlab.com/tzip/tzip/blob/master/proposals/tzip-7/ManagedLedger.md + * + * Compatible with the contract as of January 22, 2020 from https://gitlab.com/tzip/tzip/raw/master/proposals/tzip-7/ManagedLedger.tz + * + * This wrapper does not include support for the following contract functions: getAllowance, getBalance, getTotalSupply, getAdministrator. This information is retrieved by querying the big_map structure on chain directly. + */ +export namespace Tzip7ReferenceTokenHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. This function processes Micheline format contracts. + * + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(JSON.stringify(contract.script.code), null, 16)).toString('hex'); + + if (k !== '0e3e137841a959521324b4ce20ca2df7') { throw new Error(`Contract does not match the expected code hash: ${k}, '0e3e137841a959521324b4ce20ca2df7'`); } + + return true; + } + + /** + * In contrast to verifyDestination, this function uses compares Michelson hashes. + * + * @param script + */ + export function verifyScript(script: string): boolean { + const k = Buffer.from(blakejs.blake2s(TezosLanguageUtil.preProcessMichelsonScript(script).join('\n'), null, 16)).toString('hex'); + + if (k !== 'b77ada691b1d630622bea243696c84d7') { throw new Error(`Contract does not match the expected code hash: ${k}, 'b77ada691b1d630622bea243696c84d7'`); } + + return true; + } + + export async function deployContract(server: string, signer: Signer, keystore: KeyStore, fee: number, administrator: string, pause: boolean = true, supply: number = 0, gas: number = 150_000, freight: number = 5_000) { + const contract = `parameter (or (or (or (pair %transfer (address :from) (pair (address :to) (nat :value))) (pair %approve (address :spender) (nat :value))) (or (pair %getAllowance (pair (address :owner) (address :spender)) (contract nat)) (or (pair %getBalance (address :owner) (contract nat)) (pair %getTotalSupply unit (contract nat))))) (or (or (bool %setPause) (address %setAdministrator)) (or (pair %getAdministrator unit (contract address)) (or (pair %mint (address :to) (nat :value)) (pair %burn (address :from) (nat :value)))))); + storage (pair (big_map %ledger (address :user) (pair (nat :balance) (map :approvals (address :spender) (nat :value)))) (pair (address %admin) (pair (bool %paused) (nat %totalSupply)))); + code { CAST (pair (or (or (or (pair address (pair address nat)) (pair address nat)) (or (pair (pair address address) (contract nat)) (or (pair address (contract nat)) (pair unit (contract nat))))) (or (or bool address) (or (pair unit (contract address)) (or (pair address nat) (pair address nat))))) (pair (big_map address (pair nat (map address nat))) (pair address (pair bool nat)))); DUP; CAR; DIP { CDR }; IF_LEFT { IF_LEFT { IF_LEFT { DIP { DUP; CDR; CDR; CAR; IF { UNIT; PUSH string "TokenOperationsArePaused"; PAIR; FAILWITH } { } }; DUP; DUP; CDR; CAR; DIP { CAR }; COMPARE; EQ; IF { DROP } { DUP; CAR; SENDER; COMPARE; EQ; IF { } { DUP; DIP { DUP; DIP { DIP { DUP }; CAR; SENDER; PAIR; DUP; DIP { CDR; DIP { CAR }; GET; IF_NONE { EMPTY_MAP (address) nat } { CDR } }; CAR; GET; IF_NONE { PUSH nat 0 } { } }; DUP; CAR; DIP { SENDER; DIP { DUP; CDR; CDR; DIP { DIP { DUP }; SWAP }; SWAP; SUB; ISNAT; IF_NONE { DIP { DUP }; SWAP; DIP { DUP }; SWAP; CDR; CDR; PAIR; PUSH string "NotEnoughAllowance"; PAIR; FAILWITH } { } }; PAIR }; PAIR; DIP { DROP; DROP }; DIP { DUP }; SWAP; DIP { DUP; CAR }; SWAP; DIP { CAR }; GET; IF_NONE { PUSH nat 0; DIP { EMPTY_MAP (address) nat }; PAIR; EMPTY_MAP (address) nat } { DUP; CDR }; DIP { DIP { DUP }; SWAP }; SWAP; CDR; CDR; DUP; INT; EQ; IF { DROP; NONE nat } { SOME }; DIP { DIP { DIP { DUP }; SWAP }; SWAP }; SWAP; CDR; CAR; UPDATE; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; CAR; DIP { SOME }; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR } }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; CDR; CAR; DIP { CAR }; GET; IF_NONE { DUP; CDR; CDR; INT; EQ; IF { NONE (pair nat (map address nat)) } { DUP; CDR; CDR; DIP { EMPTY_MAP (address) nat }; PAIR; SOME } } { DIP { DUP }; SWAP; CDR; CDR; DIP { DUP; CAR }; ADD; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; SOME }; SWAP; DUP; DIP { CDR; CAR; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR }; DUP; DIP { CDR; CDR; INT; DIP { DUP; CDR; CDR; CDR }; ADD; ISNAT; IF_NONE { PUSH string "Internal: Negative total supply"; FAILWITH } { }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; CAR; DIP { CAR }; GET; IF_NONE { CDR; CDR; PUSH nat 0; SWAP; PAIR; PUSH string "NotEnoughBalance"; PAIR; FAILWITH } { }; DUP; CAR; DIP { DIP { DUP }; SWAP }; SWAP; CDR; CDR; SWAP; SUB; ISNAT; IF_NONE { CAR; DIP { DUP }; SWAP; CDR; CDR; PAIR; PUSH string "NotEnoughBalance"; PAIR; FAILWITH } { }; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; DIP { DUP }; SWAP; DIP { DUP; CAR; INT; EQ; IF { DUP; CDR; SIZE; INT; EQ; IF { DROP; NONE (pair nat (map address nat)) } { SOME } } { SOME }; SWAP; CAR; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR }; DUP; DIP { CDR; CDR; NEG; DIP { DUP; CDR; CDR; CDR }; ADD; ISNAT; IF_NONE { PUSH string "Internal: Negative total supply"; FAILWITH } { }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR }; DROP }; NIL operation; PAIR } { SENDER; PAIR; DIP { DUP; CDR; CDR; CAR; IF { UNIT; PUSH string "TokenOperationsArePaused"; PAIR; FAILWITH } { } }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; DUP; DIP { CAR; DIP { CAR }; GET; IF_NONE { EMPTY_MAP (address) nat } { CDR } }; CDR; CAR; GET; IF_NONE { PUSH nat 0 } { }; DUP; INT; EQ; IF { DROP } { DIP { DUP }; SWAP; CDR; CDR; INT; EQ; IF { DROP } { PUSH string "UnsafeAllowanceChange"; PAIR; FAILWITH } }; DIP { DUP }; SWAP; DIP { DUP; CAR }; SWAP; DIP { CAR }; GET; IF_NONE { PUSH nat 0; DIP { EMPTY_MAP (address) nat }; PAIR; EMPTY_MAP (address) nat } { DUP; CDR }; DIP { DIP { DUP }; SWAP }; SWAP; CDR; CDR; DUP; INT; EQ; IF { DROP; NONE nat } { SOME }; DIP { DIP { DIP { DUP }; SWAP }; SWAP }; SWAP; CDR; CAR; UPDATE; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; CAR; DIP { SOME }; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; NIL operation; PAIR } } { IF_LEFT { DUP; CAR; DIP { CDR }; DIP { DIP { DUP }; SWAP }; PAIR; DUP; CAR; DIP { CDR }; DUP; DIP { CAR; DIP { CAR }; GET; IF_NONE { EMPTY_MAP (address) nat } { CDR } }; CDR; GET; IF_NONE { PUSH nat 0 } { }; DIP { AMOUNT }; TRANSFER_TOKENS; NIL operation; SWAP; CONS; PAIR } { IF_LEFT { DUP; CAR; DIP { CDR }; DIP { DIP { DUP }; SWAP }; PAIR; DUP; CAR; DIP { CDR }; DIP { CAR }; GET; IF_NONE { PUSH nat 0 } { CAR }; DIP { AMOUNT }; TRANSFER_TOKENS; NIL operation; SWAP; CONS; PAIR } { DUP; CAR; DIP { CDR }; DIP { DIP { DUP }; SWAP }; PAIR; CDR; CDR; CDR; CDR; DIP { AMOUNT }; TRANSFER_TOKENS; NIL operation; SWAP; CONS; PAIR } } } } { IF_LEFT { IF_LEFT { DIP { DUP; CDR; CAR; SENDER; COMPARE; EQ; IF { } { UNIT; PUSH string "SenderIsNotAdmin"; PAIR; FAILWITH } }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; NIL operation; PAIR } { DIP { DUP; CDR; CAR; SENDER; COMPARE; EQ; IF { } { UNIT; PUSH string "SenderIsNotAdmin"; PAIR; FAILWITH } }; DIP { DUP; CDR }; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; NIL operation; PAIR } } { IF_LEFT { DUP; CAR; DIP { CDR }; DIP { DIP { DUP }; SWAP }; PAIR; CDR; CDR; CAR; DIP { AMOUNT }; TRANSFER_TOKENS; NIL operation; SWAP; CONS; PAIR } { IF_LEFT { DIP { DUP; CDR; CAR; SENDER; COMPARE; EQ; IF { } { UNIT; PUSH string "SenderIsNotAdmin"; PAIR; FAILWITH } }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; CAR; DIP { CAR }; GET; IF_NONE { DUP; CDR; INT; EQ; IF { NONE (pair nat (map address nat)) } { DUP; CDR; DIP { EMPTY_MAP (address) nat }; PAIR; SOME } } { DIP { DUP }; SWAP; CDR; DIP { DUP; CAR }; ADD; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; SOME }; SWAP; DUP; DIP { CAR; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR }; DUP; DIP { CDR; INT; DIP { DUP; CDR; CDR; CDR }; ADD; ISNAT; IF_NONE { PUSH string "Internal: Negative total supply"; FAILWITH } { }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR }; DROP; NIL operation; PAIR } { DIP { DUP; CDR; CAR; SENDER; COMPARE; EQ; IF { } { UNIT; PUSH string "SenderIsNotAdmin"; PAIR; FAILWITH } }; DIP { DUP }; SWAP; DIP { DUP }; SWAP; CAR; DIP { CAR }; GET; IF_NONE { CDR; PUSH nat 0; SWAP; PAIR; PUSH string "NotEnoughBalance"; PAIR; FAILWITH } { }; DUP; CAR; DIP { DIP { DUP }; SWAP }; SWAP; CDR; SWAP; SUB; ISNAT; IF_NONE { CAR; DIP { DUP }; SWAP; CDR; PAIR; PUSH string "NotEnoughBalance"; PAIR; FAILWITH } { }; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR; DIP { DUP }; SWAP; DIP { DUP; CAR; INT; EQ; IF { DUP; CDR; SIZE; INT; EQ; IF { DROP; NONE (pair nat (map address nat)) } { SOME } } { SOME }; SWAP; CAR; DIP { DIP { DUP; CAR } }; UPDATE; DIP { DUP; DIP { CDR }; CAR }; DIP { DROP }; PAIR }; DUP; DIP { CDR; NEG; DIP { DUP; CDR; CDR; CDR }; ADD; ISNAT; IF_NONE { PUSH string "Internal: Negative total supply"; FAILWITH } { }; DIP { DUP; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR; SWAP; PAIR; DIP { DUP; DIP { CAR }; CDR }; DIP { DROP }; SWAP; PAIR }; DROP; NIL operation; PAIR } } } } };`; + const storage = `Pair {} (Pair "${administrator}" (Pair ${pause ? 'True' : 'False'} ${supply}))`; + + const nodeResult = await TezosNodeWriter.sendContractOriginationOperation(server, signer, keystore, 0, undefined, fee, freight, gas, contract, storage, TezosTypes.TezosParameterFormat.Michelson); + return clearRPCOperationGroupHash(nodeResult['operationGroupID']); + } + + export async function getAccountBalance(server: string, mapid: number, account: string): Promise { + const packedKey = TezosMessageUtils.encodeBigMapKey(Buffer.from(TezosMessageUtils.writePackedData(account, 'address'), 'hex')); + const mapResult = await TezosNodeReader.getValueForBigMapKey(server, mapid, packedKey); + + if (mapResult === undefined) { throw new Error(`Map ${mapid} does not contain a record for ${account}`); } + + const jsonresult = JSONPath({ path: '$.args[0].int', json: mapResult }); + return Number(jsonresult[0]); + } + + export async function getAccountAllowance(server: string, mapid: number, account: string, source: string) { + const packedKey = TezosMessageUtils.encodeBigMapKey(Buffer.from(TezosMessageUtils.writePackedData(source, 'address'), 'hex')); + const mapResult = await TezosNodeReader.getValueForBigMapKey(server, mapid, packedKey); + + if (mapResult === undefined) { throw new Error(`Map ${mapid} does not contain a record for ${source}/${account}`); } + + let allowances = new Map(); + JSONPath({ path: '$.args[1][*].args', json: mapResult }).forEach(v => allowances[v[0]['string']] = Number(v[1]['int'])); + + return allowances[account]; + } + + export async function getSimpleStorage(server: string, address: string): Promise<{mapid: number, supply: number, administrator: string, paused: boolean}> { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + + return { + mapid: Number(JSONPath({ path: '$.args[0].int', json: storageResult })[0]), + supply: Number(JSONPath({ path: '$.args[1].args[1].args[1].int', json: storageResult })[0]), + administrator: JSONPath({ path: '$.args[1].args[0].string', json: storageResult })[0], + paused: (JSONPath({ path: '$.args[1].args[1].args[0].prim', json: storageResult })[0]).toString().toLowerCase().startsWith('t') + }; + } + + export async function getTokenSupply(server: string, address: string): Promise { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + + return Number(JSONPath({ path: '$.args[1].args[1].args[1].int', json: storageResult })[0]); + } + + export async function getAdministrator(server: string, address: string): Promise { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + + return JSONPath({ path: '$.args[1].args[0].string', json: storageResult })[0]; + } + + export async function getPaused(server: string, address: string): Promise { + const storageResult = await TezosNodeReader.getContractStorage(server, address); + + return (JSONPath({ path: '$.args[1].args[1].args[0].prim', json: storageResult })[0]).toString().toLowerCase().startsWith('t'); + } + + export async function transferBalance(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, source: string, destination: string, amount: number, gas: number, freight: number) { + const parameters = `(Left (Left (Left (Pair "${source}" (Pair "${destination}" ${amount})))))`; + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function approveBalance(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, destination: string, amount: number, gas: number, freight: number) { + const parameters = `(Left (Left (Right (Pair "${destination}" ${amount}))))`; + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function activateLedger(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, gas: number, freight: number) { + const parameters = '(Right (Left (Left False)))'; + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function deactivateLedger(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, gas: number, freight: number) { + const parameters = '(Right (Left (Left True)))'; + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function setAdministrator(server: string, signer: Signer, keystore: KeyStore, contract: string, address: string, fee: number, gas: number, freight: number) { + const parameters = `(Right (Left (Right "${address}")))`; + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function mint(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, destination: string, amount: number, gas: number = 150_000, freight: number = 5_000) { + const parameters = `(Right (Right (Right (Left (Pair "${destination}" ${amount})))))`; + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + export async function burn(server: string, signer: Signer, keystore: KeyStore, contract: string, fee: number, source: string, amount: number, gas: number, freight: number) { + const parameters = `(Right (Right (Right (Right (Pair "${source}" ${amount})))))`; + + const nodeResult = await TezosNodeWriter.sendContractInvocationOperation(server, signer, keystore, contract, 0, fee, freight, gas, '', parameters, TezosTypes.TezosParameterFormat.Michelson); + + return clearRPCOperationGroupHash(nodeResult.operationGroupID); + } + + function clearRPCOperationGroupHash(hash: string) { + return hash.replace(/\"/g, '').replace(/\n/, ''); + } +} diff --git a/ConseilJS-core/src/chain/tezos/contracts/tzip12/NFTReferenceTokenHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/tzip12/NFTReferenceTokenHelper.ts new file mode 100644 index 00000000..414ae109 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/tzip12/NFTReferenceTokenHelper.ts @@ -0,0 +1,70 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosLanguageUtil } from '../../TezosLanguageUtil'; +import { TezosMessageUtils } from '../../TezosMessageUtil'; +import { TezosNodeReader } from '../../TezosNodeReader'; +import { TezosNodeWriter } from '../../TezosNodeWriter'; +import { KeyStore, Signer } from '../../../../types/ExternalInterfaces'; +import * as TezosTypes from '../../../../types/tezos/TezosChainTypes'; + +/** + * Interface for the FA2.0 contract implementation outlined here: https://gitlab.com/tzip/tzip/-/tree/master/proposals/tzip-12/tzip-12.md. + * + * Compatible with the contract as of May 19, 2020 from https://gitlab.com/smondet/fa2-smartpy/-/raw/4b5704099fb5d10fb550b1f9648ff4859875a3e0/michelson/20200519-140638+0000_29bfe43_mutran_contract.tz + */ +export namespace NFTReferenceTokenHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. This function processes Micheline format contracts. + * + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(JSON.stringify(contract.script.code), null, 16)).toString('hex'); + + if (k !== '0e3e137841a959521324b4ce20ca2df7') { throw new Error(`Contract does not match the expected code hash: ${k}, '0e3e137841a959521324b4ce20ca2df7'`); } + + return true; + } + + /** + * In contrast to verifyDestination, this function uses compares Michelson hashes. + * + * @param script + */ + export function verifyScript(script: string): boolean { + const k = Buffer.from(blakejs.blake2s(TezosLanguageUtil.preProcessMichelsonScript(script).join('\n'), null, 16)).toString('hex'); + + if (k !== 'b77ada691b1d630622bea243696c84d7') { throw new Error(`Contract does not match the expected code hash: ${k}, 'b77ada691b1d630622bea243696c84d7'`); } + + return true; + } + + export async function deployContract(server: string, signer: Signer, keystore: KeyStore, fee: number, administrator: string, name: string, symbol: string, tokenid: number, scale: number, pause: boolean = true, supply: number = 0, gas: number = 400_000, freight: number = 8_000): Promise { + const contract = `{ parameter (or (or (or (pair %balance_of (contract %callback (list (pair (nat %balance) (pair %request (address %owner) (nat %token_id))))) (list %requests (pair (address %owner) (nat %token_id)))) (pair %is_operator (contract %callback (pair (bool %is_operator) (pair %operator (address %operator) (address %owner)))) (pair %operator (address %operator) (address %owner)))) (or (pair %mint (pair (address %address) (nat %amount)) (pair (string %symbol) (nat %token_id))) (or (pair %mutez_transfer (mutez %amount) (address %destination)) (contract %permissions_descriptor (pair (pair (option %custom (pair (option %config_api address) (string %tag))) (or %operator (unit %no_transfer) (or (unit %owner_or_operator_transfer) (unit %owner_transfer)))) (pair (or %receiver (unit %optional_owner_hook) (or (unit %owner_no_op) (unit %required_owner_hook))) (or %sender (unit %optional_owner_hook) (or (unit %owner_no_op) (unit %required_owner_hook))))))))) (or (or (address %set_administrator) (or (bool %set_pause) (pair %token_metadata (contract %callback (list (pair (nat %token_id) (pair (string %symbol) (pair (string %name) (pair (nat %decimals) (map %extras string string))))))) (list %token_ids nat)))) (or (pair %total_supply (contract %callback (list (pair (nat %token_id) (nat %total_supply)))) (list %token_ids nat)) (or (list %transfer (pair (address %from_) (pair (address %to_) (pair (nat %token_id) (nat %amount))))) (list %update_operators (or (pair %add_operator (address %operator) (address %owner)) (pair %remove_operator (address %operator) (address %owner)))))))) ; + storage (pair (pair (address %administrator) (pair (nat %all_tokens) (big_map %ledger (pair address nat) nat))) (pair (pair (unit %version_20200519_tzip_66736ea_mutran_contract) (big_map %operators (pair (address %owner) (address %operator)) unit)) (pair (bool %paused) (big_map %tokens nat (pair (pair %metadata (nat %token_id) (pair (string %symbol) (pair (string %name) (pair (nat %decimals) (map %extras string string))))) (nat %total_supply)))))) ; + code { DUP ; CDR ; SWAP ; CAR ; IF_LEFT { IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; { CDR ; CDR ; CAR } ; IF { PUSH string "WrongCondition: ~ self.data.paused" ; FAILWITH } {} ; PUSH (list (pair (nat %balance) (pair %request (address %owner) (nat %token_id)))) {} ; SWAP ; DUP ; DUG 2 ; CDR ; ITER { DUP ; DUG 2 ; CDR ; DIG 2 ; DUP ; DUG 3 ; CAR ; PAIR %owner %token_id ; DIG 4 ; DUP ; DUG 5 ; { CAR ; CDR ; CDR } ; DIG 3 ; DUP ; DUG 4 ; CDR ; DIG 4 ; CAR ; PAIR ; GET ; { IF_NONE { PUSH string "Get-item:161" ; FAILWITH } {} } ; PAIR %balance %request ; CONS } ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CAR ; PUSH mutez 0 ; DIG 3 ; DUP ; DUG 4 ; NIL (pair (nat %balance) (pair %request (address %owner) (nat %token_id))) ; SWAP ; ITER { CONS } ; DIG 4 ; DROP ; DIG 4 ; DROP ; TRANSFER_TOKENS ; CONS } { DUP ; CAR ; NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; DUP ; DUG 4 ; CDR ; DIG 5 ; DUP ; DUG 6 ; { CDR ; CAR ; CDR } ; DIG 5 ; DUP ; DUG 6 ; { CDR ; CAR } ; DIG 6 ; { CDR ; CDR } ; PAIR %owner %operator ; MEM ; PAIR %is_operator %operator ; TRANSFER_TOKENS ; CONS } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; { CAR ; CAR } ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: sp.sender == self.data.administrator" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; DUP ; CDR ; SWAP ; CAR ; DUP ; CAR ; SWAP ; { CDR ; CDR } ; DIG 4 ; DUP ; DUG 5 ; { CAR ; CDR ; CAR } ; DUP ; PUSH nat 1 ; DIG 6 ; DUP ; DUG 7 ; { CDR ; CDR } ; ADD ; DUP ; DUG 2 ; COMPARE ; LE ; IF { DROP } { SWAP ; DROP } ; DIG 5 ; DROP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; SWAP ; DUP ; DUG 2 ; { CAR ; CDR ; CDR } ; SWAP ; DUP ; DUG 2 ; { CDR ; CDR } ; DIG 2 ; DUP ; DUG 3 ; { CAR ; CAR } ; PAIR ; MEM ; IF { SWAP ; DUP ; DUG 2 ; DUP ; CDR ; SWAP ; CAR ; DUP ; CAR ; SWAP ; CDR ; DUP ; CAR ; SWAP ; CDR ; DUP ; DIG 5 ; DUP ; DUG 6 ; { CDR ; CDR } ; DIG 6 ; DUP ; DUG 7 ; { CAR ; CAR } ; PAIR ; DUP ; DUG 2 ; GET ; { IF_NONE { PUSH string "set_in_top-any" ; FAILWITH } {} } ; DROP ; DIG 5 ; DUP ; DUG 6 ; { CAR ; CDR } ; DIG 7 ; { CAR ; CDR ; CDR } ; DIG 7 ; DUP ; DUG 8 ; { CDR ; CDR } ; DIG 8 ; DUP ; DUG 9 ; { CAR ; CAR } ; PAIR ; GET ; { IF_NONE { PUSH string "Get-item:161" ; FAILWITH } {} } ; ADD ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } { SWAP ; DUP ; CDR ; SWAP ; CAR ; DUP ; CAR ; SWAP ; CDR ; DUP ; CAR ; SWAP ; CDR ; DIG 4 ; DUP ; DUG 5 ; { CAR ; CDR } ; SOME ; DIG 5 ; DUP ; DUG 6 ; { CDR ; CDR } ; DIG 6 ; DUP ; DUG 7 ; { CAR ; CAR } ; PAIR ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } ; SWAP ; DUP ; DUG 2 ; { CDR ; CDR ; CDR } ; SWAP ; DUP ; DUG 2 ; { CDR ; CDR } ; MEM ; IF { SWAP ; DUP ; DUG 2 ; DUP ; CAR ; SWAP ; CDR ; DUP ; CAR ; SWAP ; CDR ; DUP ; CAR ; SWAP ; CDR ; DUP ; DIG 5 ; DUP ; DUG 6 ; { CDR ; CDR } ; DUP ; DUG 2 ; GET ; { IF_NONE { PUSH string "set_in_top-any" ; FAILWITH } {} } ; CAR ; DIG 6 ; DUP ; DUG 7 ; { CAR ; CDR } ; DIG 8 ; { CDR ; CDR ; CDR } ; DIG 8 ; DUP ; DUG 9 ; { CDR ; CDR } ; GET ; { IF_NONE { PUSH string "Get-item:333" ; FAILWITH } {} } ; CDR ; ADD ; SWAP ; PAIR ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP } { SWAP ; DUP ; CAR ; SWAP ; CDR ; DUP ; CAR ; SWAP ; CDR ; DUP ; CAR ; SWAP ; CDR ; DIG 4 ; DUP ; DUG 5 ; { CAR ; CDR } ; PUSH (pair (string %name) (pair (nat %decimals) (map %extras string string))) (Pair "" (Pair 0 {})) ; DIG 6 ; DUP ; DUG 7 ; { CDR ; CAR } ; PAIR %symbol ; DIG 6 ; DUP ; DUG 7 ; { CDR ; CDR } ; PAIR %token_id ; PAIR %metadata %total_supply ; SOME ; DIG 5 ; DUP ; DUG 6 ; { CDR ; CDR } ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP } ; DROP ; NIL operation } { IF_LEFT { SWAP ; DUP ; DUG 2 ; { CAR ; CAR } ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: sp.sender == self.data.administrator" ; FAILWITH } ; DUP ; CDR ; CONTRACT unit ; NIL operation ; SWAP ; { IF_NONE { PUSH unit Unit ; FAILWITH } {} } ; DIG 2 ; CAR ; PUSH unit Unit ; TRANSFER_TOKENS ; CONS } { NIL operation ; SWAP ; PUSH mutez 0 ; PUSH (pair (pair (option %custom (pair (option %config_api address) (string %tag))) (or %operator (unit %no_transfer) (or (unit %owner_or_operator_transfer) (unit %owner_transfer)))) (pair (or %receiver (unit %optional_owner_hook) (or (unit %owner_no_op) (unit %required_owner_hook))) (or %sender (unit %optional_owner_hook) (or (unit %owner_no_op) (unit %required_owner_hook))))) (Pair (Pair None (Right (Left Unit))) (Pair (Right (Left Unit)) (Right (Left Unit)))) ; TRANSFER_TOKENS ; CONS } } } } { IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; { CAR ; CAR } ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: sp.sender == self.data.administrator" ; FAILWITH } ; SWAP ; DUP ; CDR ; SWAP ; { CAR ; CDR } ; DIG 2 ; PAIR ; PAIR ; NIL operation } { IF_LEFT { SWAP ; DUP ; DUG 2 ; { CAR ; CAR } ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: sp.sender == self.data.administrator" ; FAILWITH } ; SWAP ; DUP ; CAR ; SWAP ; CDR ; DUP ; CAR ; SWAP ; { CDR ; CDR } ; DIG 3 ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; NIL operation } { SWAP ; DUP ; DUG 2 ; { CDR ; CDR ; CAR } ; IF { PUSH string "WrongCondition: ~ self.data.paused" ; FAILWITH } {} ; PUSH (list (pair (nat %token_id) (pair (string %symbol) (pair (string %name) (pair (nat %decimals) (map %extras string string)))))) {} ; SWAP ; DUP ; DUG 2 ; CDR ; ITER { SWAP ; DIG 3 ; DUP ; DUG 4 ; { CDR ; CDR ; CDR } ; DIG 2 ; GET ; { IF_NONE { PUSH string "Get-item:429" ; FAILWITH } {} } ; CAR ; CONS } ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CAR ; PUSH mutez 0 ; DIG 3 ; DUP ; DUG 4 ; NIL (pair (nat %token_id) (pair (string %symbol) (pair (string %name) (pair (nat %decimals) (map %extras string string))))) ; SWAP ; ITER { CONS } ; DIG 4 ; DROP ; DIG 4 ; DROP ; TRANSFER_TOKENS ; CONS } } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; { CDR ; CDR ; CAR } ; IF { PUSH string "WrongCondition: ~ self.data.paused" ; FAILWITH } {} ; PUSH (list (pair (nat %token_id) (nat %total_supply))) {} ; SWAP ; DUP ; DUG 2 ; CDR ; ITER { SWAP ; DIG 3 ; DUP ; DUG 4 ; { CDR ; CDR ; CDR } ; DIG 2 ; DUP ; DUG 3 ; GET ; { IF_NONE { PUSH string "Get-item:415" ; FAILWITH } {} } ; CDR ; DIG 2 ; PAIR %token_id %total_supply ; CONS } ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CAR ; PUSH mutez 0 ; DIG 3 ; DUP ; DUG 4 ; NIL (pair (nat %token_id) (nat %total_supply)) ; SWAP ; ITER { CONS } ; DIG 4 ; DROP ; DIG 4 ; DROP ; TRANSFER_TOKENS ; CONS } { IF_LEFT { SWAP ; DUP ; DUG 2 ; { CDR ; CDR ; CAR } ; IF { PUSH string "WrongCondition: ~ self.data.paused" ; FAILWITH } {} ; DUP ; { DUP ; DROP } ; NIL operation } } } ; PAIR } } ;`; + const storage = `(Pair (Pair "${administrator}" ( Pair 0 { } ) ) (Pair (Pair Unit { } ) ( Pair ${pause ? 'True' : 'False'} { } ) ) )`; + + const nodeResult = await TezosNodeWriter.sendContractOriginationOperation(server, signer, keystore, 0, undefined, fee, freight, gas, contract, storage, TezosTypes.TezosParameterFormat.Michelson); + return clearRPCOperationGroupHash(nodeResult['operationGroupID']); + } + + export async function getSimpleStorage(server: string, address: string): Promise { + return null; + } + + export async function getAccountBalance(server: string, mapid: number, account: string): Promise { + return 0; + } + + function clearRPCOperationGroupHash(hash: string) { + return hash.replace(/\"/g, '').replace(/\n/, ''); + } +} \ No newline at end of file diff --git a/ConseilJS-core/src/chain/tezos/contracts/tzip12/SingleAssetTokenHelper.ts b/ConseilJS-core/src/chain/tezos/contracts/tzip12/SingleAssetTokenHelper.ts new file mode 100644 index 00000000..0848cc76 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/contracts/tzip12/SingleAssetTokenHelper.ts @@ -0,0 +1,70 @@ +import * as blakejs from 'blakejs'; +import { JSONPath } from 'jsonpath-plus'; + +import { TezosLanguageUtil } from '../../TezosLanguageUtil'; +import { TezosMessageUtils } from '../../TezosMessageUtil'; +import { TezosNodeReader } from '../../TezosNodeReader'; +import { TezosNodeWriter } from '../../TezosNodeWriter'; +import { KeyStore, Signer } from '../../../../types/ExternalInterfaces'; +import * as TezosTypes from '../../../../types/tezos/TezosChainTypes'; + +/** + * Interface for the FA2.0 contract implementation outlined here: https://gitlab.com/tzip/tzip/-/tree/master/proposals/tzip-12/tzip-12.md. + * + * Compatible with the contract as of May 2, 2020 from https://github.com/tqtezos/smart-contracts/blob/fa2-single-e/single_asset/out/fa2_single_asset.tz + */ +export namespace SingleAssetTokenHelper { + /** + * Gets the contract code at the specified address at the head block and compares it to the known hash of the code. This function processes Micheline format contracts. + * + * + * @param server Destination Tezos node. + * @param address Contract address to query. + */ + export async function verifyDestination(server: string, address: string): Promise { + const contract = await TezosNodeReader.getAccountForBlock(server, 'head', address); + + if (!!!contract.script) { throw new Error(`No code found at ${address}`); } + + const k = Buffer.from(blakejs.blake2s(JSON.stringify(contract.script.code), null, 16)).toString('hex'); + + if (k !== '0e3e137841a959521324b4ce20ca2df7') { throw new Error(`Contract does not match the expected code hash: ${k}, '0e3e137841a959521324b4ce20ca2df7'`); } + + return true; + } + + /** + * In contrast to verifyDestination, this function uses compares Michelson hashes. + * + * @param script + */ + export function verifyScript(script: string): boolean { + const k = Buffer.from(blakejs.blake2s(TezosLanguageUtil.preProcessMichelsonScript(script).join('\n'), null, 16)).toString('hex'); + + if (k !== 'b77ada691b1d630622bea243696c84d7') { throw new Error(`Contract does not match the expected code hash: ${k}, 'b77ada691b1d630622bea243696c84d7'`); } + + return true; + } + + export async function deployContract(server: string, signer: Signer, keystore: KeyStore, fee: number, administrator: string, name: string, symbol: string, tokenid: number, scale: number, pause: boolean = true, supply: number = 0, gas: number = 400_000, freight: number = 8_000): Promise { + const contract = `{ parameter (or (or (or %admin (bool %pause) (address %set_admin)) (or %assets (or (or (pair %balance_of (contract %callback (list (pair (nat %balance) (pair %request (address %owner) (nat %token_id))))) (list %requests (pair (address %owner) (nat %token_id)))) (pair %is_operator (contract %callback (pair (bool %is_operator) (pair %operator (pair (address %operator) (address %owner)) (or %tokens (unit %all_tokens) (set %some_tokens nat))))) (pair %operator (pair (address %operator) (address %owner)) (or %tokens (unit %all_tokens) (set %some_tokens nat))))) (or (contract %permissions_descriptor (pair (pair (option %custom (pair (option %config_api address) (string %tag))) (or %operator (or (unit %no_transfer) (unit %owner_or_operator_transfer)) (unit %owner_transfer))) (pair (or %receiver (or (unit %optional_owner_hook) (unit %owner_no_op)) (unit %required_owner_hook)) (or %sender (or (unit %optional_owner_hook) (unit %owner_no_op)) (unit %required_owner_hook))))) (pair %token_metadata (contract %callback (list (pair (pair (pair (nat %decimals) (map %extras string string)) (pair (string %name) (string %symbol))) (nat %token_id)))) (list %token_ids nat)))) (or (or (pair %total_supply (contract %callback (list (pair (nat %token_id) (nat %total_supply)))) (list %token_ids nat)) (list %transfer (pair (pair (nat %amount) (address %from_)) (pair (address %to_) (nat %token_id))))) (list %update_operators (or (pair %add_operator (pair (address %operator) (address %owner)) (or %tokens (unit %all_tokens) (set %some_tokens nat))) (pair %remove_operator (pair (address %operator) (address %owner)) (or %tokens (unit %all_tokens) (set %some_tokens nat)))))))) (or %tokens (list %burn_tokens (pair (nat %amount) (address %owner))) (list %mint_tokens (pair (nat %amount) (address %owner))))) ; + storage (pair (pair %admin (address %admin) (bool %paused)) (pair %assets (pair (pair (big_map %ledger address nat) (pair %metadata (pair (pair (nat %decimals) (map %extras string string)) (pair (string %name) (string %symbol))) (nat %token_id))) (pair (big_map %operators (pair address address) bool) (pair %permissions_descriptor (pair (option %custom (pair (option %config_api address) (string %tag))) (or %operator (or (unit %no_transfer) (unit %owner_or_operator_transfer)) (unit %owner_transfer))) (pair (or %receiver (or (unit %optional_owner_hook) (unit %owner_no_op)) (unit %required_owner_hook)) (or %sender (or (unit %optional_owner_hook) (unit %owner_no_op)) (unit %required_owner_hook)))))) (nat %total_supply))) ; + code { LAMBDA (pair address (big_map address nat)) nat { DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH nat 0 } { DUP ; DIP { DROP } } ; DIP { DROP } } ; DUP ; LAMBDA (pair (lambda (pair address (big_map address nat)) nat) (pair (list (pair (pair (nat %amount) (option %from_ address)) (pair (option %to_ address) (nat %token_id)))) (big_map address nat))) (big_map address nat) { DUP ; CAR ; SWAP ; CDR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; ITER { SWAP ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DUP ; CAR ; CDR ; IF_NONE { DIG 1 ; DUP ; DUG 2 } { DIG 2 ; DUP ; DUG 3 ; DIG 2 ; DUP ; DUG 3 ; CAR ; CAR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DUP ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DUP ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DIG 9 ; DUP ; DUG 10 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; CAR ; CDR ; DIG 1 ; DUP ; DUG 2 ; SUB ; ISNAT ; IF_NONE { PUSH string "INSUFFICIENT_BALANCE" ; FAILWITH } { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; COMPARE ; EQ ; IF { DIG 2 ; DUP ; DUG 3 ; DIG 4 ; DUP ; DUG 5 ; NONE nat ; SWAP ; UPDATE } { DIG 2 ; DUP ; DUG 3 ; DIG 1 ; DUP ; DUG 2 ; SOME ; DIG 5 ; DUP ; DUG 6 ; UPDATE } ; DIP { DROP } } ; DIP { DROP 5 } } ; DIG 1 ; DUP ; DUG 2 ; CDR ; CAR ; IF_NONE { DUP } { DIG 1 ; DUP ; DUG 2 ; DIG 3 ; DUP ; DUG 4 ; CAR ; CAR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DUP ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DUP ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DIG 10 ; DUP ; DUG 11 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; CAR ; CDR ; DIG 1 ; DUP ; DUG 2 ; ADD ; DIG 2 ; DUP ; DUG 3 ; DIG 1 ; DUP ; DUG 2 ; SOME ; DIG 5 ; DUP ; DUG 6 ; UPDATE ; DIP { DROP 6 } } ; DUP ; DIP { DROP 5 } } ; DIP { DROP 2 } } ; SWAP ; APPLY ; LAMBDA (or (unit %all_tokens) (set %some_tokens nat)) unit { DUP ; IF_LEFT { DROP ; UNIT } { PUSH nat 1 ; DIG 1 ; DUP ; DUG 2 ; SIZE ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } { DUP ; PUSH nat 0 ; MEM ; IF { UNIT } { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } } ; DIP { DROP } } ; DIP { DROP } } ; LAMBDA (list nat) unit { DUP ; IF_CONS { PUSH nat 0 ; DIG 2 ; DUP ; DUG 3 ; SIZE ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; COMPARE ; EQ ; IF { UNIT } { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } } ; DIP { DROP 2 } } { PUSH string "NO_TOKEN_ID" ; FAILWITH } ; DIP { DROP } } ; LAMBDA (list (pair (nat %amount) (address %owner))) nat { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; ITER { SWAP ; PAIR ; DUP ; CDR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CAR ; ADD ; DIP { DROP } } ; DIP { DROP } } ; LAMBDA (pair (address %admin) (bool %paused)) unit { DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_AN_ADMIN" ; FAILWITH } { UNIT } ; DIP { DROP } } ; DIG 6 ; DUP ; DUG 7 ; CDR ; DIG 7 ; DUP ; DUG 8 ; CAR ; IF_LEFT { DUP ; IF_LEFT { DIG 2 ; DUP ; DUG 3 ; CAR ; DIG 4 ; DUP ; DUG 5 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; CAR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; IF_LEFT { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; SWAP ; CAR ; PAIR ; DIP { DROP } ; NIL operation ; PAIR ; DIP { DROP } } { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; SWAP ; CDR ; SWAP ; PAIR ; DIP { DROP } ; NIL operation ; PAIR ; DIP { DROP } } ; DIP { DROP 2 } ; DIG 4 ; DUP ; DUG 5 ; DIG 1 ; DUP ; DUG 2 ; CDR ; SWAP ; CDR ; SWAP ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CAR ; PAIR ; DIP { DROP 3 } } { DIG 2 ; DUP ; DUG 3 ; CAR ; CDR ; IF { PUSH string "PAUSED" ; FAILWITH } { UNIT } ; DIG 3 ; DUP ; DUG 4 ; CDR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; IF_LEFT { DUP ; IF_LEFT { DUP ; IF_LEFT { DIG 3 ; DUP ; DUG 4 ; CAR ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CAR ; DUP ; CDR ; MAP { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; CDR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } { DIG 2 ; DUP ; DUG 3 ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; PAIR ; DIG 18 ; DUP ; DUG 19 ; SWAP ; EXEC ; DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DIP { DROP } } ; DIP { DROP } } ; DIG 1 ; DUP ; DUG 2 ; CAR ; PUSH mutez 0 ; DIG 2 ; DUP ; DUG 3 ; TRANSFER_TOKENS ; DIP { DROP 3 } ; DIG 4 ; DUP ; DUG 5 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 2 } } { DUP ; CDR ; CDR ; DIG 13 ; DUP ; DUG 14 ; SWAP ; EXEC ; DIG 1 ; DUP ; DUG 2 ; CAR ; PUSH mutez 0 ; DIG 3 ; DUP ; DUG 4 ; CDR ; DIG 7 ; DUP ; DUG 8 ; CAR ; CDR ; CAR ; DIG 5 ; DUP ; DUG 6 ; CDR ; CAR ; CAR ; DIG 6 ; DUP ; DUG 7 ; CDR ; CAR ; CDR ; PAIR ; GET ; IF_NONE { PUSH bool False } { DUP ; DIP { DROP } } ; PAIR ; TRANSFER_TOKENS ; DIG 5 ; DUP ; DUG 6 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 3 } } ; DIP { DROP } } { DUP ; IF_LEFT { DUP ; PUSH mutez 0 ; DIG 5 ; DUP ; DUG 6 ; CAR ; CDR ; CDR ; TRANSFER_TOKENS ; DIG 4 ; DUP ; DUG 5 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 2 } } { DUP ; CDR ; DIG 12 ; DUP ; DUG 13 ; SWAP ; EXEC ; DIG 1 ; DUP ; DUG 2 ; CAR ; PUSH mutez 0 ; NIL (pair (pair (pair (nat %decimals) (map %extras string string)) (pair (string %name) (string %symbol))) (nat %token_id)) ; DIG 7 ; DUP ; DUG 8 ; CAR ; CAR ; CDR ; CONS ; TRANSFER_TOKENS ; DIG 5 ; DUP ; DUG 6 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 3 } } ; DIP { DROP } } ; DIP { DROP } } { DUP ; IF_LEFT { DUP ; IF_LEFT { DUP ; CDR ; DIG 12 ; DUP ; DUG 13 ; SWAP ; EXEC ; DIG 1 ; DUP ; DUG 2 ; CAR ; PUSH mutez 0 ; NIL (pair (nat %token_id) (nat %total_supply)) ; DIG 7 ; DUP ; DUG 8 ; CDR ; PUSH nat 0 ; PAIR ; CONS ; TRANSFER_TOKENS ; DIG 5 ; DUP ; DUG 6 ; NIL operation ; DIG 2 ; DUP ; DUG 3 ; CONS ; PAIR ; DIP { DROP 3 } } { DUP ; MAP { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; CDR ; CDR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_UNDEFINED" ; FAILWITH } { DUP ; CDR ; CDR ; DIG 1 ; DUP ; DUG 2 ; CDR ; CAR ; SOME ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CAR ; CDR ; SOME ; DIG 2 ; DUP ; DUG 3 ; CAR ; CAR ; PAIR ; PAIR } ; DIP { DROP } } ; DIG 4 ; DUP ; DUG 5 ; CAR ; CDR ; CAR ; DIG 5 ; DUP ; DUG 6 ; CAR ; CDR ; CDR ; CAR ; CDR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DUP ; CAR ; CDR ; IF_LEFT { DUP ; IF_LEFT { PUSH string "TX_DENIED" ; FAILWITH } { PUSH bool True ; PUSH bool True ; PAIR ; DIP { DROP } } ; DIP { DROP } } { PUSH bool False ; PUSH bool True ; PAIR ; DIP { DROP } } ; SENDER ; EMPTY_SET address ; DIG 3 ; DUP ; DUG 4 ; CAR ; CAR ; ITER { SWAP ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; CAR ; CDR ; IF_NONE { DUP } { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PUSH bool True ; SWAP ; UPDATE ; DIP { DROP } } ; DIP { DROP 2 } } ; DUP ; ITER { DIG 2 ; DUP ; DUG 3 ; DIG 1 ; DUP ; DUG 2 ; COMPARE ; EQ ; DIG 4 ; DUP ; DUG 5 ; CAR ; AND ; IF { UNIT } { DIG 3 ; DUP ; DUG 4 ; CDR ; NOT ; IF { PUSH string "NOT_OWNER" ; FAILWITH } { DIG 4 ; DUP ; DUG 5 ; CDR ; DIG 3 ; DUP ; DUG 4 ; DIG 2 ; DUP ; DUG 3 ; PAIR ; GET ; IF_NONE { PUSH string "NOT_OPERATOR" ; FAILWITH } { DROP ; UNIT } } } ; DROP 2 } ; DROP 4 ; PUSH unit Unit ; DIG 5 ; DUP ; DUG 6 ; CAR ; CAR ; CAR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DIG 16 ; DUP ; DUG 17 ; SWAP ; EXEC ; DIG 6 ; DUP ; DUG 7 ; DIG 1 ; DUP ; DUG 2 ; DIP { DUP ; CDR ; SWAP ; CAR ; DUP ; CDR ; SWAP ; CAR ; CDR } ; PAIR ; PAIR ; PAIR ; NIL operation ; PAIR ; DIP { DROP 4 } } ; DIP { DROP } } { DIG 2 ; DUP ; DUG 3 ; CAR ; CDR ; CAR ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; ITER { SWAP ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; IF_LEFT { DUP ; CDR ; DIG 16 ; DUP ; DUG 17 ; SWAP ; EXEC ; DIG 2 ; DUP ; DUG 3 ; PUSH bool True ; SOME ; DIG 3 ; DUP ; DUG 4 ; CAR ; CAR ; DIG 4 ; DUP ; DUG 5 ; CAR ; CDR ; PAIR ; UPDATE ; DIP { DROP 2 } } { DUP ; CDR ; DIG 16 ; DUP ; DUG 17 ; SWAP ; EXEC ; DIG 2 ; DUP ; DUG 3 ; DIG 2 ; DUP ; DUG 3 ; CAR ; CAR ; DIG 3 ; DUP ; DUG 4 ; CAR ; CDR ; PAIR ; NONE bool ; SWAP ; UPDATE ; DIP { DROP 2 } } ; DIP { DROP 2 } } ; DIP { DROP } ; DIG 3 ; DUP ; DUG 4 ; DIG 1 ; DUP ; DUG 2 ; DIP { DUP ; CDR ; SWAP ; CAR ; DUP ; CAR ; SWAP ; CDR ; CDR } ; PAIR ; SWAP ; PAIR ; PAIR ; NIL operation ; PAIR ; DIP { DROP 2 } } ; DIP { DROP } } ; DIP { DROP 2 } ; DIG 4 ; DUP ; DUG 5 ; DIG 1 ; DUP ; DUG 2 ; CDR ; SWAP ; CAR ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CAR ; PAIR ; DIP { DROP 3 } } ; DIP { DROP } } { DIG 1 ; DUP ; DUG 2 ; CAR ; DIG 3 ; DUP ; DUG 4 ; SWAP ; EXEC ; DIG 2 ; DUP ; DUG 3 ; CDR ; DIG 2 ; DUP ; DUG 3 ; PAIR ; DUP ; CDR ; DIG 1 ; DUP ; DUG 2 ; CAR ; IF_LEFT { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DIG 1 ; DUP ; DUG 2 ; MAP { PUSH nat 0 ; NONE address ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CDR ; SOME ; DIG 2 ; DUP ; DUG 3 ; CAR ; PAIR ; PAIR ; DIP { DROP } } ; SENDER ; SELF ; ADDRESS ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DIP { DROP } ; DIG 1 ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CAR ; CAR ; PAIR ; DIG 15 ; DUP ; DUG 16 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; DIG 13 ; DUP ; DUG 14 ; SWAP ; EXEC ; DUP ; DIG 4 ; DUP ; DUG 5 ; CDR ; SUB ; ISNAT ; DUP ; IF_NONE { PUSH string "INSUFFICIENT_BALANCE" ; FAILWITH } { DUP ; DIP { DROP } } ; DIG 5 ; DUP ; DUG 6 ; DIG 4 ; DUP ; DUG 5 ; DIP { DUP ; CDR ; SWAP ; CAR ; DUP ; CDR ; SWAP ; CAR ; CDR } ; PAIR ; PAIR ; PAIR ; DIG 1 ; DUP ; DUG 2 ; SWAP ; CAR ; PAIR ; NIL operation ; PAIR ; DIP { DROP 9 } } { DIG 1 ; DUP ; DUG 2 ; DIG 1 ; DUP ; DUG 2 ; PAIR ; DUP ; CAR ; DIG 1 ; DUP ; DUG 2 ; CDR ; DIG 1 ; DUP ; DUG 2 ; MAP { PUSH nat 0 ; DIG 1 ; DUP ; DUG 2 ; CDR ; SOME ; PAIR ; NONE address ; DIG 2 ; DUP ; DUG 3 ; CAR ; PAIR ; PAIR ; DIP { DROP } } ; SENDER ; SELF ; ADDRESS ; DIG 2 ; DUP ; DUG 3 ; PAIR ; PAIR ; DIP { DROP } ; DIG 1 ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; DIG 1 ; DUP ; DUG 2 ; CAR ; CAR ; PAIR ; DIG 15 ; DUP ; DUG 16 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; DIG 13 ; DUP ; DUG 14 ; SWAP ; EXEC ; DIG 3 ; DUP ; DUG 4 ; DIG 2 ; DUP ; DUG 3 ; DIP { DUP ; CDR ; SWAP ; CAR ; DUP ; CDR ; SWAP ; CAR ; CDR } ; PAIR ; PAIR ; PAIR ; DIG 1 ; DUP ; DUG 2 ; DIG 5 ; DUP ; DUG 6 ; CDR ; ADD ; SWAP ; CAR ; PAIR ; DUP ; NIL operation ; PAIR ; DIP { DROP 8 } } ; DIP { DROP 2 } ; DIG 3 ; DUP ; DUG 4 ; DIG 1 ; DUP ; DUG 2 ; CDR ; SWAP ; CAR ; PAIR ; DIG 1 ; DUP ; DUG 2 ; CAR ; PAIR ; DIP { DROP 3 } } ; DIP { DROP 8 } } ;`; + const storage = `(Pair (Pair "${administrator}" ${pause ? 'True' : 'False'}) (Pair (Pair (Pair { } (Pair (Pair (Pair ${scale} { }) (Pair "${name}" "${symbol}")) ${tokenid})) (Pair { } (Pair (Pair None (Right Unit)) (Pair (Right Unit) (Right Unit))))) ${supply}))`; + + const nodeResult = await TezosNodeWriter.sendContractOriginationOperation(server, signer, keystore, 0, undefined, fee, freight, gas, contract, storage, TezosTypes.TezosParameterFormat.Michelson); + return clearRPCOperationGroupHash(nodeResult['operationGroupID']); + } + + export async function getSimpleStorage(server: string, address: string): Promise { + return null; + } + + export async function getAccountBalance(server: string, mapid: number, account: string): Promise { + return 0; + } + + function clearRPCOperationGroupHash(hash: string) { + return hash.replace(/\"/g, '').replace(/\n/, ''); + } +} \ No newline at end of file diff --git a/ConseilJS-core/src/chain/tezos/lexer/EntryPointTemplate.ts b/ConseilJS-core/src/chain/tezos/lexer/EntryPointTemplate.ts new file mode 100644 index 00000000..fbb98d78 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/lexer/EntryPointTemplate.ts @@ -0,0 +1,465 @@ +// Generated automatically by nearley, version 2.19.1 +// http://github.com/Hardmath123/nearley +// Bypasses TS6133. Allow declared but unused functions. +// @ts-ignore +function id(d: any[]): any { return d[0]; } +declare var parameter: any; +declare var semicolon: any; +declare var lparen: any; +declare var rparen: any; +declare var or: any; +declare var annot: any; +declare var pair: any; +declare var singleArgData: any; +declare var doubleArgData: any; +declare var data: any; + + const moo = require("moo"); + + const lexer = moo.compile({ + wspace: /[ \t]+/, + lparen: '(', + rparen: ')', + annot: /:[^ );]+|%[^ );]+/, + parameter: 'parameter', + or: 'or', + pair: 'pair', + data: ['bytes', 'int', 'nat', 'bool', 'string', 'timestamp', 'signature', 'key', 'key_hash', 'mutez', 'address', 'unit', 'operation', 'chain_id'], + singleArgData: ['option', 'list', 'contract', 'set'], + doubleArgData: ['lambda', 'map', 'big_map'], + semicolon: ';' + }); + + + import { Parameter, EntryPoint } from '../../../types/tezos/ContractIntrospectionTypes'; + + const breakParameter = (d: any): EntryPoint[] => { return d[2]; } + + const stripParen = (d: any): EntryPoint[] => d[2]; + + // + + const branchOrWithTwoAnnot = (d: any): EntryPoint[] => { + const annotA: string = d[2]; + const annotB: string = d[4]; + const leftEntryPoints: EntryPoint[] = d[6]; + const rightEntryPoints: EntryPoint[] = d[8]; + const branchedEntryPoints: EntryPoint[] = []; + + for (const leftEntryPoint of leftEntryPoints) { + const branchedEntryPoint: EntryPoint = { + name: leftEntryPoint.name, // TODO + parameters: leftEntryPoint.parameters, + structure: '(Left ' + leftEntryPoint.structure + ')', + generateInvocationString: leftEntryPoint.generateInvocationString, + generateInvocationPair: leftEntryPoint.generateInvocationPair, + generateSampleInvocation: leftEntryPoint.generateSampleInvocation + } + branchedEntryPoints.push(branchedEntryPoint); + } + + for (const rightEntryPoint of rightEntryPoints) { + const branchedEntryPoint: EntryPoint = { + name: rightEntryPoint.name, // TODO + parameters: rightEntryPoint.parameters, + structure: '(Right ' + rightEntryPoint.structure + ')', + generateInvocationString: rightEntryPoint.generateInvocationString, + generateInvocationPair: rightEntryPoint.generateInvocationPair, + generateSampleInvocation: rightEntryPoint.generateSampleInvocation + } + branchedEntryPoints.push(branchedEntryPoint); + } + + return branchedEntryPoints; + } + + const branchOrWithAnnot = (d: any): EntryPoint[] => { + const annot = d[2]; + const leftEntryPoints: EntryPoint[] = d[4]; + const rightEntryPoints: EntryPoint[] = d[6]; + const branchedEntryPoints: EntryPoint[] = []; + + for (const leftEntryPoint of leftEntryPoints) { + const branchedEntryPoint: EntryPoint = { + name: `${annot}.${leftEntryPoint.name}`, // TODO + parameters: leftEntryPoint.parameters, + structure: '(Left ' + leftEntryPoint.structure + ')', + generateInvocationString: leftEntryPoint.generateInvocationString, + generateInvocationPair: leftEntryPoint.generateInvocationPair, + generateSampleInvocation: leftEntryPoint.generateSampleInvocation + } + branchedEntryPoints.push(branchedEntryPoint); + } + + for (const rightEntryPoint of rightEntryPoints) { + const branchedEntryPoint: EntryPoint = { + name: `${annot}.${rightEntryPoint.name}`, // TODO + parameters: rightEntryPoint.parameters, + structure: '(Right ' + rightEntryPoint.structure + ')', + generateInvocationString: rightEntryPoint.generateInvocationString, + generateInvocationPair: rightEntryPoint.generateInvocationPair, + generateSampleInvocation: rightEntryPoint.generateSampleInvocation + } + branchedEntryPoints.push(branchedEntryPoint); + } + + return branchedEntryPoints; + } + + const branchOr = (d: any): EntryPoint[] => { + const leftEntryPoints: EntryPoint[] = d[2]; + const rightEntryPoints: EntryPoint[] = d[4]; + const branchedEntryPoints: EntryPoint[] = []; + + for (const leftEntryPoint of leftEntryPoints) { + if (leftEntryPoint.parameters.length === 1 && leftEntryPoint.parameters[0].name === leftEntryPoint.name) { + leftEntryPoint.parameters[0].name = undefined; + } + branchedEntryPoints.push({...leftEntryPoint, structure: `(Left ${leftEntryPoint.structure})`}); + } + + for (const rightEntryPoint of rightEntryPoints) { + if (rightEntryPoint.parameters.length === 1 && rightEntryPoint.parameters[0].name === rightEntryPoint.name) { + rightEntryPoint.parameters[0].name = undefined; + } + branchedEntryPoints.push({...rightEntryPoint, structure: `(Right ${rightEntryPoint.structure})`}); + } + + return branchedEntryPoints; + } + + // + + const mergePairWithTwoAnnot = (d: any): EntryPoint[] => { + const annotA: string = d[2]; + const annotB: string = d[4]; + const firstEntryPoints: EntryPoint[] = d[6]; + const secondEntryPoints: EntryPoint[] = d[8]; + const pairedEntryPoints: EntryPoint[] = []; + + for (const firstEntryPoint of firstEntryPoints) { + for (const secondEntryPoint of secondEntryPoints) { + const pairedEntryPoint: EntryPoint = { + name: getTypeAnnotation(annotA.toString(), annotB.toString()), + parameters: firstEntryPoint.parameters.concat(secondEntryPoint.parameters), + structure: `(Pair ${firstEntryPoint.structure} ${secondEntryPoint.structure})`, + generateInvocationString: firstEntryPoint.generateInvocationString, + generateInvocationPair: firstEntryPoint.generateInvocationPair, + generateSampleInvocation: firstEntryPoint.generateSampleInvocation + } + pairedEntryPoints.push(pairedEntryPoint); + } + } + + return pairedEntryPoints; + } + + const mergePairWithAnnot = (d: any): EntryPoint[] => { + const annot: string = d[2]; + const firstEntryPoints: EntryPoint[] = d[4]; + const secondEntryPoints: EntryPoint[] = d[6]; + const pairedEntryPoints: EntryPoint[] = []; + + for (const firstEntryPoint of firstEntryPoints) { + for (const secondEntryPoint of secondEntryPoints) { + const name = getTypeAnnotation(annot.toString()) || getFieldAnnotation(annot.toString()); + const pairedEntryPoint: EntryPoint = { + name: name || undefined, + parameters: firstEntryPoint.parameters.concat(secondEntryPoint.parameters), + structure: `(Pair ${firstEntryPoint.structure} ${secondEntryPoint.structure})`, + generateInvocationString: firstEntryPoint.generateInvocationString, + generateInvocationPair: firstEntryPoint.generateInvocationPair, + generateSampleInvocation: firstEntryPoint.generateSampleInvocation // TODO + } + pairedEntryPoints.push(pairedEntryPoint); + } + } + + return pairedEntryPoints; + } + + const mergePair = (d: any): EntryPoint[] => { + const firstEntryPoints: EntryPoint[] = d[2]; + const secondEntryPoints: EntryPoint[] = d[4]; + const pairedEntryPoints: EntryPoint[] = []; + + for (const firstEntryPoint of firstEntryPoints) { + for (const secondEntryPoint of secondEntryPoints) { + const pairedEntryPoint: EntryPoint = { + name: undefined, + parameters: firstEntryPoint.parameters.concat(secondEntryPoint.parameters), + structure: `(Pair ${firstEntryPoint.structure} ${secondEntryPoint.structure})`, + generateInvocationString: firstEntryPoint.generateInvocationString, + generateInvocationPair: firstEntryPoint.generateInvocationPair, + generateSampleInvocation: firstEntryPoint.generateSampleInvocation // TODO + } + pairedEntryPoints.push(pairedEntryPoint); + } + } + + return pairedEntryPoints; + } + + // + + const recordSingleArgDataWithTwoAnnot = (d: any): EntryPoint[] => { + const singleArgData: string = d[0].toString(); + const annotA: string = d[2].toString(); + const annotB: string = d[4].toString(); + const entryPoints: EntryPoint[] = d[6]; + + entryPoints[0].name = getFieldAnnotation(annotA, annotB); + entryPoints[0].parameters[0].constituentType = entryPoints[0].parameters[0].type; + if (singleArgData === 'option') { entryPoints[0].parameters[0].optional = true; } + entryPoints[0].parameters[0].type = `${singleArgData} (${entryPoints[0].parameters[0].type})`; + entryPoints[0].structure = `(${entryPoints[0].structure})`; + + return entryPoints; + } + + const recordSingleArgDataWithAnnot = (d: any): EntryPoint[] => { + const singleArgData: string = d[0].toString(); + const annot: string = d[2].toString(); + const entryPoints: EntryPoint[] = d[4]; + + entryPoints[0].name = getFieldAnnotation(annot); + entryPoints[0].parameters[0].constituentType = entryPoints[0].parameters[0].type; + if (singleArgData === 'option') { entryPoints[0].parameters[0].optional = true; } + entryPoints[0].parameters[0].type = `${singleArgData} (${entryPoints[0].parameters[0].type})`; + entryPoints[0].structure = `(${entryPoints[0].structure})`; + + return entryPoints; + } + + const recordSingleArgData = (d: any): EntryPoint[] => { + const singleArgData: string = d[0].toString(); + const entryPoints: EntryPoint[] = d[2]; + + entryPoints[0].parameters[0].constituentType = entryPoints[0].parameters[0].type; + if (singleArgData === 'option') { entryPoints[0].parameters[0].optional = true; } + entryPoints[0].parameters[0].type = `${singleArgData} (${entryPoints[0].parameters[0].type})`; + entryPoints[0].structure = `(${entryPoints[0].structure})`; + + return entryPoints; + } + + // + + const recordDoubleArgDataWithTwoAnnot = (d: any): EntryPoint[] => { + const doubleArgData: string = d[0].toString(); + const annotA: string = d[2].toString(); + const annotB: string = d[4].toString(); + const firstEntryPoints: EntryPoint[] = d[6]; + const secondEntryPoints: EntryPoint[] = d[8]; + + firstEntryPoints[0].name = getFieldAnnotation(annotA, annotB); + firstEntryPoints[0].parameters[0].type = `${doubleArgData} (${firstEntryPoints[0].parameters[0].type}) (${secondEntryPoints[0].parameters[0].type})`; + firstEntryPoints[0].structure = `(${firstEntryPoints[0].structure})`; + + return firstEntryPoints; + } + + const recordDoubleArgDataWithAnnot = (d: any): EntryPoint[] => { + const doubleArgData: string = d[0].toString(); + const annot: string = d[2].toString(); + const firstEntryPoints: EntryPoint[] = d[4]; + const secondEntryPoints: EntryPoint[] = d[6]; + + firstEntryPoints[0].name = getFieldAnnotation(annot); + firstEntryPoints[0].parameters[0].type = `${doubleArgData} (${firstEntryPoints[0].parameters[0].type}) (${secondEntryPoints[0].parameters[0].type})`; + firstEntryPoints[0].structure = `(${firstEntryPoints[0].structure})`; + + return firstEntryPoints; + } + + const recordDoubleArgData = (d: any): EntryPoint[] => { + const doubleArgData: string = d[0].toString(); + const firstEntryPoints: EntryPoint[] = d[2]; + const secondEntryPoints: EntryPoint[] = d[4]; + + firstEntryPoints[0].parameters[0].type = `${doubleArgData} (${firstEntryPoints[0].parameters[0].type}) (${secondEntryPoints[0].parameters[0].type})`; + firstEntryPoints[0].structure = `(${firstEntryPoints[0].structure})`; + + return firstEntryPoints; + } + + // + + const recordData = (d: string[]): EntryPoint[] => { + let parameterName: string | undefined = undefined; + let entryPointName: string | undefined = undefined; + + if (d.length >= 3) { + const annot = d[2].toString(); + + if (annot.charAt(0) === '%') { + entryPointName = formatFieldAnnotation(annot); + } else { + parameterName = formatTypeAnnotation(annot); + } + } + + if (d.length === 5) { + const anotherAnnot = d[4].toString(); + + if (anotherAnnot.startsWith('%') && entryPointName === undefined) { + entryPointName = formatFieldAnnotation(anotherAnnot); + } + if (anotherAnnot.startsWith(':') && parameterName === undefined) { + parameterName = formatTypeAnnotation(anotherAnnot); + } + } + + const parameter: Parameter = { + name: parameterName || entryPointName, + type: d[0].toString() + }; + + const entryPoint: EntryPoint = { + name: entryPointName, + parameters: [parameter], + structure: '$PARAM', + generateInvocationString(...vars: any[]): string { // TODO: check double-quotes on string-like parameters; support for map type + if (this.parameters.length !== vars.length) { throw new Error(`Incorrect number of parameters provided; expected ${this.parameters.length}, got ${vars.length}`); } + let invocationParameter: string = this.structure; + for (let i = 0 ; i < this.parameters.length; i++) { + let val = vars[i]; + + if (this.parameters[i].type === 'unit') { val = 'Unit'; } + + if (this.parameters[i].type.startsWith('list')) { + if (!Array.isArray(val)) { throw new Error(`${JSON.stringify(this.parameters[i])} requires an array value`); } + val = `{${val.join('; ')}}`; + } + + if (this.parameters[i].optional && vars[i]) { + val = `Some ${val}`; + } else if (this.parameters[i].optional && !vars[i]) { + val = 'None'; + } + + invocationParameter = invocationParameter.replace('$PARAM', val); + } + return invocationParameter; + }, + generateInvocationPair(...vars: any[]): any { + let param = this.generateInvocationString(...vars); + + while (param.startsWith('(Left ') || param.startsWith('(Right ')) { + if (param.startsWith('(Left ')) { + param = param.slice(6, -1); + } + if (param.startsWith('(Right ')) { + param = param.slice(7, -1); + } + } + return { entrypoint: this.name, parameters: param }; + }, + generateSampleInvocation(): string { + const params = this.parameters.map(p => { + switch (p.type) { + case 'string': { return '"Tacos"'; } + case 'int': { return -1; } + case 'nat': { return 99; } + case 'address': { return '"KT1EGbAxguaWQFkV3Egb2Z1r933MWuEYyrJS"'; } + case 'key_hash': { return '"tz1SQnJaocpquTztY3zMgydTPoQBBQrDGonJ"'; } + case 'timestamp': { return `"${(new Date()).toISOString()}"`} + case 'mutez': { return 500000; } + case 'unit': { return 'Unit'; } + case 'bytes': + case 'bool': + case 'signature': + case 'key': + case 'operation': + case 'chain_id': + default: { return p.type; } + } + }); + + return this.generateInvocationString(...params); + + } + }; + + return [entryPoint]; + } + + const getFieldAnnotation = (...annot: string[]) => { + const fa = annot.find(a => a.startsWith('%')); + + return !!fa ? formatFieldAnnotation(fa): undefined; + } + + const getTypeAnnotation = (...annot: string[]) => { + const ta = annot.find(a => a.startsWith(':')); + + return !!ta ? formatTypeAnnotation(ta): undefined; + } + + const formatFieldAnnotation = (annot: string) => { + if (!annot.startsWith('%')) { throw new Error(`${annot} must start with '%'`); } + + return annot.replace(/^%_Liq_entry_/, '').replace('%', ''); + } + + const formatTypeAnnotation = (annot: string) => { + if (!annot.startsWith(':')) { throw new Error(`${annot} must start with ':'`); } + + return annot.replace(':', ''); + } + +interface NearleyToken { value: any; + [key: string]: any; +}; + +interface NearleyLexer { + reset: (chunk: string, info: any) => void; + next: () => NearleyToken | undefined; + save: () => any; + formatError: (token: NearleyToken) => string; + has: (tokenType: string) => boolean; +}; + +interface NearleyRule { + name: string; + symbols: NearleySymbol[]; + postprocess?: (d: any[], loc?: number, reject?: {}) => any; +}; + +type NearleySymbol = string | { literal: any } | { test: (token: any) => boolean }; + +interface Grammar { + Lexer: NearleyLexer | undefined; + ParserRules: NearleyRule[]; + ParserStart: string; +}; + +const grammar: Grammar = { + Lexer: lexer, + ParserRules: [ + {"name": "entry", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter), "__", "parameters", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon)], "postprocess": breakParameter}, + {"name": "parameters", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", "parameters", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": stripParen}, + {"name": "parameters", "symbols": [(lexer.has("or") ? {type: "or"} : or), "_", (lexer.has("annot") ? {type: "annot"} : annot), "__", (lexer.has("annot") ? {type: "annot"} : annot), "__", "parameters", "__", "parameters"], "postprocess": branchOrWithTwoAnnot}, + {"name": "parameters", "symbols": [(lexer.has("or") ? {type: "or"} : or), "_", (lexer.has("annot") ? {type: "annot"} : annot), "__", "parameters", "__", "parameters"], "postprocess": branchOrWithAnnot}, + {"name": "parameters", "symbols": [(lexer.has("or") ? {type: "or"} : or), "_", "parameters", "__", "parameters"], "postprocess": branchOr}, + {"name": "parameters", "symbols": [(lexer.has("pair") ? {type: "pair"} : pair), "__", (lexer.has("annot") ? {type: "annot"} : annot), "__", (lexer.has("annot") ? {type: "annot"} : annot), "__", "parameters", "__", "parameters"], "postprocess": mergePairWithTwoAnnot}, + {"name": "parameters", "symbols": [(lexer.has("pair") ? {type: "pair"} : pair), "__", (lexer.has("annot") ? {type: "annot"} : annot), "__", "parameters", "__", "parameters"], "postprocess": mergePairWithAnnot}, + {"name": "parameters", "symbols": [(lexer.has("pair") ? {type: "pair"} : pair), "__", "parameters", "__", "parameters"], "postprocess": mergePair}, + {"name": "parameters", "symbols": [(lexer.has("singleArgData") ? {type: "singleArgData"} : singleArgData), "_", (lexer.has("annot") ? {type: "annot"} : annot), "__", (lexer.has("annot") ? {type: "annot"} : annot), "__", "parameters"], "postprocess": recordSingleArgDataWithTwoAnnot}, + {"name": "parameters", "symbols": [(lexer.has("singleArgData") ? {type: "singleArgData"} : singleArgData), "_", (lexer.has("annot") ? {type: "annot"} : annot), "__", "parameters"], "postprocess": recordSingleArgDataWithAnnot}, + {"name": "parameters", "symbols": [(lexer.has("singleArgData") ? {type: "singleArgData"} : singleArgData), "_", "parameters"], "postprocess": recordSingleArgData}, + {"name": "parameters", "symbols": [(lexer.has("doubleArgData") ? {type: "doubleArgData"} : doubleArgData), "_", (lexer.has("annot") ? {type: "annot"} : annot), "__", (lexer.has("annot") ? {type: "annot"} : annot), "__", "parameters", "__", "parameters"], "postprocess": recordDoubleArgDataWithTwoAnnot}, + {"name": "parameters", "symbols": [(lexer.has("doubleArgData") ? {type: "doubleArgData"} : doubleArgData), "_", (lexer.has("annot") ? {type: "annot"} : annot), "__", "parameters", "__", "parameters"], "postprocess": recordDoubleArgDataWithAnnot}, + {"name": "parameters", "symbols": [(lexer.has("doubleArgData") ? {type: "doubleArgData"} : doubleArgData), "_", "parameters", "__", "parameters"], "postprocess": recordDoubleArgData}, + {"name": "parameters", "symbols": [(lexer.has("data") ? {type: "data"} : data), "__", (lexer.has("annot") ? {type: "annot"} : annot)], "postprocess": recordData}, + {"name": "parameters", "symbols": [(lexer.has("data") ? {type: "data"} : data), "__", (lexer.has("annot") ? {type: "annot"} : annot), "__", (lexer.has("annot") ? {type: "annot"} : annot)], "postprocess": recordData}, + {"name": "parameters", "symbols": [(lexer.has("data") ? {type: "data"} : data)], "postprocess": recordData}, + {"name": "_$ebnf$1", "symbols": []}, + {"name": "_$ebnf$1", "symbols": ["_$ebnf$1", /[\s]/], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "_", "symbols": ["_$ebnf$1"]}, + {"name": "__", "symbols": [/[\s]/]} + ], + ParserStart: "entry", +}; + +export default grammar; diff --git a/src/chain/tezos/lexer/Micheline.js b/ConseilJS-core/src/chain/tezos/lexer/Micheline.ts similarity index 87% rename from src/chain/tezos/lexer/Micheline.js rename to ConseilJS-core/src/chain/tezos/lexer/Micheline.ts index 8ab0380f..5ade39e9 100644 --- a/src/chain/tezos/lexer/Micheline.js +++ b/ConseilJS-core/src/chain/tezos/lexer/Micheline.ts @@ -1,12 +1,23 @@ -// Generated automatically by nearley, version 2.16.0 +// Generated automatically by nearley, version 2.19.1 // http://github.com/Hardmath123/nearley -(function () { -function id(x) { return x[0]; } +// Bypasses TS6133. Allow declared but unused functions. +// @ts-ignore +function id(d: any[]): any { return d[0]; } +declare var lbrace: any; +declare var _: any; +declare var colon: any; +declare var quotedValue: any; +declare var rbrace: any; +declare var keyword: any; +declare var comma: any; +declare var lbracket: any; +declare var rbracket: any; const moo = require("moo"); const bigInt = require("big-integer"); -const MichelineKeywords = ['"parameter"', '"storage"', '"code"', '"False"', '"Elt"', '"Left"', '"None"', '"Pair"', '"Right"', '"Some"', '"True"', '"Unit"', '"PACK"', '"UNPACK"', '"BLAKE2B"', '"SHA256"', '"SHA512"', '"ABS"', '"ADD"', '"AMOUNT"', '"AND"', '"BALANCE"', '"CAR"', '"CDR"', '"CHECK_SIGNATURE"', '"COMPARE"', '"CONCAT"', '"CONS"', '"CREATE_ACCOUNT"', '"CREATE_CONTRACT"', '"IMPLICIT_ACCOUNT"', '"DIP"', '"DROP"', '"DUP"', '"EDIV"', '"EMPTY_MAP"', '"EMPTY_SET"', '"EQ"', '"EXEC"', '"FAILWITH"', '"GE"', '"GET"', '"GT"', '"HASH_KEY"', '"IF"', '"IF_CONS"', '"IF_LEFT"', '"IF_NONE"', '"INT"', '"LAMBDA"', '"LE"', '"LEFT"', '"LOOP"', '"LSL"', '"LSR"', '"LT"', '"MAP"', '"MEM"', '"MUL"', '"NEG"', '"NEQ"', '"NIL"', '"NONE"', '"NOT"', '"NOW"', '"OR"', '"PAIR"', '"PUSH"', '"RIGHT"', '"SIZE"', '"SOME"', '"SOURCE"', '"SENDER"', '"SELF"', '"STEPS_TO_QUOTA"', '"SUB"', '"SWAP"', '"TRANSFER_TOKENS"', '"SET_DELEGATE"', '"UNIT"', '"UPDATE"', '"XOR"', '"ITER"', '"LOOP_LEFT"', '"ADDRESS"', '"CONTRACT"', '"ISNAT"', '"CAST"', '"RENAME"', '"bool"', '"contract"', '"int"', '"key"', '"key_hash"', '"lambda"', '"list"', '"map"', '"big_map"', '"nat"', '"option"', '"or"', '"pair"', '"set"', '"signature"', '"string"', '"bytes"', '"mutez"', '"timestamp"', '"unit"', '"operation"', '"address"', '"SLICE"']; +// taken from https://gitlab.com/nomadic-labs/tezos, lib_protocol/michelson_v1_primitives.ml, prim_encoding enum +const MichelineKeywords = ['"parameter"', '"storage"', '"code"', '"False"', '"Elt"', '"Left"', '"None"', '"Pair"', '"Right"', '"Some"', '"True"', '"Unit"', '"PACK"', '"UNPACK"', '"BLAKE2B"', '"SHA256"', '"SHA512"', '"ABS"', '"ADD"', '"AMOUNT"', '"AND"', '"BALANCE"', '"CAR"', '"CDR"', '"CHECK_SIGNATURE"', '"COMPARE"', '"CONCAT"', '"CONS"', '"CREATE_ACCOUNT"', '"CREATE_CONTRACT"', '"IMPLICIT_ACCOUNT"', '"DIP"', '"DROP"', '"DUP"', '"EDIV"', '"EMPTY_MAP"', '"EMPTY_SET"', '"EQ"', '"EXEC"', '"FAILWITH"', '"GE"', '"GET"', '"GT"', '"HASH_KEY"', '"IF"', '"IF_CONS"', '"IF_LEFT"', '"IF_NONE"', '"INT"', '"LAMBDA"', '"LE"', '"LEFT"', '"LOOP"', '"LSL"', '"LSR"', '"LT"', '"MAP"', '"MEM"', '"MUL"', '"NEG"', '"NEQ"', '"NIL"', '"NONE"', '"NOT"', '"NOW"', '"OR"', '"PAIR"', '"PUSH"', '"RIGHT"', '"SIZE"', '"SOME"', '"SOURCE"', '"SENDER"', '"SELF"', '"STEPS_TO_QUOTA"', '"SUB"', '"SWAP"', '"TRANSFER_TOKENS"', '"SET_DELEGATE"', '"UNIT"', '"UPDATE"', '"XOR"', '"ITER"', '"LOOP_LEFT"', '"ADDRESS"', '"CONTRACT"', '"ISNAT"', '"CAST"', '"RENAME"', '"bool"', '"contract"', '"int"', '"key"', '"key_hash"', '"lambda"', '"list"', '"map"', '"big_map"', '"nat"', '"option"', '"or"', '"pair"', '"set"', '"signature"', '"string"', '"bytes"', '"mutez"', '"timestamp"', '"unit"', '"operation"', '"address"', '"SLICE"', '"DIG"', '"DUG"', '"EMPTY_BIG_MAP"', '"APPLY"', '"chain_id"', '"CHAIN_ID"']; const lexer = moo.compile({ keyword: MichelineKeywords, @@ -155,8 +166,6 @@ const primArgAnnToHex = d => { return prefix + prim + args + ann; } -// 10 - const encodePrimitive = p => { return ('00' + MichelineKeywords.indexOf(p).toString(16)).slice(-2); } @@ -170,7 +179,7 @@ const writeSignedInt = value => { const n = bigInt(value).abs(); const l = n.bitLength().toJSNumber(); - let arr = []; + let arr: any = []; let v = n; for (let i = 0; i < l; i += 7) { let byte = bigInt.zero; @@ -196,9 +205,36 @@ const writeSignedInt = value => { return arr.map(v => ('0' + v.toString(16)).slice(-2)).join(''); } -var grammar = { - Lexer: lexer, - ParserRules: [ + +interface NearleyToken { value: any; + [key: string]: any; +}; + +interface NearleyLexer { + reset: (chunk: string, info: any) => void; + next: () => NearleyToken | undefined; + save: () => any; + formatError: (token: NearleyToken) => string; + has: (tokenType: string) => boolean; +}; + +interface NearleyRule { + name: string; + symbols: NearleySymbol[]; + postprocess?: (d: any[], loc?: number, reject?: {}) => any; +}; + +type NearleySymbol = string | { literal: any } | { test: (token: any) => boolean }; + +interface Grammar { + Lexer: NearleyLexer | undefined; + ParserRules: NearleyRule[]; + ParserStart: string; +}; + +const grammar: Grammar = { + Lexer: lexer, + ParserRules: [ {"name": "main", "symbols": ["staticObject"], "postprocess": id}, {"name": "main", "symbols": ["primBare"], "postprocess": id}, {"name": "main", "symbols": ["primArg"], "postprocess": id}, @@ -206,84 +242,84 @@ var grammar = { {"name": "main", "symbols": ["primArgAnn"], "postprocess": id}, {"name": "main", "symbols": ["anyArray"], "postprocess": id}, {"name": "staticInt$ebnf$1", "symbols": []}, - {"name": "staticInt$ebnf$1", "symbols": ["staticInt$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "staticInt$ebnf$1", "symbols": ["staticInt$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": (d) => d[0].concat([d[1]])}, {"name": "staticInt", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"int\""}, "staticInt$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": staticIntToHex}, {"name": "staticString$ebnf$1", "symbols": []}, - {"name": "staticString$ebnf$1", "symbols": ["staticString$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "staticString$ebnf$1", "symbols": ["staticString$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": (d) => d[0].concat([d[1]])}, {"name": "staticString", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"string\""}, "staticString$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": staticStringToHex}, {"name": "staticBytes$ebnf$1", "symbols": []}, - {"name": "staticBytes$ebnf$1", "symbols": ["staticBytes$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "staticBytes$ebnf$1", "symbols": ["staticBytes$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": (d) => d[0].concat([d[1]])}, {"name": "staticBytes", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"bytes\""}, "staticBytes$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": staticBytesToHex}, {"name": "staticObject", "symbols": ["staticInt"], "postprocess": id}, {"name": "staticObject", "symbols": ["staticString"], "postprocess": id}, {"name": "staticObject", "symbols": ["staticBytes"], "postprocess": id}, {"name": "primBare$ebnf$1", "symbols": []}, - {"name": "primBare$ebnf$1", "symbols": ["primBare$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "primBare$ebnf$1", "symbols": ["primBare$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": (d) => d[0].concat([d[1]])}, {"name": "primBare", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"prim\""}, "primBare$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("keyword") ? {type: "keyword"} : keyword), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": primBareToHex}, {"name": "primArg$ebnf$1", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArg$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArg$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primArg$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArg$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArg$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primArg$ebnf$3$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArg$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArg$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primArg$ebnf$3$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArg$ebnf$3$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArg$ebnf$3$subexpression$1$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primArg$ebnf$3$subexpression$1", "symbols": ["any", "primArg$ebnf$3$subexpression$1$ebnf$1", "primArg$ebnf$3$subexpression$1$ebnf$2"]}, {"name": "primArg$ebnf$3", "symbols": ["primArg$ebnf$3$subexpression$1"]}, {"name": "primArg$ebnf$3$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArg$ebnf$3$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArg$ebnf$3$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primArg$ebnf$3$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArg$ebnf$3$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArg$ebnf$3$subexpression$2$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primArg$ebnf$3$subexpression$2", "symbols": ["any", "primArg$ebnf$3$subexpression$2$ebnf$1", "primArg$ebnf$3$subexpression$2$ebnf$2"]}, - {"name": "primArg$ebnf$3", "symbols": ["primArg$ebnf$3", "primArg$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "primArg$ebnf$3", "symbols": ["primArg$ebnf$3", "primArg$ebnf$3$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, {"name": "primArg", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"prim\""}, "primArg$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("keyword") ? {type: "keyword"} : keyword), (lexer.has("comma") ? {type: "comma"} : comma), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"args\""}, "primArg$ebnf$2", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "primArg$ebnf$3", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": primArgToHex}, {"name": "primAnn$ebnf$1", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primAnn$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primAnn$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primAnn$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primAnn$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primAnn$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primAnn$ebnf$3$subexpression$1", "symbols": [(lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), "primAnn$ebnf$3$subexpression$1$ebnf$1", "primAnn$ebnf$3$subexpression$1$ebnf$2"]}, {"name": "primAnn$ebnf$3", "symbols": ["primAnn$ebnf$3$subexpression$1"]}, {"name": "primAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primAnn$ebnf$3$subexpression$2", "symbols": [(lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), "primAnn$ebnf$3$subexpression$2$ebnf$1", "primAnn$ebnf$3$subexpression$2$ebnf$2"]}, - {"name": "primAnn$ebnf$3", "symbols": ["primAnn$ebnf$3", "primAnn$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "primAnn$ebnf$3", "symbols": ["primAnn$ebnf$3", "primAnn$ebnf$3$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, {"name": "primAnn", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"prim\""}, "primAnn$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("keyword") ? {type: "keyword"} : keyword), (lexer.has("comma") ? {type: "comma"} : comma), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"annots\""}, "primAnn$ebnf$2", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "primAnn$ebnf$3", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": primAnnToHex}, {"name": "primArgAnn$ebnf$1", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$3$subexpression$1", "symbols": ["any", "primArgAnn$ebnf$3$subexpression$1$ebnf$1", "primArgAnn$ebnf$3$subexpression$1$ebnf$2"]}, {"name": "primArgAnn$ebnf$3", "symbols": ["primArgAnn$ebnf$3$subexpression$1"]}, {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$3$subexpression$2", "symbols": ["any", "primArgAnn$ebnf$3$subexpression$2$ebnf$1", "primArgAnn$ebnf$3$subexpression$2$ebnf$2"]}, - {"name": "primArgAnn$ebnf$3", "symbols": ["primArgAnn$ebnf$3", "primArgAnn$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "primArgAnn$ebnf$3", "symbols": ["primArgAnn$ebnf$3", "primArgAnn$ebnf$3$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, {"name": "primArgAnn$ebnf$4", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$4", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$4", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$5$subexpression$1", "symbols": [(lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), "primArgAnn$ebnf$5$subexpression$1$ebnf$1", "primArgAnn$ebnf$5$subexpression$1$ebnf$2"]}, {"name": "primArgAnn$ebnf$5", "symbols": ["primArgAnn$ebnf$5$subexpression$1"]}, {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "primArgAnn$ebnf$5$subexpression$2", "symbols": [(lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), "primArgAnn$ebnf$5$subexpression$2$ebnf$1", "primArgAnn$ebnf$5$subexpression$2$ebnf$2"]}, - {"name": "primArgAnn$ebnf$5", "symbols": ["primArgAnn$ebnf$5", "primArgAnn$ebnf$5$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "primArgAnn$ebnf$5", "symbols": ["primArgAnn$ebnf$5", "primArgAnn$ebnf$5$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, {"name": "primArgAnn", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"prim\""}, "primArgAnn$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("keyword") ? {type: "keyword"} : keyword), (lexer.has("comma") ? {type: "comma"} : comma), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"args\""}, "primArgAnn$ebnf$2", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "primArgAnn$ebnf$3", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket), (lexer.has("comma") ? {type: "comma"} : comma), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"annots\""}, "primArgAnn$ebnf$4", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "primArgAnn$ebnf$5", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": primArgAnnToHex}, {"name": "primAny", "symbols": ["primBare"], "postprocess": id}, {"name": "primAny", "symbols": ["primArg"], "postprocess": id}, @@ -294,24 +330,20 @@ var grammar = { {"name": "any", "symbols": ["anyArray"], "postprocess": id}, {"name": "anyArray", "symbols": [(lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket)], "postprocess": function(d) { return '0200000000'; }}, {"name": "anyArray$ebnf$1$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "anyArray$ebnf$1$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "anyArray$ebnf$1$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "anyArray$ebnf$1$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "anyArray$ebnf$1$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "anyArray$ebnf$1$subexpression$1$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "anyArray$ebnf$1$subexpression$1", "symbols": ["any", "anyArray$ebnf$1$subexpression$1$ebnf$1", "anyArray$ebnf$1$subexpression$1$ebnf$2"]}, {"name": "anyArray$ebnf$1", "symbols": ["anyArray$ebnf$1$subexpression$1"]}, {"name": "anyArray$ebnf$1$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "anyArray$ebnf$1$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "anyArray$ebnf$1$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, {"name": "anyArray$ebnf$1$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "anyArray$ebnf$1$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, + {"name": "anyArray$ebnf$1$subexpression$2$ebnf$2", "symbols": [], "postprocess": () => null}, {"name": "anyArray$ebnf$1$subexpression$2", "symbols": ["any", "anyArray$ebnf$1$subexpression$2$ebnf$1", "anyArray$ebnf$1$subexpression$2$ebnf$2"]}, - {"name": "anyArray$ebnf$1", "symbols": ["anyArray$ebnf$1", "anyArray$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, + {"name": "anyArray$ebnf$1", "symbols": ["anyArray$ebnf$1", "anyArray$ebnf$1$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, {"name": "anyArray", "symbols": [(lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "anyArray$ebnf$1", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket)], "postprocess": staticArrayToHex} -] - , ParserStart: "main" -} -if (typeof module !== 'undefined'&& typeof module.exports !== 'undefined') { - module.exports = grammar; -} else { - window.grammar = grammar; -} -})(); + ], + ParserStart: "main", +}; + +export default grammar; diff --git a/ConseilJS-core/src/chain/tezos/lexer/Michelson.ts b/ConseilJS-core/src/chain/tezos/lexer/Michelson.ts new file mode 100644 index 00000000..7f8fe291 --- /dev/null +++ b/ConseilJS-core/src/chain/tezos/lexer/Michelson.ts @@ -0,0 +1,795 @@ +// Generated automatically by nearley, version 2.19.1 +// http://github.com/Hardmath123/nearley +// Bypasses TS6133. Allow declared but unused functions. +// @ts-ignore +function id(d: any[]): any { return d[0]; } +declare var parameter: any; +declare var storage: any; +declare var code: any; +declare var comparableType: any; +declare var constantType: any; +declare var singleArgType: any; +declare var lparen: any; +declare var rparen: any; +declare var doubleArgType: any; +declare var annot: any; +declare var number: any; +declare var string: any; +declare var lbrace: any; +declare var rbrace: any; +declare var constantData: any; +declare var singleArgData: any; +declare var doubleArgData: any; +declare var bytes: any; +declare var elt: any; +declare var semicolon: any; +declare var baseInstruction: any; +declare var macroCADR: any; +declare var macroDIP: any; +declare var macroDUP: any; +declare var macroSETCADR: any; +declare var macroASSERTlist: any; + +const moo = require("moo"); + +/* + Michelson references: + https://tezos.gitlab.io/whitedoc/michelson.html#full-grammar + https://michelson.nomadic-labs.com/ +*/ + +const macroCADRconst = /C[AD]+R/; +const macroSETCADRconst = /SET_C[AD]+R/; +const macroDIPconst = /DII+P/; +const macroDUPconst = /DUU+P/; +const DIPmatcher = new RegExp(macroDIPconst); +const DUPmatcher = new RegExp(macroDUPconst); +const macroASSERTlistConst = ['ASSERT', 'ASSERT_EQ', 'ASSERT_NEQ', 'ASSERT_GT', 'ASSERT_LT', 'ASSERT_GE', 'ASSERT_LE', 'ASSERT_NONE', 'ASSERT_SOME', 'ASSERT_LEFT', 'ASSERT_RIGHT', 'ASSERT_CMPEQ', 'ASSERT_CMPNEQ', 'ASSERT_CMPGT', 'ASSERT_CMPLT', 'ASSERT_CMPGE', 'ASSERT_CMPLE']; +const macroIFCMPlist = ['IFCMPEQ', 'IFCMPNEQ', 'IFCMPLT', 'IFCMPGT', 'IFCMPLE', 'IFCMPGE']; +const macroCMPlist = ['CMPEQ', 'CMPNEQ', 'CMPLT', 'CMPGT', 'CMPLE', 'CMPGE']; +const macroIFlist = ['IFEQ', 'IFNEQ', 'IFLT', 'IFGT', 'IFLE', 'IFGE']; + +const lexer = moo.compile({ + annot: /[\@\%\:][a-z_A-Z0-9]+/, + lparen: '(', + rparen: ')', + lbrace: '{', + rbrace: '}', + ws: /[ \t]+/, + semicolon: ";", + bytes: /0x[0-9a-fA-F]+/, + number: /-?[0-9]+(?!x)/, + parameter: [ 'parameter' , 'Parameter'], + storage: ['Storage', 'storage'], + code: ['Code', 'code'], + comparableType: ['int', 'nat', 'string', 'bytes', 'mutez', 'bool', 'key_hash', 'timestamp', 'chain_id'], + constantType: ['key', 'unit', 'signature', 'operation', 'address'], + singleArgType: ['option', 'list', 'set', 'contract'], + doubleArgType: ['pair', 'or', 'lambda', 'map', 'big_map'], + baseInstruction: ['ABS', 'ADD', 'ADDRESS', 'AMOUNT', 'AND', 'BALANCE', 'BLAKE2B', 'CAR', 'CAST', 'CDR', 'CHECK_SIGNATURE', + 'COMPARE', 'CONCAT', 'CONS', 'CONTRACT', /*'CREATE_CONTRACT',*/ 'DIP', /*'DROP',*/ /*'DUP',*/ 'EDIV', /*'EMPTY_MAP',*/ + 'EMPTY_SET', 'EQ', 'EXEC', 'FAIL', 'FAILWITH', 'GE', 'GET', 'GT', 'HASH_KEY', 'IF', 'IF_CONS', 'IF_LEFT', 'IF_NONE', + 'IF_RIGHT', 'IMPLICIT_ACCOUNT', 'INT', 'ISNAT', 'ITER', 'LAMBDA', 'LE', 'LEFT', 'LOOP', 'LOOP_LEFT', 'LSL', 'LSR', 'LT', + 'MAP', 'MEM', 'MUL', 'NEG', 'NEQ', 'NIL', 'NONE', 'NOT', 'NOW', 'OR', 'PACK', 'PAIR', /*'PUSH',*/ 'REDUCE', 'RENAME', 'RIGHT', 'SELF', + 'SENDER', 'SET_DELEGATE', 'SHA256', 'SHA512', 'SIZE', 'SLICE', 'SOME', 'SOURCE', 'STEPS_TO_QUOTA', 'SUB', 'SWAP', + 'TRANSFER_TOKENS', 'UNIT', 'UNPACK', 'UPDATE', 'XOR', + 'UNPAIR', 'UNPAPAIR', // TODO: macro + 'IF_SOME', // TODO: macro + 'IFCMPEQ', 'IFCMPNEQ', 'IFCMPLT', 'IFCMPGT', 'IFCMPLE', 'IFCMPGE', 'CMPEQ', 'CMPNEQ', 'CMPLT', 'CMPGT', 'CMPLE', + 'CMPGE', 'IFEQ', 'NEQ', 'IFLT', 'IFGT', 'IFLE', 'IFGE', // TODO: should be separate + /*'DIG',*/ /*'DUG',*/ 'EMPTY_BIG_MAP', 'APPLY', 'CHAIN_ID' + ], + macroCADR: macroCADRconst, + macroDIP: macroDIPconst, + macroDUP: macroDUPconst, + macroSETCADR: macroSETCADRconst, + macroASSERTlist: macroASSERTlistConst, + constantData: ['Unit', 'True', 'False', 'None', 'instruction'], + singleArgData: ['Left', 'Right', 'Some'], + doubleArgData: ['Pair'], + elt: "Elt", + word: /[a-zA-Z_0-9]+/, + string: /"(?:\\["\\]|[^\n"\\])*"/ +}); + + + const checkC_R = c_r => { + var pattern = new RegExp('^C(A|D)(A|D)+R$'); // TODO + return pattern.test(c_r); + } + + const expandC_R = (word, annot) => { + var expandedC_R = word.slice(1, -1).split('').map(c => (c === 'A' ? '{ "prim": "CAR" }' : '{ "prim": "CDR" }')); + + if (annot != null) { + const lastChar = word.slice(-2, -1); + if (lastChar === 'A') { + expandedC_R[expandedC_R.length-1] = `{ "prim": "CAR", "annots": [${annot}] }` + } else if (lastChar === 'D') { + expandedC_R[expandedC_R.length-1] = `{ "prim": "CDR", "annots": [${annot}] }` + } + } + + return `[${expandedC_R.join(', ')}]`; + } + + const check_compare = cmp => macroCMPlist.includes(cmp); + + const expand_cmp = (cmp, annot) => { + var op = cmp.substring(3) + var binary_op = keywordToJson([`${op}`]) + var compare = keywordToJson(['COMPARE']) + if (annot != null) { + binary_op = `{ "prim": "${op}", "annots": [${annot}] }`; + } + + return `[${compare}, ${binary_op}]`; + } + + const check_dup = dup => DUPmatcher.test(dup); + + const expand_dup = (dup, annot) => { + let t = ''; + if (DUPmatcher.test(dup)) { + const c = dup.length - 3; + for (let i = 0; i < c; i++) { t += '[{ "prim": "DIP", "args": [ '; } + + if (annot == null) { + t += `[{ "prim": "DUP" }]`; + } else { + t += `[{ "prim": "DUP", "annots": [${annot}] }]`; + } + + for (let i = 0; i < c; i++) { t += ' ] },{"prim":"SWAP"}]'; } + return t; + } + + throw new Error(''); + } + + const check_assert = assert => macroASSERTlistConst.includes(assert); + + const expand_assert = (assert, annot) => { + const annotation = !!annot ? `, "annots": [${annot}]` : ''; + switch (assert) { + case 'ASSERT': + return `[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPEQ': + return `[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPGE': + return `[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPGT': + return `[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPLE': + return `[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPLT': + return `[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_CMPNEQ': + return `[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_EQ': + return `[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]]`; + case 'ASSERT_GE': + return `[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_GT': + return `[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_LE': + return `[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_LT': + return `[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_NEQ': + return `[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"${annotation}}]]]}]`; + case 'ASSERT_NONE': // IF_NONE {} {FAIL} + return '[{"prim":"IF_NONE","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]'; + case 'ASSERT_SOME': // IF_NONE {FAIL} {RENAME @x} + return '[{"prim":"IF_NONE","args":[[[{"prim":"UNIT"},{"prim":"FAILWITH"}]],[]]}]'; + case 'ASSERT_LEFT': // IF_LEFT {RENAME @x} {FAIL} + return ''; + case 'ASSERT_RIGHT': // IF_LEFT {FAIL} {RENAME @x} + return ''; + default: + throw new Error(`Could not process ${assert}`); + } + } + + const check_fail = fail => fail === "FAIL"; + + const expand_fail = (fail, annot) => { + if (annot == null) { + return '[ { "prim": "UNIT" }, { "prim": "FAILWITH" } ]'; + } else { + return `[ { "prim": "UNIT" }, { "prim": "FAILWITH", "annots": [${annot}] } ]`; + } + } + + const check_if = ifStatement => (macroIFCMPlist.includes(ifStatement) || macroIFlist.includes(ifStatement) || ifStatement === 'IF_SOME'); // TODO: IF_SOME + + const expandIF = (ifInstr, ifTrue, ifFalse?, annot?) => { + const annotation = !!annot ? `, "annots": [${annot}]` : ''; + + switch (ifInstr) { + case 'IFCMPEQ': + return `[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPGE': + return `[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPGT': + return `[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPLE': + return `[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPLT': + return `[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFCMPNEQ': + return `[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFEQ': + return `[{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFGE': + return `[{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFGT': + return `[{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFLE': + return `[{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFLT': + return `[{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IFNEQ': + return `[{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]${annotation}}]`; + case 'IF_SOME': + return `[{"prim":"IF_NONE","args":[ [${ifFalse}], [${ifTrue}]]${annotation}}]`; + default: + throw new Error(`Could not process ${ifInstr}`); + } + } + + const check_dip = dip => DIPmatcher.test(dip); + + const expandDIP = (dip, instruction, annot?) => { + let t = ''; + if (DIPmatcher.test(dip)) { + const c = dip.length - 2; + for (let i = 0; i < c; i++) { t += '[{ "prim": "DIP", "args": [ '; } + t = `${t} [ ${instruction} ] ]`; + if (!!annot) { t = `${t}, "annots": [${annot}]`; } + t += ' }]'; + for (let i = 0; i < c - 1; i++) { t += ' ] }]'; } + return t; + } + + throw new Error(`Unexpected parameter for DIP processing: ${dip}`); + } + + const check_other = word => (word == "UNPAIR" || word == "UNPAPAIR"); // TODO: dynamic matching + + //UNPAIR and annotations follows a nonstandard format described in docs, and is dependent on the number of + //annotations given to the command, right now we're hard coding to fix the multisig contract swiftly, but a + //more general solution is required in the longterm. + const expand_other = (word, annot) => { + if (word == 'UNPAIR') { + if (annot == null) { + return '[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]' + } else if (annot.length == 1) { + return `[ [ { "prim": "DUP" }, { "prim": "CAR", "annots": [${annot}] }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]` + } else if (annot.length == 2) { + return `[ [ { "prim": "DUP" }, { "prim": "CAR", "annots": [${annot[0]}] }, { "prim": "DIP", "args": [ [ { "prim": "CDR", "annots": [${annot[1]}] } ] ] } ] ]` + } else { + return ''; + } + } + + if (word == 'UNPAPAIR') { + if (annot == null) { + return `[ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], + {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]]}]]]}]`; + } else { + return `[ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], + {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]],"annots": [${annot}]}]]]}]`; + } + } + } + + const checkSetCadr = s => macroSETCADRconst.test(s); + + const expandSetCadr = (word, annot) => nestSetCadr(word.slice(5, -1)); + + const nestSetCadr = r => { + if (r.length === 0) { return ''; } + + const c = r.charAt(0); + if (r.length === 1) { + if (c === 'A') { + return '[{"prim": "CDR","annots":["@%%"]}, {"prim": "SWAP"}, {"prim": "PAIR","annots":["%","%@"]}]'; + } else if (c === 'D'){ + return '[{"prim": "CAR","annots":["@%%"]}, {"prim": "PAIR","annots":["%@","%"]}]'; + } + } + + if (c === 'A') { + return `[{"prim": "DUP"}, {"prim": "DIP", "args": [[{"prim": "CAR","annots":["@%%"]}, ${nestSetCadr(r.slice(1))}]]}, {"prim": "CDR","annots":["@%%"]}, {"prim": "SWAP"}, {"prim": "PAIR","annots":["%@","%@"]}]`; + } else if (c === 'D') { + return `[{"prim": "DUP"}, {"prim": "DIP", "args": [[{"prim": "CDR","annots":["@%%"]}, ${nestSetCadr(r.slice(1))}]]}, {"prim": "CAR","annots":["@%%"]}, {"prim": "PAIR","annots":["%@","%@"]}]`; + } + } + + const checkKeyword = word => { + if (check_assert(word)) { return true; } + if (check_compare(word)) { return true; } + if (check_dip(word)) { return true; } + if (check_dup(word)) { return true; } + if (check_fail(word)) { return true; } + if (check_if(word)) { return true; } + if (checkC_R(word)) { return true; } + if (check_other(word)) { return true; } + if (checkSetCadr(word)) { return true; } + } + + const expandKeyword = (word, annot) => { + if (checkC_R(word)) { return expandC_R(word, annot); } + if (check_assert(word)) { return expand_assert(word, annot); } + if (check_compare(word)) { return expand_cmp(word, annot); } + if (check_dip(word)) { return expandDIP(word, annot); } + if (check_dup(word)) { return expand_dup(word, annot); } + if (check_fail(word)) { return expand_fail(word, annot); } + if (check_if(word)) { return expandIF(word, annot); } + if (check_other(word)) { return expand_other(word, annot); } + if (checkSetCadr(word)) { return expandSetCadr(word, annot); } + } + + /** + * Given a int, convert it to JSON. + * Example: "3" -> { "int": "3" } + */ + const intToJson = d => `{ "int": "${parseInt(d[0])}" }`; + + /** + * Given a string, convert it to JSON. + * Example: "string" -> "{ "string": "blah" }" + */ + const stringToJson = d => `{ "string": ${d[0]} }`; + + /** + */ + const bytesToJson = d => `{ "bytes": "${d[0].toString().slice(2)}" }`; + + /** + * Given a keyword, convert it to JSON. + * Example: "int" -> "{ "prim" : "int" }" + */ + const keywordToJson = d => { + const word = d[0].toString(); + + if (d.length == 1) { + if (checkKeyword(word)) { + return [expandKeyword(word, null)]; + } else { + return `{ "prim": "${d[0]}" }`; + } + } else { + const annot = d[1].map(x => `"${x[1]}"`); + if (checkKeyword(word)) { + return [expandKeyword(word, annot)]; + } else { + return `{ "prim": "${d[0]}", "annots": [${annot}] }`; + } + } + } + + /** + * Given a keyword with one argument, convert it to JSON. + * Example: "option int" -> "{ prim: option, args: [int] }" + */ + const singleArgKeywordToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[2]} ] }`; + + const comparableTypeToJson = d => { + const annot = d[3].map(x => `"${x[1]}"`) + return `{ "prim": "${d[2]}", "annots": [${annot}] }`; + } + + const singleArgTypeKeywordWithParenToJson = d => { + const annot = d[3].map(x => `"${x[1]}"`) + return `{ "prim": "${d[2]}", "args": [ ${d[5]} ], "annots": [${annot}] }`; + } + + const singleArgInstrKeywordToJson = d => { + const word = `${d[0].toString()}` + if (check_dip(word)) { + return expandDIP(word, d[2]) + } else { + return `{ "prim": "${d[0]}", "args": [ [ ${d[2]} ] ] }`; + } + } + + const singleArgTypeKeywordToJson = d => { + const word = `${d[0].toString()}` + const annot = d[1].map(x => `"${x[1]}"`) + if (check_dip(word)) { + return expandDIP(word, d[2], annot) + } else { + return `{ "prim": "${d[0]}", "args": [ ${d[3]} ], "annots": [${annot}] }`; + } + } + + /** + * Given a keyword with one argument and parentheses, convert it to JSON. + * Example: "(option int)" -> "{ prim: option, args: [{prim: int}] }" + * Also: (option (mutez)) + */ + const singleArgKeywordWithParenToJson = d => `{ "prim": "${d[2]}", "args": [ ${d[(4 + ((d.length === 7) ? 0 : 2))]} ] }`; + + /** + * Given a keyword with two arguments, convert it into JSON. + * Example: "Pair unit instruction" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" + */ + const doubleArgKeywordToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]} ] }`; + const doubleArgParenKeywordToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[4]}, ${d[8]} ] }`; + + const doubleArgInstrKeywordToJson = d => { + const word = `${d[0].toString()}` + if (check_if(word)) { + return expandIF(word, d[2], d[4]) + } else { + return `{ "prim": "${d[0]}", "args": [ [${d[2]}], [${d[4]}] ] }`; + } + } + + /** + * Given a keyword with two arguments and parentheses, convert it into JSON. + * Example: "(Pair unit instruction)" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" + */ + const doubleArgKeywordWithParenToJson = d => `{ "prim": "${d[2]}", "args": [ ${d[4]}, ${d[6]} ] }`; + + /** + * Given a keyword with three arguments, convert it into JSON. + * Example: "LAMBDA key unit {DIP;}" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" + */ + const tripleArgKeyWordToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, [${d[6]}] ] }`; + + /** + * Given a keyword with three arguments and parentheses, convert it into JSON. + * Example: "(LAMBDA key unit {DIP;})" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" + */ + const tripleArgKeyWordWithParenToJson = d => `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, ${d[6]} ] }`; + + const nestedArrayChecker = x => { + if (Array.isArray(x) && Array.isArray(x[0])) { // handles double array nesting + return x[0]; + } else { + return x; + } + } + + /** + * Given a list of michelson instructions, convert it into JSON. + * Example: "{CAR; NIL operation; PAIR;}" -> + * [ '{ prim: CAR }', + * '{ prim: NIL, args: [{ prim: operation }] }', + * '{ prim: PAIR }' ] + */ + const instructionSetToJsonNoSemi = d => { return d[2].map(x => x[0]).concat(d[3]).map(x => nestedArrayChecker(x)); } + const instructionSetToJsonSemi = d => { return `${d[2].map(x => x[0]).map(x => nestedArrayChecker(x))}`; } + const dataListToJsonSemi = d => { return `[ ${d[2].map(x => x[0]).map(x => nestedArrayChecker(x))} ]`; } + + /** + * parameter, storage, code + */ + const scriptToJson = d => `[ ${d[0]}, ${d[2]}, { "prim": "code", "args": [ [ ${d[4]} ] ] } ]`; + + const doubleArgTypeKeywordToJson = d => { + const annot = d[1].map(x => `"${x[1]}"`) + return `{ "prim": "${d[0]}", "args": [ ${d[4]}, ${d[6]} ], "annots": [${annot}] }`; + } + + const doubleArgTypeKeywordWithParenToJson = d => { + const annot = d[3].map(x => `"${x[1]}"`) + return `{ "prim": "${d[2]}", "args": [ ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; + } + + const tripleArgTypeKeyWordToJson = d => { + const annot = d[1].map(x => `"${x[1]}"`) + return `{ "prim": "${d[0]}", "args": [ ${d[3]}, ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; + } + + const pushToJson = d => { + return `{ "prim": "${d[0]}", "args": [${d[2]}, []] }`; + } + + const pushWithAnnotsToJson = d => { + const annot = d[1].map(x => `"${x[1]}"`) + return `{ "prim": "PUSH", "args": [ ${d[3]}, ${d[5]} ], "annots": [${annot}] }`; + } + + const dipnToJson = d => (d.length > 4) ? `{ "prim": "${d[0]}", "args": [ { "int": "${d[2]}" }, [ ${d[4]} ] ] }` : `{ "prim": "${d[0]}", "args": [ ${d[2]} ] }`; + + const dupnToJson = d => { + const n = Number(d[2]); + + if (n === 1) { + return '{ "prim": "DUP" }'; + } else if (n === 2) { + return '[{ "prim": "DIP", "args": [[ {"prim": "DUP"} ]] }, { "prim": "SWAP" }]'; + } else { + return `[{ "prim": "DIP", "args": [ {"int": "${n - 1}"}, [{ "prim": "DUP" }] ] }, { "prim": "DIG", "args": [ {"int": "${n}"} ] }]`; + } + }; + + const dignToJson = d => `{ "prim": "${d[0]}", "args": [ { "int": "${d[2]}" } ] }`; + + const dropnToJson = d => `{ "prim": "${d[0]}", "args": [ { "int": "${d[2]}" } ] }`; + + const subContractToJson = d => `{ "prim":"CREATE_CONTRACT", "args": [ [ ${d[4]}, ${d[6]}, {"prim": "code" , "args":[ [ ${d[8]} ] ] } ] ] }`; + + const instructionListToJson = d => { + const instructionOne = [d[2]]; + const instructionList = d[3].map(x => x[3]); + return instructionOne.concat(instructionList).map(x => nestedArrayChecker(x)); + } + +interface NearleyToken { value: any; + [key: string]: any; +}; + +interface NearleyLexer { + reset: (chunk: string, info: any) => void; + next: () => NearleyToken | undefined; + save: () => any; + formatError: (token: NearleyToken) => string; + has: (tokenType: string) => boolean; +}; + +interface NearleyRule { + name: string; + symbols: NearleySymbol[]; + postprocess?: (d: any[], loc?: number, reject?: {}) => any; +}; + +type NearleySymbol = string | { literal: any } | { test: (token: any) => boolean }; + +interface Grammar { + Lexer: NearleyLexer | undefined; + ParserRules: NearleyRule[]; + ParserStart: string; +}; + +const grammar: Grammar = { + Lexer: lexer, + ParserRules: [ + {"name": "main", "symbols": ["instruction"], "postprocess": id}, + {"name": "main", "symbols": ["data"], "postprocess": id}, + {"name": "main", "symbols": ["type"], "postprocess": id}, + {"name": "main", "symbols": ["parameter"], "postprocess": id}, + {"name": "main", "symbols": ["storage"], "postprocess": id}, + {"name": "main", "symbols": ["code"], "postprocess": id}, + {"name": "main", "symbols": ["script"], "postprocess": id}, + {"name": "main", "symbols": ["parameterValue"], "postprocess": id}, + {"name": "main", "symbols": ["storageValue"], "postprocess": id}, + {"name": "main", "symbols": ["typeData"], "postprocess": id}, + {"name": "script", "symbols": ["parameter", "_", "storage", "_", "code"], "postprocess": scriptToJson}, + {"name": "parameterValue", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter), "_", "typeData", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, + {"name": "storageValue", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage), "_", "typeData", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, + {"name": "parameter", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter), "_", "type", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, + {"name": "storage", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage), "_", "type", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, + {"name": "code", "symbols": [(lexer.has("code") ? {type: "code"} : code), "_", "subInstruction", "_", "semicolons", "_"], "postprocess": d => d[2]}, + {"name": "code", "symbols": [(lexer.has("code") ? {type: "code"} : code), "_", {"literal":"{};"}], "postprocess": d => "code {}"}, + {"name": "type", "symbols": [(lexer.has("comparableType") ? {type: "comparableType"} : comparableType)], "postprocess": keywordToJson}, + {"name": "type", "symbols": [(lexer.has("constantType") ? {type: "constantType"} : constantType)], "postprocess": keywordToJson}, + {"name": "type", "symbols": [(lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "_", "type"], "postprocess": singleArgKeywordToJson}, + {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "_", "type", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgKeywordWithParenToJson}, + {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "_", (lexer.has("lparen") ? {type: "lparen"} : lparen), "_", "type", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen), "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgKeywordWithParenToJson}, + {"name": "type", "symbols": [(lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "_", "type", "_", "type"], "postprocess": doubleArgKeywordToJson}, + {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "_", "type", "_", "type", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgKeywordWithParenToJson}, + {"name": "type$ebnf$1$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$1", "symbols": ["type$ebnf$1$subexpression$1"]}, + {"name": "type$ebnf$1$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$1", "symbols": ["type$ebnf$1", "type$ebnf$1$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "type", "symbols": [(lexer.has("comparableType") ? {type: "comparableType"} : comparableType), "type$ebnf$1"], "postprocess": keywordToJson}, + {"name": "type$ebnf$2$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$2", "symbols": ["type$ebnf$2$subexpression$1"]}, + {"name": "type$ebnf$2$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$2", "symbols": ["type$ebnf$2", "type$ebnf$2$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "type", "symbols": [(lexer.has("constantType") ? {type: "constantType"} : constantType), "type$ebnf$2"], "postprocess": keywordToJson}, + {"name": "type$ebnf$3$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$3", "symbols": ["type$ebnf$3$subexpression$1"]}, + {"name": "type$ebnf$3$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$3", "symbols": ["type$ebnf$3", "type$ebnf$3$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("comparableType") ? {type: "comparableType"} : comparableType), "type$ebnf$3", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": comparableTypeToJson}, + {"name": "type$ebnf$4$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$4", "symbols": ["type$ebnf$4$subexpression$1"]}, + {"name": "type$ebnf$4$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$4", "symbols": ["type$ebnf$4", "type$ebnf$4$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("constantType") ? {type: "constantType"} : constantType), "type$ebnf$4", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": comparableTypeToJson}, + {"name": "type$ebnf$5$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$5", "symbols": ["type$ebnf$5$subexpression$1"]}, + {"name": "type$ebnf$5$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$5", "symbols": ["type$ebnf$5", "type$ebnf$5$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "type$ebnf$5", "_", "type", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgTypeKeywordWithParenToJson}, + {"name": "type$ebnf$6$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$6", "symbols": ["type$ebnf$6$subexpression$1"]}, + {"name": "type$ebnf$6$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "type$ebnf$6", "symbols": ["type$ebnf$6", "type$ebnf$6$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "type$ebnf$6", "_", "type", "_", "type", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgTypeKeywordWithParenToJson}, + {"name": "typeData", "symbols": [(lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "_", "typeData"], "postprocess": singleArgKeywordToJson}, + {"name": "typeData", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "_", "typeData", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgKeywordWithParenToJson}, + {"name": "typeData", "symbols": [(lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "_", "typeData", "_", "typeData"], "postprocess": doubleArgKeywordToJson}, + {"name": "typeData", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "_", "typeData", "_", "typeData", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgKeywordWithParenToJson}, + {"name": "typeData", "symbols": ["subTypeData"], "postprocess": id}, + {"name": "typeData", "symbols": ["subTypeElt"], "postprocess": id}, + {"name": "typeData", "symbols": [(lexer.has("number") ? {type: "number"} : number)], "postprocess": intToJson}, + {"name": "typeData", "symbols": [(lexer.has("string") ? {type: "string"} : string)], "postprocess": stringToJson}, + {"name": "typeData", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => []}, + {"name": "data", "symbols": [(lexer.has("constantData") ? {type: "constantData"} : constantData)], "postprocess": keywordToJson}, + {"name": "data", "symbols": [(lexer.has("singleArgData") ? {type: "singleArgData"} : singleArgData), "_", "data"], "postprocess": singleArgKeywordToJson}, + {"name": "data", "symbols": [(lexer.has("doubleArgData") ? {type: "doubleArgData"} : doubleArgData), "_", "data", "_", "data"], "postprocess": doubleArgKeywordToJson}, + {"name": "data", "symbols": ["subData"], "postprocess": id}, + {"name": "data", "symbols": ["subElt"], "postprocess": id}, + {"name": "data", "symbols": [(lexer.has("string") ? {type: "string"} : string)], "postprocess": stringToJson}, + {"name": "data", "symbols": [(lexer.has("bytes") ? {type: "bytes"} : bytes)], "postprocess": bytesToJson}, + {"name": "data", "symbols": [(lexer.has("number") ? {type: "number"} : number)], "postprocess": intToJson}, + {"name": "subData", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => "[]"}, + {"name": "subData$ebnf$1$subexpression$1", "symbols": ["data", "_"]}, + {"name": "subData$ebnf$1", "symbols": ["subData$ebnf$1$subexpression$1"]}, + {"name": "subData$ebnf$1$subexpression$2", "symbols": ["data", "_"]}, + {"name": "subData$ebnf$1", "symbols": ["subData$ebnf$1", "subData$ebnf$1$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "subData", "symbols": [{"literal":"("}, "_", "subData$ebnf$1", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, + {"name": "subData$ebnf$2$subexpression$1$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subData$ebnf$2$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subData$ebnf$2$subexpression$1", "symbols": ["data", "_", "subData$ebnf$2$subexpression$1$ebnf$1", "_"]}, + {"name": "subData$ebnf$2", "symbols": ["subData$ebnf$2$subexpression$1"]}, + {"name": "subData$ebnf$2$subexpression$2$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subData$ebnf$2$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subData$ebnf$2$subexpression$2", "symbols": ["data", "_", "subData$ebnf$2$subexpression$2$ebnf$1", "_"]}, + {"name": "subData$ebnf$2", "symbols": ["subData$ebnf$2", "subData$ebnf$2$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "subData", "symbols": [{"literal":"{"}, "_", "subData$ebnf$2", {"literal":"}"}], "postprocess": dataListToJsonSemi}, + {"name": "subElt", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => "[]"}, + {"name": "subElt$ebnf$1$subexpression$1$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subElt$ebnf$1$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subElt$ebnf$1$subexpression$1", "symbols": ["elt", "subElt$ebnf$1$subexpression$1$ebnf$1", "_"]}, + {"name": "subElt$ebnf$1", "symbols": ["subElt$ebnf$1$subexpression$1"]}, + {"name": "subElt$ebnf$1$subexpression$2$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subElt$ebnf$1$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subElt$ebnf$1$subexpression$2", "symbols": ["elt", "subElt$ebnf$1$subexpression$2$ebnf$1", "_"]}, + {"name": "subElt$ebnf$1", "symbols": ["subElt$ebnf$1", "subElt$ebnf$1$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "subElt", "symbols": [{"literal":"{"}, "_", "subElt$ebnf$1", {"literal":"}"}], "postprocess": dataListToJsonSemi}, + {"name": "elt", "symbols": [(lexer.has("elt") ? {type: "elt"} : elt), "_", "data", "_", "data"], "postprocess": doubleArgKeywordToJson}, + {"name": "subTypeData", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => "[]"}, + {"name": "subTypeData$ebnf$1$subexpression$1$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subTypeData$ebnf$1$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subTypeData$ebnf$1$subexpression$1", "symbols": ["data", "subTypeData$ebnf$1$subexpression$1$ebnf$1", "_"]}, + {"name": "subTypeData$ebnf$1", "symbols": ["subTypeData$ebnf$1$subexpression$1"]}, + {"name": "subTypeData$ebnf$1$subexpression$2$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subTypeData$ebnf$1$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subTypeData$ebnf$1$subexpression$2", "symbols": ["data", "subTypeData$ebnf$1$subexpression$2$ebnf$1", "_"]}, + {"name": "subTypeData$ebnf$1", "symbols": ["subTypeData$ebnf$1", "subTypeData$ebnf$1$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "subTypeData", "symbols": [{"literal":"{"}, "_", "subTypeData$ebnf$1", {"literal":"}"}], "postprocess": instructionSetToJsonSemi}, + {"name": "subTypeData$ebnf$2$subexpression$1$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subTypeData$ebnf$2$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subTypeData$ebnf$2$subexpression$1", "symbols": ["data", "subTypeData$ebnf$2$subexpression$1$ebnf$1", "_"]}, + {"name": "subTypeData$ebnf$2", "symbols": ["subTypeData$ebnf$2$subexpression$1"]}, + {"name": "subTypeData$ebnf$2$subexpression$2$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subTypeData$ebnf$2$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subTypeData$ebnf$2$subexpression$2", "symbols": ["data", "subTypeData$ebnf$2$subexpression$2$ebnf$1", "_"]}, + {"name": "subTypeData$ebnf$2", "symbols": ["subTypeData$ebnf$2", "subTypeData$ebnf$2$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "subTypeData", "symbols": [{"literal":"("}, "_", "subTypeData$ebnf$2", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, + {"name": "subTypeElt", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => "[]"}, + {"name": "subTypeElt$ebnf$1$subexpression$1$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subTypeElt$ebnf$1$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subTypeElt$ebnf$1$subexpression$1", "symbols": ["typeElt", "subTypeElt$ebnf$1$subexpression$1$ebnf$1", "_"]}, + {"name": "subTypeElt$ebnf$1", "symbols": ["subTypeElt$ebnf$1$subexpression$1"]}, + {"name": "subTypeElt$ebnf$1$subexpression$2$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subTypeElt$ebnf$1$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subTypeElt$ebnf$1$subexpression$2", "symbols": ["typeElt", "subTypeElt$ebnf$1$subexpression$2$ebnf$1", "_"]}, + {"name": "subTypeElt$ebnf$1", "symbols": ["subTypeElt$ebnf$1", "subTypeElt$ebnf$1$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "subTypeElt", "symbols": [{"literal":"[{"}, "_", "subTypeElt$ebnf$1", {"literal":"}]"}], "postprocess": instructionSetToJsonSemi}, + {"name": "subTypeElt$ebnf$2$subexpression$1$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subTypeElt$ebnf$2$subexpression$1$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subTypeElt$ebnf$2$subexpression$1", "symbols": ["typeElt", "_", "subTypeElt$ebnf$2$subexpression$1$ebnf$1", "_"]}, + {"name": "subTypeElt$ebnf$2", "symbols": ["subTypeElt$ebnf$2$subexpression$1"]}, + {"name": "subTypeElt$ebnf$2$subexpression$2$ebnf$1", "symbols": [{"literal":";"}], "postprocess": id}, + {"name": "subTypeElt$ebnf$2$subexpression$2$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "subTypeElt$ebnf$2$subexpression$2", "symbols": ["typeElt", "_", "subTypeElt$ebnf$2$subexpression$2$ebnf$1", "_"]}, + {"name": "subTypeElt$ebnf$2", "symbols": ["subTypeElt$ebnf$2", "subTypeElt$ebnf$2$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "subTypeElt", "symbols": [{"literal":"[{"}, "_", "subTypeElt$ebnf$2", {"literal":"}]"}], "postprocess": instructionSetToJsonSemi}, + {"name": "typeElt", "symbols": [(lexer.has("elt") ? {type: "elt"} : elt), "_", "typeData", "_", "typeData"], "postprocess": doubleArgKeywordToJson}, + {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => ""}, + {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "instruction", "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => d[2]}, + {"name": "subInstruction$ebnf$1$subexpression$1", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, + {"name": "subInstruction$ebnf$1", "symbols": ["subInstruction$ebnf$1$subexpression$1"]}, + {"name": "subInstruction$ebnf$1$subexpression$2", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, + {"name": "subInstruction$ebnf$1", "symbols": ["subInstruction$ebnf$1", "subInstruction$ebnf$1$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "subInstruction$ebnf$1", "instruction", "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": instructionSetToJsonNoSemi}, + {"name": "subInstruction$ebnf$2$subexpression$1", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, + {"name": "subInstruction$ebnf$2", "symbols": ["subInstruction$ebnf$2$subexpression$1"]}, + {"name": "subInstruction$ebnf$2$subexpression$2", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, + {"name": "subInstruction$ebnf$2", "symbols": ["subInstruction$ebnf$2", "subInstruction$ebnf$2$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "subInstruction$ebnf$2", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": instructionSetToJsonSemi}, + {"name": "instructions", "symbols": [(lexer.has("baseInstruction") ? {type: "baseInstruction"} : baseInstruction)]}, + {"name": "instructions", "symbols": [(lexer.has("macroCADR") ? {type: "macroCADR"} : macroCADR)]}, + {"name": "instructions", "symbols": [(lexer.has("macroDIP") ? {type: "macroDIP"} : macroDIP)]}, + {"name": "instructions", "symbols": [(lexer.has("macroDUP") ? {type: "macroDUP"} : macroDUP)]}, + {"name": "instructions", "symbols": [(lexer.has("macroSETCADR") ? {type: "macroSETCADR"} : macroSETCADR)]}, + {"name": "instructions", "symbols": [(lexer.has("macroASSERTlist") ? {type: "macroASSERTlist"} : macroASSERTlist)]}, + {"name": "instruction", "symbols": ["instructions"], "postprocess": keywordToJson}, + {"name": "instruction", "symbols": ["subInstruction"], "postprocess": id}, + {"name": "instruction$ebnf$1$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$1", "symbols": ["instruction$ebnf$1$subexpression$1"]}, + {"name": "instruction$ebnf$1$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$1", "symbols": ["instruction$ebnf$1", "instruction$ebnf$1$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": ["instructions", "instruction$ebnf$1", "_"], "postprocess": keywordToJson}, + {"name": "instruction", "symbols": ["instructions", "_", "subInstruction"], "postprocess": singleArgInstrKeywordToJson}, + {"name": "instruction$ebnf$2$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$2", "symbols": ["instruction$ebnf$2$subexpression$1"]}, + {"name": "instruction$ebnf$2$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$2", "symbols": ["instruction$ebnf$2", "instruction$ebnf$2$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": ["instructions", "instruction$ebnf$2", "_", "subInstruction"], "postprocess": singleArgTypeKeywordToJson}, + {"name": "instruction", "symbols": ["instructions", "_", "type"], "postprocess": singleArgKeywordToJson}, + {"name": "instruction$ebnf$3$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$3", "symbols": ["instruction$ebnf$3$subexpression$1"]}, + {"name": "instruction$ebnf$3$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$3", "symbols": ["instruction$ebnf$3", "instruction$ebnf$3$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": ["instructions", "instruction$ebnf$3", "_", "type"], "postprocess": singleArgTypeKeywordToJson}, + {"name": "instruction", "symbols": ["instructions", "_", "data"], "postprocess": singleArgKeywordToJson}, + {"name": "instruction$ebnf$4$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$4", "symbols": ["instruction$ebnf$4$subexpression$1"]}, + {"name": "instruction$ebnf$4$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$4", "symbols": ["instruction$ebnf$4", "instruction$ebnf$4$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": ["instructions", "instruction$ebnf$4", "_", "data"], "postprocess": singleArgTypeKeywordToJson}, + {"name": "instruction", "symbols": ["instructions", "_", "type", "_", "type", "_", "subInstruction"], "postprocess": tripleArgKeyWordToJson}, + {"name": "instruction$ebnf$5$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$5", "symbols": ["instruction$ebnf$5$subexpression$1"]}, + {"name": "instruction$ebnf$5$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$5", "symbols": ["instruction$ebnf$5", "instruction$ebnf$5$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": ["instructions", "instruction$ebnf$5", "_", "type", "_", "type", "_", "subInstruction"], "postprocess": tripleArgTypeKeyWordToJson}, + {"name": "instruction", "symbols": ["instructions", "_", "subInstruction", "_", "subInstruction"], "postprocess": doubleArgInstrKeywordToJson}, + {"name": "instruction$ebnf$6$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$6", "symbols": ["instruction$ebnf$6$subexpression$1"]}, + {"name": "instruction$ebnf$6$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$6", "symbols": ["instruction$ebnf$6", "instruction$ebnf$6$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": ["instructions", "instruction$ebnf$6", "_", "subInstruction", "_", "subInstruction"], "postprocess": doubleArgTypeKeywordToJson}, + {"name": "instruction", "symbols": ["instructions", "_", "type", "_", "type"], "postprocess": doubleArgKeywordToJson}, + {"name": "instruction$ebnf$7$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$7", "symbols": ["instruction$ebnf$7$subexpression$1"]}, + {"name": "instruction$ebnf$7$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$7", "symbols": ["instruction$ebnf$7", "instruction$ebnf$7$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": ["instructions", "instruction$ebnf$7", "_", "type", "_", "type"], "postprocess": doubleArgTypeKeywordToJson}, + {"name": "instruction", "symbols": [{"literal":"PUSH"}, "_", "type", "_", "data"], "postprocess": doubleArgKeywordToJson}, + {"name": "instruction", "symbols": [{"literal":"PUSH"}, "_", "type", "_", (lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": pushToJson}, + {"name": "instruction$ebnf$8$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$8", "symbols": ["instruction$ebnf$8$subexpression$1"]}, + {"name": "instruction$ebnf$8$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$8", "symbols": ["instruction$ebnf$8", "instruction$ebnf$8$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": [{"literal":"PUSH"}, "instruction$ebnf$8", "_", "type", "_", "data"], "postprocess": pushWithAnnotsToJson}, + {"name": "instruction$ebnf$9", "symbols": [/[0-9]/]}, + {"name": "instruction$ebnf$9", "symbols": ["instruction$ebnf$9", /[0-9]/], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": [{"literal":"DIP"}, "_", "instruction$ebnf$9", "_", "subInstruction"], "postprocess": dipnToJson}, + {"name": "instruction$ebnf$10", "symbols": [/[0-9]/]}, + {"name": "instruction$ebnf$10", "symbols": ["instruction$ebnf$10", /[0-9]/], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": [{"literal":"DUP"}, "_", "instruction$ebnf$10"], "postprocess": dupnToJson}, + {"name": "instruction", "symbols": [{"literal":"DUP"}], "postprocess": keywordToJson}, + {"name": "instruction$ebnf$11$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$11", "symbols": ["instruction$ebnf$11$subexpression$1"]}, + {"name": "instruction$ebnf$11$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot)]}, + {"name": "instruction$ebnf$11", "symbols": ["instruction$ebnf$11", "instruction$ebnf$11$subexpression$2"], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": [{"literal":"DUP"}, "instruction$ebnf$11", "_"], "postprocess": keywordToJson}, + {"name": "instruction$ebnf$12", "symbols": [/[0-9]/]}, + {"name": "instruction$ebnf$12", "symbols": ["instruction$ebnf$12", /[0-9]/], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": [{"literal":"DIG"}, "_", "instruction$ebnf$12"], "postprocess": dignToJson}, + {"name": "instruction$ebnf$13", "symbols": [/[0-9]/]}, + {"name": "instruction$ebnf$13", "symbols": ["instruction$ebnf$13", /[0-9]/], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": [{"literal":"DUG"}, "_", "instruction$ebnf$13"], "postprocess": dignToJson}, + {"name": "instruction$ebnf$14", "symbols": [/[0-9]/]}, + {"name": "instruction$ebnf$14", "symbols": ["instruction$ebnf$14", /[0-9]/], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "instruction", "symbols": [{"literal":"DROP"}, "_", "instruction$ebnf$14"], "postprocess": dropnToJson}, + {"name": "instruction", "symbols": [{"literal":"DROP"}], "postprocess": keywordToJson}, + {"name": "instruction", "symbols": [{"literal":"CREATE_CONTRACT"}, "_", (lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "parameter", "_", "storage", "_", "code", "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": subContractToJson}, + {"name": "instruction", "symbols": [{"literal":"EMPTY_MAP"}, "_", "type", "_", "type"], "postprocess": doubleArgKeywordToJson}, + {"name": "instruction", "symbols": [{"literal":"EMPTY_MAP"}, "_", (lexer.has("lparen") ? {type: "lparen"} : lparen), "_", "type", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen), "_", "type"], "postprocess": doubleArgParenKeywordToJson}, + {"name": "_$ebnf$1", "symbols": []}, + {"name": "_$ebnf$1", "symbols": ["_$ebnf$1", /[\s]/], "postprocess": (d) => d[0].concat([d[1]])}, + {"name": "_", "symbols": ["_$ebnf$1"]}, + {"name": "semicolons$ebnf$1", "symbols": [/[;]/], "postprocess": id}, + {"name": "semicolons$ebnf$1", "symbols": [], "postprocess": () => null}, + {"name": "semicolons", "symbols": ["semicolons$ebnf$1"]} + ], + ParserStart: "main", +}; + +export default grammar; diff --git a/ConseilJS-core/src/index-web.ts b/ConseilJS-core/src/index-web.ts new file mode 100644 index 00000000..d4b89f54 --- /dev/null +++ b/ConseilJS-core/src/index-web.ts @@ -0,0 +1,34 @@ +import FetchSelector from './utils/FetchSelector'; +import LogSelector from './utils/LoggerSelector'; + +FetchSelector.setFetch(window.fetch.bind(window)); +LogSelector.setLogger(console); + +export * from './chain/tezos/TezosContractIntrospector'; +export * from './chain/tezos/TezosLanguageUtil'; +export * from './chain/tezos/TezosMessageUtil'; +export * from './chain/tezos/TezosNodeReader'; +export * from './chain/tezos/TezosNodeWriter'; +export * from './chain/tezos/contracts/BabylonDelegationHelper'; +export * from './chain/tezos/contracts/CryptonomicNameServiceHelper'; +export * from './chain/tezos/contracts/DexterTokenHelper'; +export * from './chain/tezos/contracts/MurbardMultisigHelper'; +export * from './chain/tezos/contracts/StakerDAOTokenHelper'; +export * from './chain/tezos/contracts/TCFBakerRegistryHelper'; +export * from './chain/tezos/contracts/Tzip7ReferenceTokenHelper'; +export * from './chain/tezos/contracts/tzip12/NFTReferenceTokenHelper'; +export * from './chain/tezos/contracts/tzip12/SingleAssetTokenHelper'; +export * from './chain/tezos/contracts/TzbtcTokenHelper'; + +export * from './reporting/tezos/TezosConseilClient'; +export * from './reporting/ConseilDataClient'; +export * from './reporting/ConseilMetadataClient'; +export * from './reporting/ConseilQueryBuilder'; + +export * from './types/conseil/MetadataTypes'; +export * from './types/conseil/QueryTypes'; +export * from './types/tezos/ContractIntrospectionTypes'; +export * from './types/tezos/TezosChainTypes'; +export * from './types/tezos/TezosP2PMessageTypes'; +export * from './types/tezos/TezosRPCResponseTypes'; +export * from './types/ExternalInterfaces'; diff --git a/ConseilJS-core/src/index.ts b/ConseilJS-core/src/index.ts new file mode 100644 index 00000000..08a47666 --- /dev/null +++ b/ConseilJS-core/src/index.ts @@ -0,0 +1,40 @@ +import FetchSelector from './utils/FetchSelector'; +import LogSelector from './utils/LoggerSelector'; + +export function registerLogger(logger) { + LogSelector.setLogger(logger); +} + +export function registerFetch(fetch) { + FetchSelector.setFetch(fetch); +} + +export * from './chain/tezos/TezosContractIntrospector'; +export * from './chain/tezos/TezosLanguageUtil'; +export * from './chain/tezos/TezosMessageUtil'; +export * from "./chain/tezos/TezosNodeReader"; +export * from "./chain/tezos/TezosNodeWriter"; +export * from './chain/tezos/contracts/BabylonDelegationHelper'; +export * from './chain/tezos/contracts/CryptonomicNameServiceHelper'; +export * from './chain/tezos/contracts/DexterTokenHelper'; +export * from './chain/tezos/contracts/MurbardMultisigHelper'; +export * from './chain/tezos/contracts/StakerDAOTokenHelper'; +export * from './chain/tezos/contracts/TCFBakerRegistryHelper'; +export * from './chain/tezos/contracts/Tzip7ReferenceTokenHelper'; +export * from './chain/tezos/contracts/tzip12/NFTReferenceTokenHelper'; +export * from './chain/tezos/contracts/tzip12/SingleAssetTokenHelper'; +export * from './chain/tezos/contracts/TzbtcTokenHelper'; + +export * from "./reporting/tezos/TezosConseilClient"; + +export * from './reporting/ConseilDataClient'; +export * from './reporting/ConseilMetadataClient'; +export * from './reporting/ConseilQueryBuilder'; + +export * from './types/conseil/MetadataTypes'; +export * from './types/conseil/QueryTypes'; +export * from './types/tezos/ContractIntrospectionTypes'; +export * from './types/tezos/TezosChainTypes'; +export * from './types/tezos/TezosP2PMessageTypes'; +export * from './types/tezos/TezosRPCResponseTypes'; +export * from './types/ExternalInterfaces'; diff --git a/src/reporting/ConseilDataClient.ts b/ConseilJS-core/src/reporting/ConseilDataClient.ts similarity index 52% rename from src/reporting/ConseilDataClient.ts rename to ConseilJS-core/src/reporting/ConseilDataClient.ts index 9fac5a90..278f1c03 100644 --- a/src/reporting/ConseilDataClient.ts +++ b/ConseilJS-core/src/reporting/ConseilDataClient.ts @@ -1,8 +1,10 @@ import {ConseilServerInfo, ConseilQuery} from '../types/conseil/QueryTypes'; -import {ConseilRequestError} from '../types/conseil/ErrorTypes'; +import {ConseilRequestError} from '../types/conseil/ConseilErrorTypes'; import FetchSelector from '../utils/FetchSelector'; +import LogSelector from '../utils/LoggerSelector'; -const fetch = FetchSelector.getFetch(); +const log = LogSelector.log; +const fetch = FetchSelector.fetch; /** * Utility functions for querying backend Conseil v2 API for metadata @@ -15,23 +17,31 @@ export namespace ConseilDataClient { * @param platform Platform to query, eg: Tezos. * @param network Network to query, eg: mainnet. * @param entity Entity to query, eg: block, account, operation, etc. - * @param query JSON object confirming to the Conseil query spec. + * @param query JSON object or text confirming to the Conseil query spec. */ export async function executeEntityQuery(serverInfo: ConseilServerInfo, platform: string, network: string, entity: string, query: ConseilQuery): Promise { - const url = `${serverInfo.url}/v2/data/${platform}/${network}/${entity}` + const url = `${serverInfo.url}/v2/data/${platform}/${network}/${entity}`; + log.debug(`ConseilDataClient.executeEntityQuery request: ${url}, ${JSON.stringify(query)}`); return fetch(url, { method: 'post', headers: { 'apiKey': serverInfo.apiKey, 'Content-Type': 'application/json' }, body: JSON.stringify(query) }) - .then(response => { - if (!response.ok) { throw new ConseilRequestError(response.status, response.statusText, url, query); } - return response; + .then(r => { + if (!r.ok) { + log.error(`ConseilDataClient.executeEntityQuery request: ${url}, ${JSON.stringify(query)}, failed with ${r.statusText}(${r.status})`); + throw new ConseilRequestError(r.status, r.statusText, url, query); + } + return r; }) - .then(response => { - const contentType: string = response.headers.get('content-type').toLowerCase(); - return contentType.includes('application/json') ? response.json() : response.text(); + .then(r => { + const isJSONResponse: boolean = r.headers.get('content-type').toLowerCase().includes('application/json'); + const response = isJSONResponse ? r.json() : r.text(); + + log.debug(`ConseilDataClient.executeEntityQuery response: ${isJSONResponse ? JSON.stringify(response) : response}`); + + return response; }); } } diff --git a/src/reporting/ConseilMetadataClient.ts b/ConseilJS-core/src/reporting/ConseilMetadataClient.ts similarity index 85% rename from src/reporting/ConseilMetadataClient.ts rename to ConseilJS-core/src/reporting/ConseilMetadataClient.ts index 4db88cc8..80a0654a 100644 --- a/src/reporting/ConseilMetadataClient.ts +++ b/ConseilJS-core/src/reporting/ConseilMetadataClient.ts @@ -1,8 +1,11 @@ import {ConseilServerInfo} from '../types/conseil/QueryTypes' +import {ConseilRequestError} from '../types/conseil/ConseilErrorTypes'; import {PlatformDefinition, NetworkDefinition, EntityDefinition, AttributeDefinition} from '../types/conseil/MetadataTypes'; import FetchSelector from '../utils/FetchSelector'; +import LogSelector from '../utils/LoggerSelector'; -const fetch = FetchSelector.getFetch(); +const log = LogSelector.log; +const fetch = FetchSelector.fetch; /** * Utility functions for querying backend Conseil v2 API for metadata @@ -11,8 +14,18 @@ export namespace ConseilMetadataClient { export async function executeMetadataQuery(serverInfo: ConseilServerInfo, route: string): Promise { return fetch(`${serverInfo.url}/v2/metadata/${route}`, { method: 'GET', - headers: { 'apiKey': serverInfo.apiKey }, - }).then(response => response.json()); + headers: { 'apiKey': serverInfo.apiKey } + }) + .then(r => { + if (!r.ok) { throw new ConseilRequestError(r.status, r.statusText, `${serverInfo.url}/v2/metadata/${route}`, null); } + return r; + }) + .then( + r => r.json() + .catch(error => { + log.error(`ConseilMetadataClient.executeMetadataQuery parsing failed for ${serverInfo.url}/v2/metadata/${route} with ${error}`); + }) + ); } /** diff --git a/src/reporting/ConseilQueryBuilder.ts b/ConseilJS-core/src/reporting/ConseilQueryBuilder.ts similarity index 80% rename from src/reporting/ConseilQueryBuilder.ts rename to ConseilJS-core/src/reporting/ConseilQueryBuilder.ts index fb14b7bd..96a8f93b 100644 --- a/src/reporting/ConseilQueryBuilder.ts +++ b/ConseilJS-core/src/reporting/ConseilQueryBuilder.ts @@ -1,4 +1,4 @@ -import {ConseilQuery, ConseilOperator, ConseilSortDirection, ConseilFunction, ConseilOutput} from "../types/conseil/QueryTypes" +import {ConseilQuery, ConseilOperator, ConseilSortDirection, ConseilFunction, ConseilAggregation, ConseilOutput} from "../types/conseil/QueryTypes" export namespace ConseilQueryBuilder { /** @@ -6,10 +6,11 @@ export namespace ConseilQueryBuilder { */ export function blankQuery(): ConseilQuery { return { - 'fields': [], - 'predicates': [], - 'orderBy': [], - 'limit': 100 + fields: [], + predicates: [], + orderBy: [], + aggregation: [], + limit: 100 } } @@ -36,24 +37,25 @@ export namespace ConseilQueryBuilder { * @param operation Operation to apply. ConseilOperator.IN requires two or more values, ConseilOperator.BETWEEN is inclusive and requires two values, all other operators require at least one value. * @param values Set of values to operate on. * @param invert Set inverse, default is false. This is equivalent to matching inside the set of values as in SQL IN command. Setting inverse true is interpreted as NOT IN. + * @param group Set a group, default is undefined. Grouped predicates are OR'ed together. */ - export function addPredicate(query: ConseilQuery, field: string, operation: ConseilOperator, values: any[], invert: boolean = false): ConseilQuery { + export function addPredicate(query: ConseilQuery, field: string, operation: ConseilOperator, values: any[], invert: boolean = false, group: string | undefined = undefined): ConseilQuery { if (operation === ConseilOperator.BETWEEN && values.length !== 2) { throw new Error('BETWEEN operation requires a list of two values.'); } else if (operation === ConseilOperator.IN && values.length < 2) { throw new Error('IN operation requires a list of two or more values.'); - } else if (values.length !== 1 && operation !== ConseilOperator.IN && operation !== ConseilOperator.BETWEEN) { + } else if (values.length !== 1 && operation !== ConseilOperator.IN && operation !== ConseilOperator.BETWEEN && operation !== ConseilOperator.ISNULL) { throw new Error(`invalid values list for ${operation}.`); } let q = {...query}; - q.predicates.push({ field, operation, set: values, inverse: invert }); + q.predicates.push({ field, operation, set: values, inverse: invert, group }); return q; } /** - * Appends an ordering instructionc to the query. Ordering is possible on fields that are not part of the result set. A new query object is returned. + * Appends an ordering instruction to the query. Ordering is possible on fields that are not part of the result set. A new query object is returned. * * @param query Source query. * @param field Field name to order by. @@ -99,14 +101,14 @@ export namespace ConseilQueryBuilder { * Add an aggregation function on a field that is already part of the selection. * * @param query Source query. - * @param limit Output type, 'json' (default), or 'csv'. + * @param field Field to aggregate. + * @param {ConseilFunction} aggregationFunction Aggregation function to apply, not that not all functions are applicable to all fields, depending on data type. */ export function addAggregationFunction(query: ConseilQuery, field: string, aggregationFunction: ConseilFunction): ConseilQuery { if (!query.fields.includes(field)) { throw new Error('Cannot apply an aggregation function on a field not being returned.'); } - if (query.fields.length === 1) { throw new Error('Cannot apply an aggregation function on the only field being returned.'); } - + let q = {...query}; - q.aggregation = { 'field': field, 'function': aggregationFunction }; + q.aggregation.push({ 'field': field, 'function': aggregationFunction }); return q; } diff --git a/ConseilJS-core/src/reporting/tezos/TezosConseilClient.ts b/ConseilJS-core/src/reporting/tezos/TezosConseilClient.ts new file mode 100644 index 00000000..58ae3213 --- /dev/null +++ b/ConseilJS-core/src/reporting/tezos/TezosConseilClient.ts @@ -0,0 +1,373 @@ +import { ConseilQueryBuilder } from "../ConseilQueryBuilder"; +import { ConseilQuery, ConseilOperator, ConseilServerInfo, ConseilSortDirection } from "../../types/conseil/QueryTypes" +import { ConseilDataClient } from "../ConseilDataClient"; +import { OperationKindType } from "../../types/tezos/TezosChainTypes"; +import { ContractMapDetails, ContractMapDetailsItem } from '../../types/conseil/ConseilTezosTypes'; + +/** + * Functions for querying the Conseil backend REST API v2 for Tezos chain data. + */ +export namespace TezosConseilClient { + const BLOCKS = 'blocks'; + const ACCOUNTS = 'accounts'; + const OPERATION_GROUPS = 'operation_groups'; + const OPERATIONS = 'operations'; + const FEES = 'fees'; + const PROPOSALS = 'proposals'; + const BAKERS = 'bakers'; + const BALLOTS = 'ballots'; + + /** + * Returns a record set for a specific entity of the Tezos platform. Entity list and metadata can be retrieved using ConseilMetadataClient. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param entity Entity to retrieve. + * @param query Query to submit. + */ + export async function getTezosEntityData(serverInfo: ConseilServerInfo, network: string, entity: string, query: ConseilQuery): Promise { + return ConseilDataClient.executeEntityQuery(serverInfo, 'tezos', network, entity, query); + } + + /** + * Get the head block from the Tezos platform given a network. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + */ + export async function getBlockHead(serverInfo: ConseilServerInfo, network: string): Promise { + const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addOrdering(ConseilQueryBuilder.blankQuery(), 'level', ConseilSortDirection.DESC), 1); + + const r = await getTezosEntityData(serverInfo, network, BLOCKS, query); + return r[0]; + } + + /** + * Get a block by hash from the Tezos platform given a network. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param hash Block hash to query for. + */ + export async function getBlock(serverInfo: ConseilServerInfo, network: string, hash: string): Promise { + if (hash === 'head') { return getBlockHead(serverInfo, network); } + + const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'hash', ConseilOperator.EQ, [hash], false), 1); + + const r = await getTezosEntityData(serverInfo, network, BLOCKS, query); + return r[0]; + } + + /** + * Get a block by hash from the Tezos platform given a network. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param {number} level Block level to query for. + */ + export async function getBlockByLevel(serverInfo: ConseilServerInfo, network: string, level: number): Promise { + const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'level', ConseilOperator.EQ, [level], false), 1); + + const r = await getTezosEntityData(serverInfo, network, BLOCKS, query); + return r[0]; + } + + /** + * Get an account from the Tezos platform given a network by account id. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param accountID Account hash to query for. + */ + export async function getAccount(serverInfo: ConseilServerInfo, network: string, accountID: string): Promise { + const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'account_id', ConseilOperator.EQ, [accountID], false), 1); + + const r = await getTezosEntityData(serverInfo, network, ACCOUNTS, query); + return r[0]; + } + + /** + * Get an operation group from the Tezos platform given a network, by id. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param operationGroupID Operation group hash to query for. + */ + export async function getOperationGroup(serverInfo: ConseilServerInfo, network: string, operationGroupID: string): Promise { + const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'hash', ConseilOperator.EQ, [operationGroupID], false), 1); + + const r = await getTezosEntityData(serverInfo, network, OPERATION_GROUPS, query); + return r[0]; + } + + /** + * Get an operation from the Tezos platform given a network, by id. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param operationGroupID Operation group hash to query for. + */ + export async function getOperation(serverInfo: ConseilServerInfo, network: string, operationGroupID: string): Promise { + const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'operation_group_hash', ConseilOperator.EQ, [operationGroupID], false), 1); + + const r = await getTezosEntityData(serverInfo, network, OPERATIONS, query); + return r[0]; + } + + /** + * Request block-entity data for a given network. Rather than simply requesting a block by hash, this function allows modification of the response to contain a subset of block attributes subject to a filter on some of them. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param query Conseil JSON query. See reference. + * + * @see [Conseil Query Format Spec]{@link https://github.com/Cryptonomic/Conseil/blob/master/docs/README.md#tezos-chain-data-query} + */ + export async function getBlocks(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { + return getTezosEntityData(serverInfo, network, BLOCKS, query) + } + + /** + * Request account-entity data for a given network. Rather than simply requesting an account by hash, this function allows modification of the response to contain a subset of account attributes subject to a filter on some of them. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param query Conseil JSON query. See reference. + * + * @see [Conseil Query Format Spec]{@link https://github.com/Cryptonomic/Conseil/blob/master/docs/README.md#tezos-chain-data-query} + */ + export async function getAccounts(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { + return getTezosEntityData(serverInfo, network, ACCOUNTS, query) + } + + /** + * Request operation group-entity data for a given network. Rather than simply requesting an operation group by hash, this function allows modification of the response to contain a subset of operation group attributes subject to a filter on some of them. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param query Conseil JSON query. See reference. + * + * @see [Conseil Query Format Spec]{@link https://github.com/Cryptonomic/Conseil/blob/master/docs/README.md#tezos-chain-data-query} + */ + export async function getOperationGroups(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { + return getTezosEntityData(serverInfo, network, OPERATION_GROUPS, query) + } + + /** + * Request operation-entity data for a given network. This function allows modification of the response to contain a subset of operation attributes subject to a filter on some of them. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param query Conseil JSON query. See reference. + * + * @see [Conseil Query Format Spec]{@link https://github.com/Cryptonomic/Conseil/blob/master/docs/README.md#tezos-chain-data-query} + */ + export async function getOperations(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { + return getTezosEntityData(serverInfo, network, OPERATIONS, query); + } + + /** + * Request pre-computed fee statistics for operation fees by operation kind. The query returns the latest record. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param operationType Tezos operation kind + */ + export async function getFeeStatistics(serverInfo: ConseilServerInfo, network: string, operationType: OperationKindType) { + let query = ConseilQueryBuilder.blankQuery(); + query = ConseilQueryBuilder.addPredicate(query, 'kind', ConseilOperator.EQ, [operationType]); + query = ConseilQueryBuilder.addOrdering(query, 'timestamp', ConseilSortDirection.DESC); + query = ConseilQueryBuilder.setLimit(query, 1); + + return getTezosEntityData(serverInfo, network, FEES, query); + } + + export async function getProposals(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { + return getTezosEntityData(serverInfo, network, PROPOSALS, query); + } + + export async function getBakers(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { + return getTezosEntityData(serverInfo, network, BAKERS, query); + } + + export async function getBallots(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { + return getTezosEntityData(serverInfo, network, BALLOTS, query); + } + + /** + * Wait for the operation with the provided `hash` to appear on the chain for up to `duration` blocks. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param {string} hash Operation group hash of interest. + * @param {number} duration Number of blocks to wait. + * @param {number} blocktime Expected number of seconds between blocks. + * + * @returns Operation record + */ + export async function awaitOperationConfirmation(serverInfo: ConseilServerInfo, network: string, hash: string, duration: number, blocktime: number = 60): Promise { + if (duration <= 0) { throw new Error('Invalid duration'); } + const initialLevel = (await getBlockHead(serverInfo, network))['level']; + let currentLevel = initialLevel; + let operationQuery = ConseilQueryBuilder.blankQuery(); + operationQuery = ConseilQueryBuilder.addPredicate(operationQuery , 'operation_group_hash', ConseilOperator.EQ, [hash], false); + operationQuery = ConseilQueryBuilder.addPredicate(operationQuery , 'timestamp', ConseilOperator.AFTER, [(new Date).getTime() - 60000], false); + operationQuery = ConseilQueryBuilder.setLimit(operationQuery, 1); + + while (initialLevel + duration > currentLevel) { + const group = await getOperations(serverInfo, network, operationQuery); + if (group.length > 0) { return group[0]; } + currentLevel = (await getBlockHead(serverInfo, network))['level']; + if (initialLevel + duration < currentLevel) { break; } + await new Promise(resolve => setTimeout(resolve, blocktime * 1000)); + } + + throw new Error(`Did not observe ${hash} on ${network} in ${duration} block${duration > 1 ? 's' : ''} since ${initialLevel}`); + } + + /** + * Wait for the operation with the provided `hash` to appear on the chain for up to `duration` blocks. Then wait for an additional `depth` blocks to ensure that a fork has not occurred. + * + * @param serverInfo Conseil server connection definition. + * @param network Tezos network to query, mainnet, alphanet, etc. + * @param {string} hash Operation group hash of interest. + * @param {number} duration Number of blocks to wait. + * @param {number} depth Number of blocks to skip for fork validation. + * + * @returns `true` if the chain ids match between the original operation block and the current head, false otherwise. + */ + export async function awaitOperationForkConfirmation(serverInfo: ConseilServerInfo, network: string, hash: string, duration: number, depth: number): Promise { + const op = await awaitOperationConfirmation(serverInfo, network, hash, duration); + const initialLevel: number = op['block_level']; + const initialHash: string = op['block_hash']; + let currentLevel = initialLevel; + + await new Promise(resolve => setTimeout(resolve, depth * 50 * 1000)); + + while (currentLevel < initialLevel + depth) { + const currentBlock = await getBlockHead(serverInfo, network); + currentLevel = currentBlock['level']; + if (currentLevel >= initialLevel + depth) { break; } + await new Promise(resolve => setTimeout(resolve, 60 * 1000)); + } + + let blockSequenceQuery = ConseilQueryBuilder.blankQuery(); + blockSequenceQuery = ConseilQueryBuilder.addFields(blockSequenceQuery, 'level', 'hash', 'predecessor'); + blockSequenceQuery = ConseilQueryBuilder.addPredicate(blockSequenceQuery, 'level', ConseilOperator.BETWEEN, [initialLevel - 1, initialLevel + depth]); + blockSequenceQuery = ConseilQueryBuilder.setLimit(blockSequenceQuery, depth * 2); + const blockSequenceResult = await getBlocks(serverInfo, network, blockSequenceQuery); + + if (blockSequenceResult.length === depth + 2) { + return fastBlockContinuity(blockSequenceResult, initialLevel, initialHash); + } else { + return slowBlockContinuity(blockSequenceResult, initialLevel, initialHash, depth); + } + } + + /** + * Returns big_map data for a given contract if any is available. + * + * @param serverInfo Conseil server connection definition. + * @param accountID Account hash to query for. + */ + export async function getBigMapData(serverInfo: ConseilServerInfo, accountID: string): Promise { + if (!accountID.startsWith('KT1')) { throw new Error('Invalid address'); } + + const ownerQuery = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addFields(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'account_id', ConseilOperator.EQ, [accountID], false), 'big_map_id'), 100); + const ownerResult = await getTezosEntityData(serverInfo, serverInfo.network, 'originated_account_maps', ownerQuery); + + if (ownerResult.length < 1) { return undefined; } + + const definitionQuery = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'big_map_id', (ownerResult.length > 1 ? ConseilOperator.IN : ConseilOperator.EQ), ownerResult.map(r => r.big_map_id), false), 100); + const definitionResult = await getTezosEntityData(serverInfo, serverInfo.network, 'big_maps', definitionQuery); + + const contentQuery = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addFields(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'big_map_id', (ownerResult.length > 1 ? ConseilOperator.IN : ConseilOperator.EQ), ownerResult.map(r => r.big_map_id), false), 'big_map_id', 'key', 'value'), 1000); + const contentResult = await getTezosEntityData(serverInfo, serverInfo.network, 'big_map_contents', contentQuery); + + let maps: ContractMapDetailsItem[] = []; + for (const d of definitionResult) { + const definition = { index: Number(d['big_map_id']), key: d['key_type'], value: d['value_type'] }; + + let content: { key: string, value: string }[] = []; + for(const c of contentResult.filter(r => r['big_map_id'] === definition.index)) { + content.push({ key: JSON.stringify(c['key']), value: JSON.stringify(c['value'])}); + } + + maps.push({definition, content}); + } + + return { contract: accountID, maps }; + } + + /** + * Confirms that the specified operation was recorded on a continuous block sequence starting with the level below the block where + * it appeared through the end of the sequence from `awaitOperationForkConfirmation()` with the depth that was called with. This method is + * useful when the sequence of blocks retrieved by `awaitOperationForkConfirmation()` is the expected length, meaning `depth + 2`. + * + * Note, this is not an absolute guarantee that this operation is not part of a longer fork; just that the predecessor of each block + * at position `n` matches the hash of the block preceding it. + */ + function fastBlockContinuity(blocks, initialLevel: number, initialHash: string): boolean { + try { + return blocks.sort((a, b) => parseInt(a['level']) - parseInt(b['level'])).reduce((a, c, i) => { + if (!a) { throw new Error('Block sequence mismatch'); } + + if (i > 1) { + return c['predecessor'] === blocks[i - 1]['hash']; + } + + if (i === 1) { + return a && c['level'] === initialLevel + && c['hash'] === initialHash + && c['predecessor'] === blocks[i - 1]['hash']; + } + + if (i === 0) { + return true; + } + }, true); + } catch { + return false; + } + } + + /** + * Compared to `fastBlockContinuity()`, this method performs more sophisticated validation on the block sequence. This function is + * useful where `awaitOperationForkConfirmation()` receives a longer sequence of blocks than expected, more than `depth + 2`. In this + * case it's necessary to reconstruct a sequence from the provided blocks where of each block at position `n` matches the hash of + * the block preceding it with the expectation that there will be at least one instance of a duplicate level. + */ + function slowBlockContinuity(blocks, initialLevel: number, initialHash: string, depth: number): boolean { + throw new Error('Not implemented'); // TODO + } + + /** + * Returns an entity query for the given ID. Positive numbers are interpreted as block level, strings starting with B as block hashes, strings starting with 'o' as operation group hashes, strings starting with 'tz1', 'tz2', 'tz3' or 'KT1' as account hashes. + * + * @param id + * @returns {{entity: string, query: ConseilQuery}} entity, query pair + */ + export function getEntityQueryForId(id: string | number): { entity: string, query: ConseilQuery } { + let q = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.blankQuery(), 1); + + if (typeof id === 'number') { + const n = Number(id); + if (n < 0) { throw new Error('Invalid numeric id parameter'); } + + return { entity: BLOCKS, query: ConseilQueryBuilder.addPredicate(q, 'level', ConseilOperator.EQ, [id], false) }; + } else if (typeof id === 'string') { + const s = String(id); + + if (s.startsWith('tz1') || s.startsWith('tz2') || s.startsWith('tz3') || s.startsWith('KT1')) { + return { entity: ACCOUNTS, query: ConseilQueryBuilder.addPredicate(q, 'account_id', ConseilOperator.EQ, [id], false) }; + } else if (s.startsWith('B')) { + return { entity: BLOCKS, query: ConseilQueryBuilder.addPredicate(q, 'hash', ConseilOperator.EQ, [id], false) }; + } else if (s.startsWith('o')) { + q = ConseilQueryBuilder.setLimit(q, 1000); + return { entity: OPERATIONS, query: ConseilQueryBuilder.addPredicate(q, 'operation_group_hash', ConseilOperator.EQ, [id], false) }; + } + } + + throw new Error('Invalid id parameter'); + } +} diff --git a/ConseilJS-core/src/types/ErrorTypes.ts b/ConseilJS-core/src/types/ErrorTypes.ts new file mode 100644 index 00000000..a93a659a --- /dev/null +++ b/ConseilJS-core/src/types/ErrorTypes.ts @@ -0,0 +1,40 @@ + +/** + * Object to store details of an HTTP request failure. This would describe an error generated after sending a request, things that didn't result in a 200, or similarly "ok" status code. + */ +export class ServiceRequestError extends Error { + httpStatus: number; + httpMessage: string; + serverURL: string; + data: string | null; + + constructor(httpStatus: number, httpMessage: string, serverURL: string, data: string | null){ + super(); + + this.httpStatus = httpStatus; + this.httpMessage = httpMessage; + this.serverURL = serverURL; + this.data = data; + } +} + +/** + * A container for response failures. Meaning a response was sent by the server, but there was some issue processing it after it was received. + */ +export class ServiceResponseError extends Error { + httpStatus: number; + httpMessage: string; + serverURL: string; + data: string | null; + response: any; + + constructor(httpStatus: number, httpMessage: string, serverURL: string, data: string | null, response: any){ + super(); + + this.httpStatus = httpStatus; + this.httpMessage = httpMessage; + this.serverURL = serverURL; + this.data = data; + this.response = response; + } +} diff --git a/ConseilJS-core/src/types/ExternalInterfaces.ts b/ConseilJS-core/src/types/ExternalInterfaces.ts new file mode 100644 index 00000000..d3107ec1 --- /dev/null +++ b/ConseilJS-core/src/types/ExternalInterfaces.ts @@ -0,0 +1,26 @@ +export interface Signer { + sign: (bytes: Buffer) => Promise; + signText: (message: string) => Promise; +} + +export interface KeyStore { + publicKey: string; + secretKey: string; + publicKeyHash: string; + curve: KeyStoreCurve; + storeType: KeyStoreType; + seed?: string; + derivationPath?: string; +} + +export enum KeyStoreType { + Mnemonic, + Fundraiser, + Hardware +} + +export enum KeyStoreCurve { + ED25519, + SECP256K1, + SECP256R1 +} diff --git a/ConseilJS-core/src/types/conseil/ConseilErrorTypes.ts b/ConseilJS-core/src/types/conseil/ConseilErrorTypes.ts new file mode 100644 index 00000000..ba47eb01 --- /dev/null +++ b/ConseilJS-core/src/types/conseil/ConseilErrorTypes.ts @@ -0,0 +1,32 @@ +import { ServiceRequestError, ServiceResponseError } from '../ErrorTypes' +import { ConseilQuery } from './QueryTypes'; + +/** + * A specialization of ServiceRequestError for Conseil service requests. + */ +export class ConseilRequestError extends ServiceRequestError { + conseilQuery: ConseilQuery | null; + + constructor(httpStatus: number, httpMessage: string, serverURL: string, conseilQuery: ConseilQuery | null){ + super(httpStatus, httpMessage, serverURL, null); + + this.conseilQuery = conseilQuery; + } + + toString() { + return `ConseilRequestError for ${this.serverURL} with ${this.httpStatus} and ${this.httpMessage}`; + } +} + +/** + * A specialization of ServiceResponseError for Conseil services. + */ +export class ConseilResponseError extends ServiceResponseError { + conseilQuery: ConseilQuery | null; + + constructor(httpStatus: number, httpMessage: string, serverURL: string, conseilQuery: ConseilQuery | null, response: any){ + super(httpStatus, httpMessage, serverURL, null, response); + + this.conseilQuery = conseilQuery; + } +} diff --git a/src/types/conseil/ConseilTezosTypes.ts b/ConseilJS-core/src/types/conseil/ConseilTezosTypes.ts similarity index 87% rename from src/types/conseil/ConseilTezosTypes.ts rename to ConseilJS-core/src/types/conseil/ConseilTezosTypes.ts index b1dc5bc8..726d941e 100644 --- a/src/types/conseil/ConseilTezosTypes.ts +++ b/ConseilJS-core/src/types/conseil/ConseilTezosTypes.ts @@ -43,8 +43,7 @@ export interface TezosOperation { source: string, amount: string, destination: string, - managerPubkey: string, //mainnet, aplhanet - //manager_pubkey: string, //zeronet + manager_pubkey: string, balance: string, delegate: string, operationGroupHash: string, @@ -107,3 +106,17 @@ export interface AppliedOperation { id: string, contract: string } + +export interface ContractMapDetails { + contract: string, + maps: ContractMapDetailsItem[] +} + +export interface ContractMapDetailsItem { + definition: { + index: number, + key: string, + value: string + }, + content: { key: string, value: string }[] +} diff --git a/ConseilJS-core/src/types/conseil/MetadataTypes.ts b/ConseilJS-core/src/types/conseil/MetadataTypes.ts new file mode 100644 index 00000000..bea85002 --- /dev/null +++ b/ConseilJS-core/src/types/conseil/MetadataTypes.ts @@ -0,0 +1,74 @@ +export interface PlatformDefinition { + name: string, + displayName: string +} + +export interface NetworkDefinition { + name: string, + displayName: string, + platform: string, + network: string +} + +export interface EntityDefinition { + name: string, + displayName: string, + displayNamePlural: string, + count: number, + network: string +} + +/** + * + */ +export interface AttributeDefinition { + /** + * + */ + name: string; + displayName: string; + dataType: AttrbuteDataType; + cardinality: number; + keyType: AttrbuteKeyType; + entity: string; + dataFormat: string; + visible: boolean; + scale?: number; + description?: string; + placeholder?: string; + reference?: AttributeReference; + displayOrder?: number; + displayPriority?: number; + currencySymbol?: string; + currencySymbolCode?: number; + cacheConfig?: AttributeCacheConfig; + valueMap?: Record +} + +export interface AttributeReference { + entity: string, + key: string +} + +export interface AttributeCacheConfig { + cached: boolean; + minMatchLength: number; + maxResultSize: number; +} + +export enum AttrbuteDataType { + STRING = 'String', + INT = 'Int', + DECIMAL = 'Decimal', + BOOLEAN = 'Boolean', + ACCOUNT_ADDRESS = 'AccountAddress', + HASH = 'Hash', + DATETIME = 'DateTime', + CURRENCY = 'Currency' +} + +export enum AttrbuteKeyType { + PRIMARYKEY = 'PrimaryKey', + UNIQUEKEY = 'UniqueKey', + NONKEY = 'NonKey' +} diff --git a/src/types/conseil/QueryTypes.ts b/ConseilJS-core/src/types/conseil/QueryTypes.ts similarity index 79% rename from src/types/conseil/QueryTypes.ts rename to ConseilJS-core/src/types/conseil/QueryTypes.ts index 1d71aa31..add0cffe 100644 --- a/src/types/conseil/QueryTypes.ts +++ b/ConseilJS-core/src/types/conseil/QueryTypes.ts @@ -1,6 +1,7 @@ export interface ConseilServerInfo { url: string; apiKey: string; + network: string; } export enum ConseilSortDirection { @@ -41,10 +42,11 @@ export interface ConseilOrdering { } export interface ConseilPredicate { - field: string, - operation: ConseilOperator, - set: any[], - inverse: boolean + field: string; + operation: ConseilOperator; + set: any[]; + inverse: boolean; + group?: string; } export interface ConseilQuery { @@ -52,6 +54,11 @@ export interface ConseilQuery { predicates: ConseilPredicate[]; orderBy: ConseilOrdering[]; limit: number; - aggregation?: any; + aggregation: ConseilAggregation[]; output?: string; } + +export interface ConseilAggregation { + field: string, + function: ConseilFunction +} \ No newline at end of file diff --git a/ConseilJS-core/src/types/tezos/ContractIntrospectionTypes.ts b/ConseilJS-core/src/types/tezos/ContractIntrospectionTypes.ts new file mode 100644 index 00000000..54a3c66f --- /dev/null +++ b/ConseilJS-core/src/types/tezos/ContractIntrospectionTypes.ts @@ -0,0 +1,15 @@ +export interface Parameter { + type: string; + name?: string; + optional?: boolean; + constituentType?: string; +} + +export interface EntryPoint { + name?: string; + parameters: Parameter[]; + structure: string; + generateInvocationString(...vars: any[]): string; + generateInvocationPair(...vars: any[]): { entrypoint: string, parameters: any }; + generateSampleInvocation(): string; +} \ No newline at end of file diff --git a/ConseilJS-core/src/types/tezos/TezosChainTypes.ts b/ConseilJS-core/src/types/tezos/TezosChainTypes.ts new file mode 100644 index 00000000..ff3748ee --- /dev/null +++ b/ConseilJS-core/src/types/tezos/TezosChainTypes.ts @@ -0,0 +1,62 @@ +/** + * Types used to process data returned from the Tezos node. + */ + +export interface AlphaOperationResult { + status: string, + originated_contracts: string[] + errors: string[] +} + +export interface AlphaOperationContentsAndResult { + kind: string, + metadata: AlphaOperationResult +} + +export interface AlphaOperationsWithMetadata { + contents: AlphaOperationContentsAndResult[], + signature: string, + kind: string, //only if error + id: string, //only if error + contract: string //only if error +} + +export interface InjectedOperation { + injectedOperation: string +} + +/** + * Output of operation signing. + */ +export interface SignedOperationGroup { + bytes: Buffer; + signature: string; +} + +/** + * Result of a successfully sent operation + */ +export interface OperationResult { + results: AlphaOperationsWithMetadata; + operationGroupID: string; +} + +export enum OperationKindType { + SeedNonceRevelation = 'seed_nonce_revelation', + Delegation = 'delegation', + Transaction = 'transaction', + AccountActivation = 'activate_account', + Origination = 'origination', + Reveal = 'reveal', + Endorsement = "endorsement", + Ballot = 'ballot', + DoubleEndorsementEvidence = 'double_endorsement_evidence', + DoubleBakingEvidence = 'double_baking_evidence', + Proposal = 'proposals' +} + +export enum TezosParameterFormat { + Michelson = "michelson", + Micheline = "micheline", + MichelsonLambda = "michelsonlambda" +} diff --git a/ConseilJS-core/src/types/tezos/TezosConstants.ts b/ConseilJS-core/src/types/tezos/TezosConstants.ts new file mode 100644 index 00000000..dc5b6eb5 --- /dev/null +++ b/ConseilJS-core/src/types/tezos/TezosConstants.ts @@ -0,0 +1,25 @@ +export namespace TezosConstants { + export const OperationGroupWatermark = '03'; + export const DefaultTransactionStorageLimit = 496; // 300, carthage?! + export const DefaultTransactionGasLimit = 10600; + export const DefaultDelegationStorageLimit = 0; + export const DefaultDelegationGasLimit = 10000; + export const DefaultAccountOriginationStorageLimit = 496; // 277 + export const DefaultAccountOriginationGasLimit = 10600; + export const DefaultAccountOriginationFee = 1266; + export const DefaultKeyRevealFee = 1270; + export const DefaultDelegationFee = 1258; + export const P005ManagerContractWithdrawalGasLimit = 26283; + export const P005ManagerContractDepositGasLimit = 15285; + export const P005ManagerContractWithdrawalStorageLimit = 496; // 300 + + /** + * Outbound operation queue timeout in seconds. After this period, TezosOperationQueue will attempt to submit the transactions currently in queue. + */ + export const DefaultBatchDelay = 25; + + /** + * Mainnet block time in seconds. + */ + export const DefaultBlockTime = 60; +} diff --git a/ConseilJS-core/src/types/tezos/TezosErrorTypes.ts b/ConseilJS-core/src/types/tezos/TezosErrorTypes.ts new file mode 100644 index 00000000..5dc79ef1 --- /dev/null +++ b/ConseilJS-core/src/types/tezos/TezosErrorTypes.ts @@ -0,0 +1,53 @@ +import { ServiceRequestError, ServiceResponseError } from '../ErrorTypes' + +/** + * A specialization of ServiceRequestError for Tezos service requests. + */ +export class TezosRequestError extends ServiceRequestError { + requestBody: string | null; + + constructor(httpStatus: number, httpMessage: string, serverURL: string, requestBody: string | null){ + super(httpStatus, httpMessage, serverURL, null); + + this.requestBody = requestBody; + } + + toString() { + return `TezosRequestError for ${this.serverURL} with ${this.httpStatus} and ${this.httpMessage}`; + } +} + +/** + * A specialization of ServiceResponseError for Tezos services. + */ +export class TezosResponseError extends ServiceResponseError { + requestBody: string | null; + kind: TezosResponseErrorKind; + + constructor(httpStatus: number, httpMessage: string, serverURL: string, requestBody: string | null, response: any, kind: TezosResponseErrorKind){ + super(httpStatus, httpMessage, serverURL, null, response); + + this.kind = kind; + this.requestBody = requestBody; + } +} + +/** + * + */ +export enum TezosResponseErrorKind { + /** + * The response is text + */ + TEXT = 'Text', + /** + * The response is an array of objects containing `kind` and `id` properties. + */ + JSONTYPE1 = 'JSONType1', + /** + * The response is an object with a `contents` array and a `signature` property. Elements inside `contents` + * then have an internal structure with `['metadata']['operation_result']['status']` and + * `['metadata']['operation_result']['errors']`. + */ + JSONTYPE2 = 'JSONType2' +} diff --git a/ConseilJS-core/src/types/tezos/TezosP2PMessageTypes.ts b/ConseilJS-core/src/types/tezos/TezosP2PMessageTypes.ts new file mode 100644 index 00000000..fdb79ef8 --- /dev/null +++ b/ConseilJS-core/src/types/tezos/TezosP2PMessageTypes.ts @@ -0,0 +1,79 @@ +/** + * Type definitions for messages that can be forged with the RPC service + */ + +export interface Activation { + kind: string; // activate_account + pkh: string; + secret: string; +} + +export interface Ballot { + kind: string; + source: string; + period: number; + proposal: string; + vote: BallotVote; +} + +export enum BallotVote { + Yay = 0, + Nay = 1, + Pass = 2 +} + +export interface Transaction { + kind: string, + source: string, + fee: string, + counter: string, + gas_limit: string, + storage_limit: string, + amount: string, + destination: string, + parameters?: ContractParameters | string; +} + +export interface Delegation { + kind: string, + source: string, + fee: string, + counter: string, + gas_limit: string, + storage_limit: string, + delegate?: string; +} + +export interface Reveal { + kind: string; + source: string; + fee: string; + counter: string; + gas_limit: string; + storage_limit: string; + public_key: string; +} + +export interface Origination { + kind: string; + source: string; + fee: string; + counter: string; + gas_limit: string; + storage_limit: string; + manager_pubkey?: string; // deprecated in P005 + balance: string; + spendable?: boolean; // deprecated in P005 + delegatable?: boolean; // deprecated in P005 + delegate?: string; + script?: any; +} + +export interface ContractParameters { + entrypoint: string; + value: any; +} + +export type Operation = Activation | Ballot | Transaction | Delegation | Reveal | Origination; + +export type StackableOperation = Transaction | Delegation | Origination; diff --git a/ConseilJS-core/src/types/tezos/TezosRPCResponseTypes.ts b/ConseilJS-core/src/types/tezos/TezosRPCResponseTypes.ts new file mode 100644 index 00000000..9e01872a --- /dev/null +++ b/ConseilJS-core/src/types/tezos/TezosRPCResponseTypes.ts @@ -0,0 +1,133 @@ +/** + * Type definitions for objects coming back from Tezos RPC calls. + */ + +/** + * Response for chains//blocks/ + */ +export interface TezosBlock { + protocol: string; + chain_id: string; + hash: string; + header: TezosBlockHeader; + metadata: TezosBlockMetadata; + operations: TezosBlockOperationEnvelope[][]; +} + +export interface TezosBlockHeader { + level: number; + proto: number; + predecessor: string; + timestamp: string; + validation_pass: number; + operations_hash: string; + fitness: string[]; + context: string; + priority: number; + proof_of_work_nonce: string; + signature: string; +} + +export interface TezosBlockMetadata { + protocol: string, + next_protocol: string, + test_chain_status: { status: string }; + max_operations_ttl: number; + max_operation_data_length: number; + max_block_header_length: number; + max_operation_list_length: TezosBlockMetadataOperationListMax[]; + baker: string; + level: TezosBlockMetadataLevel; + voting_period_kind: string; + nonce_hash: string | null; + consumed_gas: string; + deactivated: any[]; + balance_updates: TezosBlockMetadataBalanceUpdate[]; +} + +export interface TezosBlockMetadataOperationListMax { + max_size: number; + max_op?: number; +} + +export interface TezosBlockMetadataLevel { + level: number; + level_position: number; + cycle: number; + cycle_position: number; + voting_period: number; + voting_period_position: number; + expected_commitment: boolean; +} + +export interface TezosBlockMetadataBalanceUpdate { + kind: string; + change: string; + contract?: string; + category?: string; + delegate?: string; + cycle?: number; +} + +export interface TezosBlockOperationEnvelope { + protocol: string; + chain_id: string; + hash: string; + branch: string; + contents: TezosBlockOperationContent[]; + signature: string; +} + +export interface TezosBlockOperationContent { + kind: string; + metadata: TezosBlockOperationContentMetadata; + + // endorsement + level?: number; + + // transaction + source?: string; + fee?: string; + counter?: string; + gas_limit?: string; + storage_limit?: string; + amount?: string; + destination?: string; +} + +export interface TezosBlockOperationContentMetadata { + balance_updates: TezosBlockOperationContentMetadataBalanceUpdate[]; + delegate?: string; + slots?: number[]; + operation_result?: TezosBlockOperationContentMetadataOperationResult; +} + +export interface TezosBlockOperationContentMetadataBalanceUpdate { + kind: string; + change: string; + contract?: string; + category?: string, + delegate?: string, + cycle?: number; +} + +export interface TezosBlockOperationContentMetadataOperationResult { + status: string + balance_updates: TezosBlockOperationContentMetadataBalanceUpdate[]; + consumed_gas: string; +} + +/** + * Response for chains//blocks//context/contracts/ + */ +export interface Contract { + balance: string; + delegate?: ContractDelegate; + script?: any; + counter: string; +} + +export interface ContractDelegate { + setable: boolean, + value: string +} diff --git a/src/utils/FetchSelector.ts b/ConseilJS-core/src/utils/FetchSelector.ts similarity index 54% rename from src/utils/FetchSelector.ts rename to ConseilJS-core/src/utils/FetchSelector.ts index 58fd595b..853cd01f 100644 --- a/src/utils/FetchSelector.ts +++ b/ConseilJS-core/src/utils/FetchSelector.ts @@ -5,13 +5,11 @@ * implementations of fetch available. This code allows ConseilJS use the appropriate version. */ export default class FetchSelector { - static fetch: any = null; + static actualFetch: (url: string, options: any | undefined) => any; static setFetch(fetch: any) { - this.fetch = fetch; + this.actualFetch = fetch; } - static getFetch() { - return this.fetch; - } + static fetch: (url: string, options: any | undefined) => any = (url: string, options: any | undefined) => FetchSelector.actualFetch(url, options); } diff --git a/ConseilJS-core/src/utils/LoggerSelector.ts b/ConseilJS-core/src/utils/LoggerSelector.ts new file mode 100644 index 00000000..fa340a96 --- /dev/null +++ b/ConseilJS-core/src/utils/LoggerSelector.ts @@ -0,0 +1,10 @@ +/** + * + */ +export default class LoggerSelector { + static log: any = {}; + + static setLogger(log: any) { + Object.assign(this.log, log); + } +} diff --git a/test/TezosHardwareOperations.spec.ts b/ConseilJS-core/test/TezosHardwareOperations.spec.ts similarity index 86% rename from test/TezosHardwareOperations.spec.ts rename to ConseilJS-core/test/TezosHardwareOperations.spec.ts index 96ca72b2..cc31c68b 100644 --- a/test/TezosHardwareOperations.spec.ts +++ b/ConseilJS-core/test/TezosHardwareOperations.spec.ts @@ -20,13 +20,12 @@ const { unlockFundraiserIdentity } = TezosWalletUtil; const { sendKeyRevealOperation, sendTransactionOperation, - sendAccountOriginationOperation, sendDelegationOperation, } = TezosNodeWriter; const tezosURL = 'http://conseil.server'; const derivationPathIndex = 0; -const derivationPath = `44'/1729'/0'/0'/` + derivationPathIndex + `'`; +const derivationPath = `44'/1729'/0'/0'/${derivationPathIndex}'`; const ktAddress = 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM'; @@ -36,7 +35,7 @@ let keyStore1; let opIndex = 0; let testCondition = true; -describe('Ledger Test', () => { +/*describe('Ledger Test', () => { before(async () => { keyStore = await TezosLedgerWallet.unlockAddress(HardwareDeviceType.LedgerNanoS, derivationPath).catch(() => false); @@ -114,17 +113,8 @@ describe('Ledger Test', () => { expect(sendResult.operationGroupID).to.be.a('string'); })); - it('sendOriginationOperation', mochaAsync(async () => { - const bakerAddress = 'tz1db53osfzRqqgQeLtBt4kcFcQoXJwPJJ5G'; - const amount = 10000000; - const fee = 100000; - const originationResult = await sendAccountOriginationOperation(tezosURL, keyStore, amount, bakerAddress, true, true, fee, derivationPath); - expect(originationResult).to.exist; - expect(originationResult.operationGroupID).to.be.a('string'); - })); - it('sendDelegationOperation', mochaAsync(async () => { - keyStore.publicKeyHash = 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM'; + const delegator = 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM'; const bakerAddress = 'tz3gN8NTLNLJg5KRsUU47NHNVHbdhcFXjjaB'; const fee = 300000; const delegationResult = await sendDelegationOperation(tezosURL, keyStore, bakerAddress, fee, derivationPath); @@ -132,4 +122,4 @@ describe('Ledger Test', () => { expect(delegationResult).to.exist; expect(delegationResult.operationGroupID).to.be.a('string'); })); -}); +});*/ diff --git a/test/TezosOperations.responses.ts b/ConseilJS-core/test/TezosOperations.responses.ts similarity index 96% rename from test/TezosOperations.responses.ts rename to ConseilJS-core/test/TezosOperations.responses.ts index 98445486..36bdded0 100644 --- a/test/TezosOperations.responses.ts +++ b/ConseilJS-core/test/TezosOperations.responses.ts @@ -1,5 +1,3 @@ -// BLa9pmsQ5Hf6E9MSqVTHp65wNchXe8WjsGgjKeutAwmeQrd9YsT --- manager not revealed -// BLNB68pLiAgXiJHXNUK7CDKRnCx1TqzaNGsRXsASg38wNueb8bx --- manager reveal export const blockHead = { "protocol": "PsddFKi32cMJ2qPjf43Qv5GDWLDPZb3T3bF6fLKiF5HtvHNU7aP", "chain_id": "NetXgtSLGNJvNye", @@ -156,7 +154,7 @@ export const appliedOpList = [ "counter": "17284", "gas_limit": "10160", "storage_limit": "277", - "managerPubkey": "tz1LoKbFyYHTkCnj9mgRKFb9g8pP4Lr3zniP", + "manager_pubkey": "tz1LoKbFyYHTkCnj9mgRKFb9g8pP4Lr3zniP", "balance": "10000000", "delegate": "tz1db53osfzRqqgQeLtBt4kcFcQoXJwPJJ5G", "metadata": { @@ -265,6 +263,7 @@ export const injectOpList = [ 'ooZxQcA43uh8bFbY5PJfrTadTZ38RZ6PP3iDc2jF6aJFQSLXhvF', 'oooidxFJKy4iEtmCtZtYg2DibL7A5eapjYTtZ4Pf9D7THSyA5C1' ]; + export const accountMockList = [ { manager: 'tz1LoKbFyYHTkCnj9mgRKFb9g8pP4Lr3zniP', @@ -290,13 +289,8 @@ export const accountMockList = [ ]; export const managerKeyMockList = [ - { - "manager": "tz1LoKbFyYHTkCnj9mgRKFb9g8pP4Lr3zniP", - "key": "edpku88EkY42ZKGTkiWTLkz8Th977n82AJWaZrmyBcrQ1dzo26aWKp" - }, - { - "manager": "tz1fX6A2miVXjNyReg2dpt2TsXLkZ4w7zRGa" - } + 'edpkvQtuhdZQmjdjVfaY9Kf4hHfrRJYugaJErkCGvV3ER1S7XWsrrj', + 'null' ]; export const walletInfoLists = [ diff --git a/ConseilJS-core/test/TezosOperations.spec.ts b/ConseilJS-core/test/TezosOperations.spec.ts new file mode 100644 index 00000000..f5a426e8 --- /dev/null +++ b/ConseilJS-core/test/TezosOperations.spec.ts @@ -0,0 +1,147 @@ +import "mocha"; +import { expect, use } from "chai"; +import chaiAsPromised from 'chai-as-promised'; +import nock from 'nock'; + +import { TezosNodeReader, TezosWalletUtil } from "../src"; +import mochaAsync from '../test/mochaTestHelper'; +import { + blockHead, + forgedOpGroupList, + appliedOpList, + injectOpList, + accountMockList, + managerKeyMockList, + walletInfoLists +} from './TezosOperations.responses'; + +use(chaiAsPromised); + +const { unlockFundraiserIdentity } = TezosWalletUtil; + +let keyStore; +let keyStore1; +let ops; +let opIndex = 0; +const [info0, info1] = walletInfoLists; + +const ktAddress = 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM'; + +describe('Tezos Operations Test', () => { + before(mochaAsync(async () => { + keyStore = await unlockFundraiserIdentity(info0.mnemonic.join(' '), info0.email, info0.password, info0.pkh); + keyStore.storeType = 'Fundraiser'; + + keyStore1 = await unlockFundraiserIdentity(info1.mnemonic.join(' '), info1.email, info1.password, info1.pkh); + keyStore1.storeType = 'Fundraiser'; + + const nockOb = nock('http://conseil.server'); + nockOb.persist().get(`/chains/main/blocks/head`).reply(200, blockHead); + + const accountUrl = `/chains/main/blocks//context/contracts/${keyStore.publicKeyHash}`; + nockOb.get(accountUrl).reply(200, accountMockList[0]); + + const accountHeadUrl = `/chains/main/blocks/head/context/contracts/${keyStore.publicKeyHash}`; + nockOb.get(accountHeadUrl).reply(200, accountMockList[0]); + + const accountUrl1 = `/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore1.publicKeyHash}`; + nockOb.get(accountUrl1).reply(200, accountMockList[1]); + + const accountHeadUrl1 = `/chains/main/blocks/head/context/contracts/${keyStore1.publicKeyHash}`; + nockOb.get(accountHeadUrl1).reply(200, accountMockList[1]); + + const accountDelegateUrl = `/chains/main/blocks/${blockHead.hash}/context/contracts/${ktAddress}`; + nockOb.get(accountDelegateUrl).reply(200, accountMockList[2]); + + const accountMangerUrl = `/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore.publicKeyHash}/manager_key`; + nockOb.get(accountMangerUrl).reply(200, managerKeyMockList[0]); + + const nonAccountMangerUrl = `/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore1.publicKeyHash}/manager_key`; + nockOb.get(nonAccountMangerUrl).reply(200, managerKeyMockList[1]); + + const ktAccountMangerUrl = `/chains/main/blocks/${blockHead.hash}/context/contracts/${ktAddress}/manager_key`; + nockOb.get(ktAccountMangerUrl).reply(200, managerKeyMockList[0]); + })); + describe('Some Base Operations Test', () => { + before(async () => { + const activation = { + kind: 'activate_account', + pkh: keyStore.publicKeyHash, + secret: info0.secret + }; + ops = [activation]; + const nockOb1 = nock('http://conseil.server'); + nockOb1 + .persist() + .filteringRequestBody(body => '*') + .post(`/chains/main/blocks/head/helpers/forge/operations`, '*') + .reply(200, forgedOpGroupList[0]) + .post(`/chains/main/blocks/head/helpers/preapply/operations`, '*') + .reply(200, appliedOpList[0]) + .post(`/injection/operation?chain=main`, '*') + .reply(200, injectOpList[0]); + }); + + it('TezosNodeReader.getBlockHead test ---', mochaAsync(async () => { + const block = await TezosNodeReader.getBlockHead('http://conseil.server'); + expect(block).to.be.an('object'); + expect(block.hash).to.exist; + })); + + it('TezosNode.getAccountForBlock', mochaAsync(async () => { + const account = await TezosNodeReader.getAccountForBlock('http://conseil.server', blockHead.hash, keyStore.publicKeyHash); + expect(account).to.be.an('object'); + })); + + it('TezosNode.getAccountManagerForBlock', mochaAsync(async () => { + const managerKey = await TezosNodeReader.getAccountManagerForBlock('http://conseil.server', blockHead.hash, keyStore.publicKeyHash); + expect(managerKey).to.be.a('string'); + })); + + it('isManagerKeyRevealedForAccount should be true', mochaAsync(async () => { + const isManagerRevealed = await TezosNodeReader.isManagerKeyRevealedForAccount('http://conseil.server', keyStore.publicKeyHash); + expect(isManagerRevealed).to.be.true; + })); + + it('isManagerKeyRevealedForAccount should be false', mochaAsync(async () => { + const isManagerRevealed = await TezosNodeReader.isManagerKeyRevealedForAccount('http://conseil.server', keyStore1.publicKeyHash); + expect(isManagerRevealed).to.be.false; + })); + + it('isImplicitAndEmpty should be true', mochaAsync(async () => { + const isImplicit = await TezosNodeReader.isImplicitAndEmpty('http://conseil.server', keyStore1.publicKeyHash); + expect(isImplicit).to.be.true; + })); + + it('isImplicitAndEmpty should be false', mochaAsync(async () => { + const isImplicit = await TezosNodeReader.isImplicitAndEmpty('http://conseil.server', keyStore.publicKeyHash); + expect(isImplicit).to.be.false; + })); + }); + + describe('Main Operations Test', () => { + beforeEach(async () => { + const nockOb2 = nock('http://conseil.server'); + nockOb2 + .persist() + .filteringRequestBody(body => '*') + .post(`/chains/main/blocks/head/helpers/forge/operations`, '*') + .reply(200, forgedOpGroupList[opIndex]) + .post(`/chains/main/blocks/head/helpers/preapply/operations`, '*') + .reply(200, appliedOpList[opIndex]) + .post(`/injection/operation?chain=main`, '*') + .reply(200, injectOpList[opIndex]); + opIndex ++; + }); + }); + + describe('Errors Test', () => { + it('test error paths', mochaAsync(async () => { + const nockedserver = nock('http://conseil.server'); + nock.cleanAll(); + + nockedserver.get(`/chains/main/blocks/head`).reply(404, blockHead); + await expect(TezosNodeReader.getBlockHead('http://conseil.server')).to.be.rejected; + })); + }); +}); diff --git a/test/Types.spec.ts b/ConseilJS-core/test/Types.spec.ts similarity index 94% rename from test/Types.spec.ts rename to ConseilJS-core/test/Types.spec.ts index 675824cb..3367f203 100644 --- a/test/Types.spec.ts +++ b/ConseilJS-core/test/Types.spec.ts @@ -1,7 +1,7 @@ import "mocha"; import { expect, use} from "chai"; -import {ConseilRequestError, ConseilResponseError} from '../src/types/conseil/ErrorTypes'; +import {ConseilRequestError, ConseilResponseError} from '../src/types/conseil/ConseilErrorTypes'; describe('ErrorTypes tests', () => { it('ConseilRequestError', async () => { diff --git a/ConseilJS-core/test/chain/tezos/TezosContractIntrospector.spec.ts b/ConseilJS-core/test/chain/tezos/TezosContractIntrospector.spec.ts new file mode 100644 index 00000000..ee941d10 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/TezosContractIntrospector.spec.ts @@ -0,0 +1,65 @@ +import { expect } from 'chai'; +import 'mocha'; + +import { TezosContractIntrospector } from '../../../src/chain/tezos/TezosContractIntrospector'; +import { Parameter, EntryPoint } from '../../../src/types/tezos/ContractIntrospectionTypes'; + + +describe("Generate EntryPoints From Params", () => { + it('multi-sig', async () => { // https://github.com/murbard/smart-contracts/blob/master/multisig/michelson/multisig.tz as of 2019/dec/30 + const entryPoints = await TezosContractIntrospector.generateEntryPointsFromParams(`parameter + (pair + (pair :payload + (nat %counter) # counter, used to prevent replay attacks + (or :action # payload to sign, represents the requested action + (pair :transfer # transfer tokens + (mutez %amount) # amount to transfer + (contract %dest unit)) # destination to transfer to + (or + (option %delegate key_hash) # change the delegate to this address + (pair %change_keys # change the keys controlling the multisig + (nat %threshold) # new threshold + (list %keys key))))) # new list of keys + (list %sigs (option signature))); # signatures`); + + entryPoints.forEach(e => { + console.log(formatEntryPoint(e)); + //console.log(`invocation pattern: ${e.generateInvocationString()}`); + console.log(`invocation pattern: ${e.generateSampleInvocation()}`); + }); + + expect(entryPoints.length).to.be.greaterThan(0); + }); + + /*it('generic multi-sig', async () => { // https://github.com/murbard/smart-contracts/blob/master/multisig/michelson/generic.tz as of 2019/dec/30 + const entryPoints = await TezosContractIntrospector.generateEntryPointsFromParams(`parameter + (or + (unit %default) + (pair %main + (pair :payload + (nat %counter) # counter, used to prevent replay attacks + (or :action # payload to sign, represents the requested action + (lambda %operation unit (list operation)) + (pair %change_keys # change the keys controlling the multisig + (nat %threshold) # new threshold + (list %keys key)))) # new list of keys + (list %sigs (option signature)))); # signatures`); + + entryPoints.forEach(e => { + console.log(`\n${e.name + '(' + e.parameters.map(p => p.type + ' ' + p.name).join(', ') + ')'}`) + //console.log(`invocation pattern: ${e.generateInvocationString()}`); + console.log(`invocation pattern: ${e.generateSampleInvocation()}`); + }); + + expect(entryPoints.length).to.be.greaterThan(0); + });*/ +}); + +function formatEntryPoint(e: EntryPoint) { + let s = ''; + s += !!e.name ? e.name : ''; + s += '('; + s += e.parameters.map(p => p.type + (!!p.name ? ` ${p.name}`: '')).join(', '); + s += ')'; + return s; +} diff --git a/ConseilJS-core/test/chain/tezos/TezosLanguageUtil.spec.ts b/ConseilJS-core/test/chain/tezos/TezosLanguageUtil.spec.ts new file mode 100644 index 00000000..bcdd837d --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/TezosLanguageUtil.spec.ts @@ -0,0 +1,304 @@ +import { expect } from 'chai'; +import { TezosLanguageUtil } from '../../../src/chain/tezos/TezosLanguageUtil'; +import 'mocha'; + +import * as fs from 'fs'; +import * as path from 'path'; + +describe("Tezos Micheline fragment decoding", () => { + it('Small int', () => { + let result = TezosLanguageUtil.hexToMicheline('0006'); + expect(result.code).to.equal('{ "int": "6" }'); + + result = TezosLanguageUtil.hexToMicheline('0046'); + expect(result.code).to.equal('{ "int": "-6" }'); + + result = TezosLanguageUtil.hexToMicheline('003f'); + expect(result.code).to.equal('{ "int": "63" }'); + + result = TezosLanguageUtil.hexToMicheline('007f'); + expect(result.code).to.equal('{ "int": "-63" }'); + }); + + it('Medium int', () => { + let result = TezosLanguageUtil.hexToMicheline('00a101'); + expect(result.code).to.equal('{ "int": "97" }'); + + result = TezosLanguageUtil.hexToMicheline('00ff01'); + expect(result.code).to.equal('{ "int": "-127" }'); + + result = TezosLanguageUtil.hexToMicheline('00840e'); + expect(result.code).to.equal('{ "int": "900" }'); + + result = TezosLanguageUtil.hexToMicheline('00c40e'); + expect(result.code).to.equal('{ "int": "-900" }'); + }); + + it('Large int', () => { + let result = TezosLanguageUtil.hexToMicheline('00ba9af7ea06'); + expect(result.code).to.equal('{ "int": "917431994" }'); + + result = TezosLanguageUtil.hexToMicheline('00fa9af7ea06'); + expect(result.code).to.equal('{ "int": "-917431994" }'); + + result = TezosLanguageUtil.hexToMicheline('00a1d22c'); + expect(result.code).to.equal('{ "int": "365729" }'); + + result = TezosLanguageUtil.hexToMicheline('00e1d22c'); + expect(result.code).to.equal('{ "int": "-365729" }'); + + result = TezosLanguageUtil.hexToMicheline('0080f9b9d4c723'); + expect(result.code).to.equal('{ "int": "610913435200" }'); + + result = TezosLanguageUtil.hexToMicheline('00c0f9b9d4c723'); + expect(result.code).to.equal('{ "int": "-610913435200" }'); + }); + + it('string', () => { + const result = TezosLanguageUtil.hexToMicheline('01000000096d696368656c696e65'); + expect(result.code).to.equal('{ "string": "micheline" }'); + }); + + it('empty string', () => { + const result = TezosLanguageUtil.hexToMicheline('0100000000'); + expect(result.code).to.equal('{ "string": "" }'); + }); + + it('bytes', () => { + const result = TezosLanguageUtil.hexToMicheline('0a000000080123456789abcdef'); + expect(result.code).to.equal('{ "bytes": "0123456789abcdef" }'); + }); + + it('Mixed literal value array', () => { + const result = TezosLanguageUtil.hexToMicheline('02000000210061010000000574657a6f730100000000010000000b63727970746f6e6f6d6963'); + expect(result.code).to.equal('[ { "int": "-33" }, { "string": "tezos" }, { "string": "" }, { "string": "cryptonomic" } ]'); + }); + + it('Bare primitive', () => { + const result = TezosLanguageUtil.hexToMicheline('0343'); + expect(result.code).to.equal('{ "prim": "PUSH" }'); + }); + + it('Single primitive with a single annotation', () => { + const result = TezosLanguageUtil.hexToMicheline('04430000000440636261'); + expect(result.code).to.equal('{ "prim": "PUSH", "annots": [ "@cba" ] }'); + }); + + it('Single primitive with a single argument', () => { + const result = TezosLanguageUtil.hexToMicheline('053d036d'); + expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" } ] }'); + }); + + it('Single primitive with two arguments', () => { + const result = TezosLanguageUtil.hexToMicheline('063d036d0000000440636261'); + expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" } ], "annots": [ "@cba" ] }'); + }); + + it('Single primitive with two arguments', () => { + const result = TezosLanguageUtil.hexToMicheline('073d036d036d'); + expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" } ] }'); + }); + + it('Single primitive with two arguments and annotation', () => { + const result = TezosLanguageUtil.hexToMicheline('083d036d036d0000000440636261'); + expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" } ], "annots": [ "@cba" ] }'); + }); + + it('Single primitive with more than two arguments and no annotations', () => { + const result = TezosLanguageUtil.hexToMicheline('093d00000006036d036d036d00000000'); + expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" }, { "prim": "operation" } ] }'); + }); + + it('Single primitive with more than two arguments and multiple annotations', () => { + const result = TezosLanguageUtil.hexToMicheline('093d00000006036d036d036d00000011407265642040677265656e2040626c7565'); + expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" }, { "prim": "operation" } ], "annots": [ "@red", "@green", "@blue" ] }'); + }); + + it("Various parsing and encoding failures", () => { + expect(() => TezosLanguageUtil.hexToMicheline('c0ffee')).to.throw('Unknown Micheline field type \'c0\''); + expect(() => TezosLanguageUtil.hexToMicheline('c')).to.throw('Malformed Micheline fragment \'c\''); + }); + + it('Serialize Michelson directly to hex', () => { + const contract = 'parameter (list int);\nstorage (list int);\ncode { CAR; MAP { PUSH int 1; ADD }; NIL operation; PAIR };'; // add1_list + const result = TezosLanguageUtil.translateMichelsonToHex(contract); + + expect(result).to.equal('0000001e050202000000170316053802000000080743035b00010312053d036d0342000000060501055f035b'); + }); + + it('Serialize Michelson parameters', () => { + let params = 'Pair {} (Pair "tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z" (Pair False 1000000))'; + let result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ [], { "prim": "Pair", "args": [ { "string": "tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z" }, { "prim": "Pair", "args": [ { "prim": "False" }, { "int": "1000000" } ] } ] } ] }'); + + params = 'Right (Right (Right (Right (Right (Right (Right (Right (Left (Pair "KT1DhPDy765YJwPRY8fRupSZQ3SjuxVvoUYd" 1000)))))))))'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Right", "args": [ { "prim": "Right", "args": [ { "prim": "Right", "args": [ { "prim": "Right", "args": [ { "prim": "Right", "args": [ { "prim": "Right", "args": [ { "prim": "Right", "args": [ { "prim": "Right", "args": [ { "prim": "Left", "args": [ { "prim": "Pair", "args": [ { "string": "KT1DhPDy765YJwPRY8fRupSZQ3SjuxVvoUYd" }, { "int": "1000" } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] }'); + + params = 'Left (Pair "test" 123)'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Left", "args": [ { "prim": "Pair", "args": [ { "string": "test" }, { "int": "123" } ] } ] }'); + + params = '(Pair (Pair { } 12) 123)'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ [], { "int": "12" } ] }, { "int": "123" } ] }'); + + + params = '(Pair (Pair 1 12) 123)'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "int": "1" }, { "int": "12" } ] }, { "int": "123" } ] }'); + + params = '(Pair (Pair { 1 } 12) 123)'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ [ { "int": "1" } ], { "int": "12" } ] }, { "int": "123" } ] }'); + + params = '(Pair (Pair {0 ; "a"} 12) 123)'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ [ { "int": "0" },{ "string": "a" } ], { "int": "12" } ] }, { "int": "123" } ] }'); + + params = '(Pair (Pair { Elt 0 "a"; } 12) 123)'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ [ { "prim": "Elt", "args": [ { "int": "0" }, { "string": "a" } ] } ], { "int": "12" } ] }, { "int": "123" } ] }'); + + params = '(Right { "tz1ZH85HuzzQATDFH7tnxfi8TFPUBnMXEcVA"; "tz1cZyyLMwho1DkvRHVTkkZBdSBwEFHRQz9A" })'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Right", "args": [ [ { "string": "tz1ZH85HuzzQATDFH7tnxfi8TFPUBnMXEcVA" },{ "string": "tz1cZyyLMwho1DkvRHVTkkZBdSBwEFHRQz9A" } ] ] }'); + + params = '(Pair (Pair 0x553246736447566b58312b6d397a6b75795759495065766c464a6237675531796d694a4358715269456647734c66537557743678586462733677672f697756476d7373474532716141656d7a63594b72634a517145673d3d 0x49913cca02161299607a603601c8306d32373786d206b6d67d5f34bc732108e1) 0x462b5055594b42382b523844664352773145633173773d3d)'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "bytes": "553246736447566b58312b6d397a6b75795759495065766c464a6237675531796d694a4358715269456647734c66537557743678586462733677672f697756476d7373474532716141656d7a63594b72634a517145673d3d" }, { "bytes": "49913cca02161299607a603601c8306d32373786d206b6d67d5f34bc732108e1" } ] }, { "bytes": "462b5055594b42382b523844664352773145633173773d3d" } ] }'); + + params = `(Pair (Pair (Pair 0 0) (Pair "tz1Rp4Bv8iUhYnNoCryHQgNzN2D7i3L1LF9C" "123")) (Pair (Pair 4000000 50000000) (Pair 0xc2e588e23a6c8b8192da64af45b7b603ac420aefd57cc1570682350154e9c04e "tz1WxrQuZ4CK1MBUa2GqUWK1yJ4J6EtG1Gwi")))`; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "int": "0" }, { "int": "0" } ] }, { "prim": "Pair", "args": [ { "string": "tz1Rp4Bv8iUhYnNoCryHQgNzN2D7i3L1LF9C" }, { "string": "123" } ] } ] }, { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "int": "4000000" }, { "int": "50000000" } ] }, { "prim": "Pair", "args": [ { "bytes": "c2e588e23a6c8b8192da64af45b7b603ac420aefd57cc1570682350154e9c04e" }, { "string": "tz1WxrQuZ4CK1MBUa2GqUWK1yJ4J6EtG1Gwi" } ] } ] } ] }'); + + params = `(Pair {} {"tz1beX9ZDev6SVVW9yJwNYA89362ZpWuDwou"})`; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ [], [ { "string": "tz1beX9ZDev6SVVW9yJwNYA89362ZpWuDwou" } ] ] }'); + + params = `(Pair {} (Pair None (Right Unit)))`; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ [], { "prim": "Pair", "args": [ { "prim": "None" }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] }'); + + params = `( Pair {} ( Pair ( Pair None ( Right Unit ) ) ( Pair ( Left ( Right Unit ) ) ( Right Unit ) ) ) )`; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ [], { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "None" }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Pair", "args": [ { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] } ] }'); + + params = '( Pair Unit ( Pair ( Pair ( Pair None Unit ) ( Pair Unit Unit ) ) Unit ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Unit" }, { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "None" }, { "prim": "Unit" } ] }, { "prim": "Pair", "args": [ { "prim": "Unit" }, { "prim": "Unit" } ] } ] }, { "prim": "Unit" } ] } ] }'); + + params = '( Pair Unit ( Pair ( Pair ( Pair None ( Right Unit ) ) ( Pair Unit Unit ) ) Unit ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Unit" }, { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "None" }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Pair", "args": [ { "prim": "Unit" }, { "prim": "Unit" } ] } ] }, { "prim": "Unit" } ] } ] }'); + + params = '( Pair {} ( Pair ( Pair ( Pair None ( Right Unit ) ) ( Pair Unit Unit ) ) ( Left ( Right Unit ) ) ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ [], { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "None" }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Pair", "args": [ { "prim": "Unit" }, { "prim": "Unit" } ] } ] }, { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] } ] }'); + + params = '( Pair {} ( Pair ( Pair ( Pair None ( Right Unit ) ) ( Pair ( Right Unit ) Unit ) ) ( Left ( Right Unit ) ) ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ [], { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "None" }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Pair", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] }, { "prim": "Unit" } ] } ] }, { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] } ] }'); + + params = '( Pair ( Left ( Right Unit ) ) ( Right Unit ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }'); + + params = '( Pair ( Pair ( Right Unit ) ( Right Unit ) ) ( Right Unit ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }'); + + params = '( Pair ( Pair ( Right Unit ) ( Pair ( Right Unit ) ( Pair ( Right Unit ) ( Right Unit ) ) ) ) ( Right Unit ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] }, { "prim": "Pair", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] }, { "prim": "Pair", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }'); + + params = '( Pair ( Right Unit ) ( Left ( Pair ( Right Unit ) ( Right Unit ) ) ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] }, { "prim": "Left", "args": [ { "prim": "Pair", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] } ] }'); + + params = '( Left ( Right ( Left ( Right ( Left ( Right None ) ) ) ) ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "None" } ] } ] } ] } ] } ] } ] }'); + + params = '( Pair ( Pair ( Right Unit ) ( Pair ( Right Unit ) ( Pair ( Left ( Right Unit ) ) ( Right Unit ) ) ) ) ( Right Unit ) )'; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] }, { "prim": "Pair", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] }, { "prim": "Pair", "args": [ { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }'); + + params = `( Pair {} ( Pair ( Pair ( Pair None ( Right Unit ) ) ( Pair ( Left ( Right Unit ) ) ( Right Unit ) ) ) ( Left ( Right Unit ) ) ) )`; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ [], { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "None" }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Pair", "args": [ { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] }, { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] } ] }'); + + params = `( Pair ( Pair "A" True ) ( Pair ( Pair ( Pair {} (Pair (Pair ( Pair 0 {} ) ( Pair "B" "C" ) ) 0 ) ) ( Pair {} ( Pair ( Pair ( Pair None ( Right Unit ) ) ( Pair ( Left ( Right Unit ) ) ( Right Unit ) ) ) ( Left ( Right Unit ) ) ) ) ) 1 ) )`; + result = TezosLanguageUtil.translateMichelsonToMicheline(params); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "string": "A" }, { "prim": "True" } ] }, { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ [], { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "int": "0" }, [] ] }, { "prim": "Pair", "args": [ { "string": "B" }, { "string": "C" } ] } ] }, { "int": "0" } ] } ] }, { "prim": "Pair", "args": [ [], { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "Pair", "args": [ { "prim": "None" }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Pair", "args": [ { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] }, { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] }, { "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Unit" } ] } ] } ] } ] } ] }, { "int": "1" } ] } ] }'); + }); + + it('Serialize Micheline parameters', () => { + let params = '{ "string": "hello" }'; + let result = TezosLanguageUtil.translateMichelineToHex(params); + expect(result).to.equal('010000000568656c6c6f'); + }); +}); + +function preProcessMicheline(code: string): string[] { + const container = JSON.parse(code); + let parts: string[] = []; + + parts.push(JSON.stringify(container.script[indexOfKey(container, 'code')], null, 1)); + parts.push(JSON.stringify(container.script[indexOfKey(container, 'storage')], null, 1)); + + for (let i = 0; i < parts.length; i++) { + parts[i] = TezosLanguageUtil.normalizeMichelineWhiteSpace(parts[i]); + } + + return parts; +} + +function indexOfKey(container: any, key: string): number { + if (!!!container.script) { throw new Error('script property not found'); } + + for (let i = 0; i < container.script.length; i++) { + if (container.script[i]['prim'] === key) { return i; } + } + + throw new Error(`${key} key was not found`); +} + +function preProcessHex(hex: string): string[] { + let parts: string[] = []; + + let offset = 0; + while (offset < hex.length) { + let partlength = parseInt(hex.substring(offset, offset + 8), 16) * 2; + offset += 8; + parts.push(hex.substring(offset, offset + partlength)); + offset += partlength; + } + + return parts; +} + +describe('Hex to Micheline official contract tests', async () => { + const contractSampleRoot = 'test/chain/tezos/lexer/samples'; + const p = new Promise((resolve, reject) => { + fs.readdir(contractSampleRoot, function (err, items) { + if (!!err) { reject(err); return; } + resolve([... new Set(items.map(f => path.basename(f, path.extname(f))))]); + }); + }); + const samples = await p; + + for (let i = 0; i < samples.length; i++) { + const contractName = samples[i]; + if (!fs.existsSync(`${contractSampleRoot}/${contractName}.micheline`)) { continue; } + it(`Hex/Micheline contract ${contractName}`, () => { + const micheline = fs.readFileSync(`${contractSampleRoot}/${contractName}.micheline`, 'utf8'); + const hexaline = fs.readFileSync(`${contractSampleRoot}/${contractName}.hex`, 'utf8'); + + const parsedMicheline = `{ "script": ${preProcessHex(hexaline).map(h => TezosLanguageUtil.hexToMicheline(h).code).join(', ')} }`; + const expectedMicheline = `{ "script": ${preProcessMicheline(micheline).join(', ')} }`; + + expect(parsedMicheline).to.equal(expectedMicheline); + }); + } +}); \ No newline at end of file diff --git a/test/chain/tezos/TezosMessageCodec.spec.ts b/ConseilJS-core/test/chain/tezos/TezosMessageCodec.spec.ts similarity index 76% rename from test/chain/tezos/TezosMessageCodec.spec.ts rename to ConseilJS-core/test/chain/tezos/TezosMessageCodec.spec.ts index 0bcc70a3..c1a413ef 100644 --- a/test/chain/tezos/TezosMessageCodec.spec.ts +++ b/ConseilJS-core/test/chain/tezos/TezosMessageCodec.spec.ts @@ -1,6 +1,7 @@ import { expect } from "chai"; import { TezosMessageCodec } from "../../../src/chain/tezos/TezosMessageCodec"; -import { Activation, Ballot, BallotVote, Operation } from "../../../src/types/tezos/TezosChainTypes"; +import { Activation, Ballot, BallotVote, Reveal, Origination, Transaction, Delegation } from "../../../src/types/tezos/TezosP2PMessageTypes"; +import { OperationKindType } from "../../../src/types/tezos/TezosChainTypes"; import "mocha"; describe("Tezos P2P message decoder test suite", () => { @@ -30,7 +31,7 @@ describe("Tezos P2P message decoder test suite", () => { expect(result[0].counter).to.equal('3'); }); - it("correctly parse a contract invocation transaction", () => { + it("correctly parse a pre-P005 contract invocation", () => { const result = TezosMessageCodec.parseOperationGroup("e943f55f402cc95cc8786190cb83a1409a8f338248302add11aaf79bdf7ba12e080000cbc60b41535ff0474fbdacc4e3d658eed9707ebdd08603a6850280b518e0d40300013cbecfc99420ac2c6898e7032aaa447966f8ce6600ff000000330505050805080508050501000000244b5431474532415a68617a52784773416a52566b516363486342327076414e5851576437"); expect(result[0].kind).to.equal("transaction"); @@ -44,14 +45,26 @@ describe("Tezos P2P message decoder test suite", () => { expect(result[0].parameters).to.equal('{ "prim": "Left", "args": [ { "prim": "Right", "args": [ { "prim": "Right", "args": [ { "prim": "Right", "args": [ { "prim": "Left", "args": [ { "string": "KT1GE2AZhazRxGsAjRVkQccHcB2pvANXQWd7" } ] } ] } ] } ] } ] }'); }); - it("parse contract invocation transaction", () => { - const result = TezosMessageCodec.parseTransaction("560a037fdd573fcb59a49b5835658fab813b57b3a25e96710ec97aad0614c34f0800000cb9f9da085607c05cac1ca4c62a3f3cfb8146aa0a0a0a0a0a013cbecfc99420ac2c6898e7032aaa447966f8ce6600ff0000000405050306"); + it("correctly parse a P005 'default' contract invocation", () => { + const result = TezosMessageCodec.parseOperationGroup("560a037fdd573fcb59a49b5835658fab813b57b3a25e96710ec97aad0614c34f6c000cb9f9da085607c05cac1ca4c62a3f3cfb8146aa0a0a0a0a00013cbecfc99420ac2c6898e7032aaa447966f8ce6600ff0000000009020000000405050306"); - expect(result.operation.parameters).to.equal('{ "prim": "Left", "args": [ { "prim": "None" } ] }'); + expect(result[0].kind).to.equal("transaction"); + expect(result[0].source).to.equal("tz1LoKbFyYHTkCnj9mgRKFb9g8pP4Lr3zniP"); + expect(result[0].parameters.entrypoint).to.equal('default'); + expect(result[0].parameters.value).to.equal('[ { "prim": "Left", "args": [ { "prim": "None" } ] } ]'); + }); + + it("correctly parse a P005 non-standard contract invocation", () => { + const result = TezosMessageCodec.parseOperationGroup("011ac5e07d5772f15fb08bcc5a58fa1120cb4a81cc2f3411a598729d9045f81e6c000cb9f9da085607c05cac1ca4c62a3f3cfb8146aa0a0a0a0a00013cbecfc99420ac2c6898e7032aaa447966f8ce6600ffff0b63727970746f6e6f6d696300000009020000000405050306"); + + expect(result[0].kind).to.equal("transaction"); + expect(result[0].source).to.equal("tz1LoKbFyYHTkCnj9mgRKFb9g8pP4Lr3zniP"); + expect(result[0].parameters.entrypoint).to.equal('cryptonomic'); + expect(result[0].parameters.value).to.equal('[ { "prim": "Left", "args": [ { "prim": "None" } ] } ]'); }); - it("correctly encode a transaction operation", () => { - const transaction: Operation = { + it("correctly encode some transactions", () => { + let transaction: Transaction = { kind: "transaction", source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", fee: "10000", @@ -62,8 +75,35 @@ describe("Tezos P2P message decoder test suite", () => { destination: "tz2G4TwEbsdFrJmApAxJ1vdQGmADnBp95n9m" }; - const result = TezosMessageCodec.encodeTransaction(transaction); - expect(result).to.equal("08000069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e80ade204000154f5d8f71ce18f9f05bb885a4120e64c667bc1b400"); + let result = TezosMessageCodec.encodeTransaction(transaction); + expect(result).to.equal("6c0069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e80ade204000154f5d8f71ce18f9f05bb885a4120e64c667bc1b400"); + + transaction = { + destination: "KT1X1rMCkifsoDJ1ynsHFqdvyagJKc9J6wEq", + amount: "10000", + storage_limit: "0", + gas_limit: "11697", + counter: "29892", + fee: "100000", + source: "tz1b2icJC4E7Y2ED1xsZXuqYpF7cxHDtduuP", + kind: "transaction", + parameters: { "entrypoint": "default", "value": { "prim": "Unit" } } + }; + + result = TezosMessageCodec.encodeTransaction(transaction); + expect(result).to.equal("6c00a8d45bdc966ddaaac83188a1e1c1fde2a3e05e5ca08d06c4e901b15b00904e01f61128c6abd2426d0c49b1fee1fa8c98dcc4ce0a0000"); + }); + + it("correctly encode a 'root' contract invocation", () => { + // TODO + }); + + it("correctly encode a non-standard contract invocation", () => { + // TODO + }); + + it("correctly encode a blank contract invocation", () => { + // TODO }); it("correctly parse a reveal", () => { @@ -77,7 +117,7 @@ describe("Tezos P2P message decoder test suite", () => { }); it("correctly encode a reveal operation", () => { - const reveal: Operation = { + const reveal: Reveal = { kind: "reveal", source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", fee: "0", @@ -88,51 +128,23 @@ describe("Tezos P2P message decoder test suite", () => { }; const result = TezosMessageCodec.encodeReveal(reveal); - expect(result).to.equal("07000069ef8fb5d47d8a4321c94576a2316a632be8ce890094fe19904e00004c7b0501f6ea08f472b7e88791d3b8da49d64ac1e2c90f93c27e6531473305c6"); - }); - - it("correctly encode an origination operation", () => { - let origination: Operation = { - kind: "origination", - source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", - fee: "10000", - counter: "9", - storage_limit: "10001", - gas_limit: "10002", - managerPubkey: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", - balance: "10003", - spendable: true, - delegatable: true, - delegate: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX" - }; - - let result = TezosMessageCodec.encodeOrigination(origination); - expect(result).to.equal("09000069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e0069ef8fb5d47d8a4321c94576a2316a632be8ce89934effffff0069ef8fb5d47d8a4321c94576a2316a632be8ce8900"); - - origination.spendable = undefined; - origination.delegatable = undefined; - origination.delegate = undefined; - result = TezosMessageCodec.encodeOrigination(origination); - expect(result).to.equal("09000069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e0069ef8fb5d47d8a4321c94576a2316a632be8ce89934e00000000"); + expect(result).to.equal("6b0069ef8fb5d47d8a4321c94576a2316a632be8ce890094fe19904e00004c7b0501f6ea08f472b7e88791d3b8da49d64ac1e2c90f93c27e6531473305c6"); }); it("correctly encode a contract origination operation", () => { - let origination: Operation = { + let origination: Origination = { kind: "origination", source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", fee: "10000", counter: "9", storage_limit: "10001", gas_limit: "10002", - managerPubkey: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", balance: "10003", - spendable: false, - delegatable: false, - script: '{ "code": [ { "prim": "parameter", "args": [ { "prim": "int" } ] }, { "prim": "storage", "args": [ { "prim": "int" } ] }, { "prim": "code", "args": [ [ { "prim": "CAR" }, { "prim": "PUSH", "args": [ { "prim": "int" }, { "int": "1" } ] }, { "prim": "ADD" }, { "prim": "PUSH", "args": [ { "prim": "bytes" }, { "bytes": "0123456789abcdef" } ] }, { "prim": "DROP" }, { "prim": "NIL", "args": [ { "prim": "operation" } ] }, { "prim": "PAIR" } ] ] } ], "storage": { "int": "30" } }' + script: { "code": [ { "prim": "parameter", "args": [ { "prim": "int" } ] }, { "prim": "storage", "args": [ { "prim": "int" } ] }, { "prim": "code", "args": [ [ { "prim": "CAR" }, { "prim": "PUSH", "args": [ { "prim": "int" }, { "int": "1" } ] }, { "prim": "ADD" }, { "prim": "PUSH", "args": [ { "prim": "bytes" }, { "bytes": "0123456789abcdef" } ] }, { "prim": "DROP" }, { "prim": "NIL", "args": [ { "prim": "operation" } ] }, { "prim": "PAIR" } ] ] } ], "storage": { "int": "30" } } }; let result = TezosMessageCodec.encodeOrigination(origination); - expect(result).to.equal("09000069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e0069ef8fb5d47d8a4321c94576a2316a632be8ce89934e000000ff0000003702000000320500035b0501035b0502020000002303160743035b00010312074303690a000000080123456789abcdef0320053d036d034200000002001e"); + expect(result).to.equal("6d0069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e934e000000003702000000320500035b0501035b0502020000002303160743035b00010312074303690a000000080123456789abcdef0320053d036d034200000002001e"); }); it("correctly parse a reveal/transaction operation group", () => { @@ -156,12 +168,12 @@ describe("Tezos P2P message decoder test suite", () => { expect(result[1].counter).to.equal('15438'); }); - it("correctly parse an origination", () => { + it("correctly parse a pre-P005 origination", () => { let forgedOrigination = "c98677a5ad30a181889ad0325b5ce4b32d288e2d0397eac9391e20de1ec816f20900009fcc83e722c9d9f7a150555e632e6e0f97bfc29bc0843dd078b04f9502009fcc83e722c9d9f7a150555e632e6e0f97bfc29b8080897affffff006e747386822673001b03dca0eff6cebf7c9cd6e400"; const result = TezosMessageCodec.parseOperation(forgedOrigination, 'origination'); expect(result.operation.kind).to.equal("origination"); expect(result.operation.source).to.equal("tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2"); - expect(result.operation.managerPubkey).to.equal("tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2"); + expect(result.operation.manager_pubkey).to.equal("tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2"); expect(result.operation.script).to.undefined; expect(result.operation.balance).to.equal('256000000'); // microtez expect(result.operation.spendable).to.equal(true); @@ -173,12 +185,12 @@ describe("Tezos P2P message decoder test suite", () => { expect(result.operation.counter).to.equal('15440'); }); - it("correctly parse an origination with contract", () => { + it("correctly parse a pre-P005 origination with contract", () => { const forgedOrigination = "0f9c939d51f90e9435fe2f466058eed68cd7f0624ff439136dfe2dcc3139391c090000b2e1d673031ec0711eacb822cbca4ce95f1e3c0ac09a0c890581d901b04f00b2e1d673031ec0711eacb822cbca4ce95f1e3c0a80897affffff00641d2f258a7fafe9cf1f18720a14dfadba9adb0eff0000001c02000000170500036805010368050202000000080316053d036d03420000000a010000000568656c6c6f15f3cff9210c5287e91a2a9ba65871ed83b7c784ecf42419aa03c7bef02e50cd7916e228f15418ca74b7bb12d42f64cd9dac7e978173ff1360ff4dc7ca7bb501"; const result = TezosMessageCodec.parseOrigination(forgedOrigination); expect(result.operation.kind).to.equal("origination"); expect(result.operation.source).to.equal("tz1bwsWk3boyGgXf3u7CJGZSTfe14djdRtxG"); - expect(result.operation.managerPubkey).to.equal("tz1bwsWk3boyGgXf3u7CJGZSTfe14djdRtxG"); + expect(result.operation.manager_pubkey).to.equal("tz1bwsWk3boyGgXf3u7CJGZSTfe14djdRtxG"); expect(result.operation.script).to.exist; expect(result.operation.balance).to.equal('2000000'); // microtez expect(result.operation.spendable).to.equal(true); @@ -191,6 +203,22 @@ describe("Tezos P2P message decoder test suite", () => { expect(result.nextoffset).to.equal(-1); }); + it("correctly parse a P005 origination with contract", () => { + const forgedOrigination = "0f9c939d51f90e9435fe2f466058eed68cd7f0624ff439136dfe2dcc3139391c6d00b2e1d673031ec0711eacb822cbca4ce95f1e3c0ac09a0c890581d901b04f80897aff00641d2f258a7fafe9cf1f18720a14dfadba9adb0e0000001c02000000170500036805010368050202000000080316053d036d03420000000a010000000568656c6c6f"; + const result = TezosMessageCodec.parseOrigination(forgedOrigination); + expect(result.operation.kind).to.equal("origination"); + expect(result.operation.source).to.equal("tz1bwsWk3boyGgXf3u7CJGZSTfe14djdRtxG"); + expect(result.operation.manager_pubkey).to.be.undefined; + expect(result.operation.script).to.exist; + expect(result.operation.balance).to.equal('2000000'); // microtez + expect(result.operation.delegate).to.equal("tz1UmPE44pqWrEgW8sTRs6ED1DgwF7k43ncQ"); + expect(result.operation.fee).to.equal('200000'); // microtez + expect(result.operation.gas_limit).to.equal('27777'); // microtez + expect(result.operation.storage_limit).to.equal('10160'); // microtez + expect(result.operation.counter).to.equal('649'); + expect(result.nextoffset).to.equal(-1); + }); + it("correctly parse a delegation ", () => { let forgedDelegtion = "a76af8bde55501f677bfff412d59dd21a91606f47459288476a6e947766d0e8c0a0180be2031715ea183848c08e2ff59d62e7d255ae500a0c21e03904e00ff00b15b7a2484464ed3228c0ae23d0391f8269de3da"; const result = TezosMessageCodec.parseDelegation(forgedDelegtion); @@ -224,7 +252,7 @@ describe("Tezos P2P message decoder test suite", () => { }); it("correctly encode a delegation operation", () => { - let delegation: Operation = { + let delegation: Delegation = { kind: "delegation", source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", fee: "10000", @@ -235,11 +263,11 @@ describe("Tezos P2P message decoder test suite", () => { }; let result = TezosMessageCodec.encodeDelegation(delegation); - expect(result).to.equal("0a000069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914eff026fde46af0356a0476dae4e4600172dc9309b3aa4"); + expect(result).to.equal("6e0069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914eff026fde46af0356a0476dae4e4600172dc9309b3aa4"); delegation.delegate = undefined; result = TezosMessageCodec.encodeDelegation(delegation); - expect(result).to.equal("0a000069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e00"); + expect(result).to.equal("6e0069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e00"); }); it("correctly parse a 3-message OperationGroup", () => { @@ -249,6 +277,7 @@ describe("Tezos P2P message decoder test suite", () => { it("correctly encode a ballot operation", () => { const ballot: Ballot = { + kind: 'ballot', source: 'tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX', period: 10, proposal: 'Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd', @@ -270,6 +299,7 @@ describe("Tezos P2P message decoder test suite", () => { it("correctly encode an activation operation", () => { const activation: Activation = { + kind: OperationKindType.AccountActivation, pkh: "tz1LoKbFyYHTkCnj9mgRKFb9g8pP4Lr3zniP", secret: "9b7f631e52f877a1d363474404da8130b0b940ee" }; @@ -289,7 +319,7 @@ describe("Tezos P2P message decoder test suite", () => { }); it("fail reveal encoding errors", () => { - let reveal: Operation = { + let reveal: Reveal = { kind: "c0ffee", source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", fee: "0", @@ -299,14 +329,10 @@ describe("Tezos P2P message decoder test suite", () => { public_key: "edpkuDuXgPVJi3YK2GKL6avAK3GyjqyvpJjG9gTY5r2y72R7Teo65i" }; expect(() => TezosMessageCodec.encodeReveal(reveal)).to.throw('Incorrect operation type.'); - - reveal.kind = 'reveal'; - reveal.public_key = undefined; - expect(() => TezosMessageCodec.encodeReveal(reveal)).to.throw('Missing public key.'); }); it("fail transaction encoding errors", () => { - let transaction: Operation = { + let transaction: Transaction = { kind: "c0ff33", source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", fee: "10000", @@ -317,43 +343,24 @@ describe("Tezos P2P message decoder test suite", () => { destination: "tz2G4TwEbsdFrJmApAxJ1vdQGmADnBp95n9m" }; expect(() => TezosMessageCodec.encodeTransaction(transaction)).to.throw('Incorrect operation type'); - - transaction.kind = 'transaction'; - transaction.amount = undefined; - expect(() => TezosMessageCodec.encodeTransaction(transaction)).to.throw('Missing amount'); - - transaction.amount = '1000000'; - transaction.destination = undefined; - expect(() => TezosMessageCodec.encodeTransaction(transaction)).to.throw('Missing destination'); }); it("fail origination encoding errors", () => { - let origination: Operation = { + let origination: Origination = { kind: "c0ff33", source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", fee: "10000", counter: "9", storage_limit: "10001", gas_limit: "10002", - managerPubkey: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", balance: "10003", - spendable: true, - delegatable: true, delegate: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX" }; expect(() => TezosMessageCodec.encodeOrigination(origination)).to.throw('Incorrect operation type'); - - origination.kind = 'origination'; - origination.managerPubkey = undefined - expect(() => TezosMessageCodec.encodeOrigination(origination)).to.throw('Missing manager address'); - - origination.managerPubkey = 'tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX' - origination.balance = undefined - expect(() => TezosMessageCodec.encodeOrigination(origination)).to.throw('Missing balance'); }); it("fail delegation encoding errors", () => { - const delegation: Operation = { + const delegation: Delegation = { kind: "c0ff33", source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", fee: "10000", diff --git a/test/chain/tezos/TezosMessageUtil.spec.ts b/ConseilJS-core/test/chain/tezos/TezosMessageUtil.spec.ts similarity index 56% rename from test/chain/tezos/TezosMessageUtil.spec.ts rename to ConseilJS-core/test/chain/tezos/TezosMessageUtil.spec.ts index a4cfe704..ab08af6c 100644 --- a/test/chain/tezos/TezosMessageUtil.spec.ts +++ b/ConseilJS-core/test/chain/tezos/TezosMessageUtil.spec.ts @@ -1,6 +1,7 @@ import { expect } from 'chai'; import { TezosMessageUtils } from '../../../src/chain/tezos/TezosMessageUtil'; import 'mocha'; +import { TezosParameterFormat } from '../../../src/types/tezos/TezosChainTypes'; describe('Tezos P2P message codec helper tests', () => { it('test address read functions', () => { @@ -40,9 +41,6 @@ describe('Tezos P2P message codec helper tests', () => { result = TezosMessageUtils.writeAddress('tz3e75hU4EhDU3ukyJueh5v6UvEHzGwkg3yC'); expect(result).to.equal('0002c2fe98642abd0b7dd4bc0fc42e0a5f7c87ba56fc'); - result = TezosMessageUtils.writeAddress('tz3e75hU4EhDU3ukyJueh5v6UvEHzGwkg3yC'); - expect(result).to.equal('0002c2fe98642abd0b7dd4bc0fc42e0a5f7c87ba56fc'); - result = TezosMessageUtils.writeAddress('KT1NrjjM791v7cyo6VGy7rrzB3Dg3p1mQki3'); expect(result).to.equal('019c96e27f418b5db7c301147b3e941b41bd224fe400'); }); @@ -70,12 +68,30 @@ describe('Tezos P2P message codec helper tests', () => { result = TezosMessageUtils.readInt('1e'); expect(result).to.equal(30); + result = TezosMessageUtils.readInt('20'); + expect(result).to.equal(32); + result = TezosMessageUtils.readInt('fe1f'); expect(result).to.equal(4094); + + result = TezosMessageUtils.readInt('8020'); + expect(result).to.equal(4096); + + result = TezosMessageUtils.readInt('90dd78'); + expect(result).to.equal(1978000); + + result = TezosMessageUtils.readInt('8086f7840d'); + expect(result).to.equal(3500000000); + + result = TezosMessageUtils.readInt('80d683bba318'); + expect(result).to.equal(834152753920); }); - it('test int write function', () => { - let result = TezosMessageUtils.writeInt(7); + it('test writeInt function', () => { + let result = TezosMessageUtils.writeInt(0); + expect(result).to.equal('00'); + + result = TezosMessageUtils.writeInt(7); expect(result).to.equal('07'); result = TezosMessageUtils.writeInt(32); @@ -84,10 +100,18 @@ describe('Tezos P2P message codec helper tests', () => { result = TezosMessageUtils.writeInt(4096); expect(result).to.equal('8020'); - result = TezosMessageUtils.writeInt(0); - expect(result).to.equal('00'); + result = TezosMessageUtils.writeInt(1395000); + expect(result).to.equal('b89255'); - result = TezosMessageUtils.writeSignedInt(0); + result = TezosMessageUtils.writeInt(6300010000); + expect(result).to.equal('908c8abc17'); + + result = TezosMessageUtils.writeInt(794254710954); + expect(result).to.equal('aab194ea8e17'); + }); + + it('test writeSignedInt function', () => { + let result = TezosMessageUtils.writeSignedInt(0); expect(result).to.equal('00'); result = TezosMessageUtils.writeSignedInt(-64); @@ -103,9 +127,8 @@ describe('Tezos P2P message codec helper tests', () => { expect(result).to.equal('80f9b9d4c723'); }); - it('test int read function', () => { + it('test findInt function', () => { let result = TezosMessageUtils.findInt('d3dade57fae2', 0); - expect(result.value).to.equal(184003923); expect(result.length).to.equal(8); }); @@ -118,6 +141,90 @@ describe('Tezos P2P message codec helper tests', () => { expect(result).to.equal('BLoBZFawGRjGwk53VW76xBDhxKKMpnk3k3FWdkYZhcusd3aVwUM'); }); + it('test value PACKing', () => { + let result = TezosMessageUtils.writePackedData(9, 'int'); + expect(result).to.equal('050009'); + + result = TezosMessageUtils.writePackedData(9, 'nat'); + expect(result).to.equal('050009'); + + result = TezosMessageUtils.writePackedData(-9, 'int'); + expect(result).to.equal('050049'); + + result = TezosMessageUtils.writePackedData(-6407, 'int'); + expect(result).to.equal('0500c764'); + + result = TezosMessageUtils.writePackedData(98978654, 'int'); + expect(result).to.equal('05009eadb25e'); + + result = TezosMessageUtils.writePackedData(-78181343541, 'int'); + expect(result).to.equal('0500f584c5bfc604'); + + result = TezosMessageUtils.writePackedData('tz1eEnQhbwf6trb8Q8mPb2RaPkNk2rN7BKi8', 'address'); + expect(result).to.equal('050a000000160000cc04e65d3e38e4e8059041f27a649c76630f95e2'); + + result = TezosMessageUtils.writePackedData('Tezos Tacos Nachos', 'string'); + expect(result).to.equal('05010000001254657a6f73205461636f73204e6163686f73'); + + result = TezosMessageUtils.writePackedData(Buffer.from('0a0a0a', 'hex'), 'bytes'); + expect(result).to.equal('050a000000030a0a0a'); + + result = TezosMessageUtils.writePackedData('{ "prim": "Pair", "args": [ { "int": "1" }, { "int": "12" } ] }', '{ "prim":"pair", "args":[ { "prim":"int" }, { "prim":"int" }] }'); + expect(result).to.equal('0507070001000c'); + + result = TezosMessageUtils.writePackedData('(Pair 1 12)', '(pair int int)', TezosParameterFormat.Michelson); + expect(result).to.equal('0507070001000c'); + + result = TezosMessageUtils.writePackedData('{ "prim": "Pair", "args": [ { "int": "42" }, { "prim": "Left", "args": [ { "prim": "Left", "args": [ { "prim": "Pair", "args": [ { "int": "1585470660" }, { "int": "900100" } ] } ] } ] } ] }', ''); + expect(result).to.equal('050707002a0505050507070084f382e80b0084f06d'); + }); + + it('test value UNPACKing', () => { + let result = TezosMessageUtils.readPackedData('050009', 'int'); + expect(result).to.equal(9); + + result = TezosMessageUtils.readPackedData('050009', 'nat'); + expect(result).to.equal(9); + + result = TezosMessageUtils.readPackedData('050049', 'int'); + expect(result).to.equal(-9); + + result = TezosMessageUtils.readPackedData('0500c764', 'int'); + expect(result).to.equal(-6407); + + result = TezosMessageUtils.readPackedData('05009eadb25e', 'int'); + expect(result).to.equal(98978654); + + result = TezosMessageUtils.readPackedData('0500f584c5bfc604', 'int'); + expect(result).to.equal(-78181343541); + + result = TezosMessageUtils.readPackedData('050a0000001500cc04e65d3e38e4e8059041f27a649c76630f95e2', 'key_hash'); + expect(result).to.equal('tz1eEnQhbwf6trb8Q8mPb2RaPkNk2rN7BKi8'); + + result = TezosMessageUtils.readPackedData('050a0000001601e67bac124dff100a57644de0cf26d341ebf9492600', 'address'); + expect(result).to.equal('KT1VbT8n6YbrzPSjdAscKfJGDDNafB5yHn1H'); + + result = TezosMessageUtils.readPackedData('05010000001254657a6f73205461636f73204e6163686f73', 'string'); + expect(result).to.equal('Tezos Tacos Nachos'); + + result = TezosMessageUtils.readPackedData('050a000000030a0a0a', 'bytes'); + expect(result).to.equal('0a0a0a'); + + result = TezosMessageUtils.readPackedData('0507070001000c', ''); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "int": "1" }, { "int": "12" } ] }'); + }); + + it('test big_map key hashing', () => { + let result = TezosMessageUtils.encodeBigMapKey(Buffer.from('050a000000160000cc04e65d3e38e4e8059041f27a649c76630f95e2', 'hex')); + expect(result).to.equal('exprv7U7pkJHbeUGhs7Wj8GTUnvfZfJRUcSCRo2EYqRSnUx1xWKrY9'); + + result = TezosMessageUtils.encodeBigMapKey(Buffer.from('05010000001254657a6f73205461636f73204e6163686f73', 'hex')); + expect(result).to.equal('expruGmscHLuUazE7d79EepWCnDuPJreo8R87wsDGUgKAuH4E5ayEj'); + }); + + //readSignatureWithHint + //writeSignatureWithHint + it("test various parsing and encoding failures", () => { expect(() => TezosMessageUtils.readAddress('c0ffeec0ffeec0ffeec0ffeec0ffeec0ffeec0ffee')).to.throw('Unrecognized address type'); expect(() => TezosMessageUtils.readAddress('c0ffeec0ffeec0ffeec0ffeec0ffeec0ffeec0ff')).to.throw('Incorrect hex length to parse an address'); @@ -132,6 +239,6 @@ describe('Tezos P2P message codec helper tests', () => { expect(() => TezosMessageUtils.readBranch('c0ffeec0ffeec0ffeec0ffeec0ffeec0ffeec0ff')).to.throw('Incorrect hex length to parse a branch hash'); expect(() => TezosMessageUtils.readSignatureWithHint(Buffer.from('c0ffeec0ffeec0ffeec0ffeec0ffeec0ffeec0ff', 'hex'), '')).to.throw('Unrecognized signature hint, \'\''); expect(() => TezosMessageUtils.writeInt(-1)).to.throw('Use writeSignedInt to encode negative numbers'); - expect(() => TezosMessageUtils.writeAddress('4xSdkvbfRzd2kbD5REuf5ERr4n8yLV6EjKLCef')).to.throw('Unrecognized address type'); + expect(() => TezosMessageUtils.writeAddress('4xSdkvbfRzd2kbD5REuf5ERr4n8yLV6EjKLCef')).to.throw('Unrecognized address prefix: 4xS'); }); }); diff --git a/ConseilJS-core/test/chain/tezos/TezosNodeWriter.spec.ts b/ConseilJS-core/test/chain/tezos/TezosNodeWriter.spec.ts new file mode 100644 index 00000000..ea61b80d --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/TezosNodeWriter.spec.ts @@ -0,0 +1,224 @@ +import "mocha"; +import { expect, use } from "chai"; +import chaiAsPromised from 'chai-as-promised'; +import nock from 'nock'; +import { StackableOperation, Ballot, Transaction, Reveal, Origination, Delegation } from "../../../src/types/tezos/TezosP2PMessageTypes"; + +import { TezosWalletUtil, TezosNodeWriter, TezosParameterFormat } from "../../../src/"; +import mochaAsync from '../../../test/mochaTestHelper'; +import { + blockHead, + forgedOpGroupList, + appliedOpList, + signedOpGroup, + injectOpList, + accountMockList, + managerKeyMockList, + walletInfoLists +} from '../../TezosOperations.responses'; + +use(chaiAsPromised); + +const { unlockFundraiserIdentity } = TezosWalletUtil; + +let keyStore; +let keyStore1; +let ops; +let opIndex = 0; +const [info0, info1] = walletInfoLists; + +const ktAddress = 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM'; + +describe('Tezos Operations Test', () => { + before(mochaAsync(async () => { + keyStore = await unlockFundraiserIdentity(info0.mnemonic.join(' '), info0.email, info0.password, info0.pkh); + keyStore.storeType = 'Fundraiser'; + + keyStore1 = await unlockFundraiserIdentity(info1.mnemonic.join(' '), info1.email, info1.password, info1.pkh); + keyStore1.storeType = 'Fundraiser'; + + const nockOb = nock('http://conseil.server'); + + nockOb.persist().get(`/chains/main/blocks/head`).reply(200, blockHead); + + nockOb.get(`/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore.publicKeyHash}`).reply(200, accountMockList[0]); + nockOb.get(`/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore1.publicKeyHash}`).reply(200, accountMockList[1]); + nockOb.get(`/chains/main/blocks/${blockHead.hash}/context/contracts/${ktAddress}`).reply(200, accountMockList[2]); + nockOb.get(`/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore.publicKeyHash}/manager_key`).reply(200, managerKeyMockList[0]); + nockOb.get(`/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore1.publicKeyHash}/manager_key`).reply(200, managerKeyMockList[1]); + nockOb.get(`/chains/main/blocks/${blockHead.hash}/context/contracts/${ktAddress}/manager_key`).reply(200, managerKeyMockList[0]); + nockOb.get(`/chains/main/blocks/head/context/contracts/${keyStore.publicKeyHash}/counter`).reply(200, "10"); + nockOb.get(`/chains/main/blocks/head/context/contracts/${ktAddress}/counter`).reply(200, "11"); + })); + + describe('Test Tezos node interactions', () => { + before(async () => { + const activation = { + kind: 'activate_account', + pkh: keyStore.publicKeyHash, + secret: info0.secret + }; + ops = [activation]; + const nockOb1 = nock('http://conseil.server'); + nockOb1 + .persist() + .filteringRequestBody(body => '*') + .post(`/chains/main/blocks/head/helpers/forge/operations`, '*') + .reply(200, forgedOpGroupList[0]) + .post(`/chains/main/blocks/head/helpers/preapply/operations`, '*') + .reply(200, appliedOpList[0]) + .post(`/injection/operation?chain=main`, '*') + .reply(200, injectOpList[0]); + }); + + it("correctly encode operations locally", () => { + let messages: StackableOperation[] = []; + messages.push({ + kind: "reveal", + source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", + fee: "0", + counter: "425748", + storage_limit: "0", + gas_limit: "10000", + public_key: "edpkuDuXgPVJi3YK2GKL6avAK3GyjqyvpJjG9gTY5r2y72R7Teo65i" + } as Reveal); + messages.push({ + kind: "transaction", + source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", + fee: "10000", + counter: "9", + storage_limit: "10001", + gas_limit: "10002", + amount: "10000000", + destination: "tz2G4TwEbsdFrJmApAxJ1vdQGmADnBp95n9m" + } as Transaction); + messages.push({ + kind: "origination", + source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", + fee: "10000", + counter: "9", + storage_limit: "10001", + gas_limit: "10002", + balance: "10003", + delegate: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", + script: { + code: [ { "prim": "parameter", "args": [ { "prim": "string" } ] }, { "prim": "storage", "args": [ { "prim":"string" } ] }, { "prim": "code", "args": [ [ { "prim":"CAR" }, { "prim":"NIL", "args":[ { "prim":"operation" } ] }, { "prim":"PAIR" } ] ] } ], + storage: { "string": "Sample" } + } + } as Origination); + messages.push({ + kind: "delegation", + source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", + fee: "10000", + counter: "9", + storage_limit: "10001", + gas_limit: "10002", + delegate: 'tz3WXYtyDUNL91qfiCJtVUX746QpNv5i5ve5' + } as Delegation); + + const result = TezosNodeWriter.forgeOperations(blockHead.hash, messages); + + expect(result).to.equal('560a037fdd573fcb59a49b5835658fab813b57b3a25e96710ec97aad0614c34f6b0069ef8fb5d47d8a4321c94576a2316a632be8ce890094fe19904e00004c7b0501f6ea08f472b7e88791d3b8da49d64ac1e2c90f93c27e6531473305c66c0069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e80ade204000154f5d8f71ce18f9f05bb885a4120e64c667bc1b4006d0069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e934eff0069ef8fb5d47d8a4321c94576a2316a632be8ce890000001c02000000170500036805010368050202000000080316053d036d03420000000b010000000653616d706c656e0069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914eff026fde46af0356a0476dae4e4600172dc9309b3aa4'); + }); + + it("correctly encode ballot locally", () => { + const message: Ballot = { + kind: 'ballot', + source: 'tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX', + period: 10, + proposal: 'Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd', + vote: 0 + }; + + const result = TezosNodeWriter.forgeOperations(blockHead.hash, [message]); + + expect(result).to.equal('560a037fdd573fcb59a49b5835658fab813b57b3a25e96710ec97aad0614c34f060069ef8fb5d47d8a4321c94576a2316a632be8ce890000000aab22e46e7872aa13e366e455bb4f5dbede856ab0864e1da7e122554579ee71f800'); + }); + + it('signOperationGroup test', mochaAsync(async () => { + const signedOpGroup = await TezosNodeWriter.signOperationGroup(forgedOpGroupList[0], keyStore, ''); + expect(signedOpGroup).to.be.an('object'); + expect(signedOpGroup.signature).to.exist; + })); + + it('preapplyOperation test', mochaAsync(async () => { + const appliedOp = await TezosNodeWriter.preapplyOperation('http://conseil.server', blockHead.hash, blockHead.protocol, [ops], signedOpGroup); + expect(appliedOp).to.be.an('array'); + expect(appliedOp[0]).to.be.an('object'); + expect(appliedOp[0].contents).to.be.an('array'); + })); + + it('applyOperation test', mochaAsync(async () => { + const appliedOp = await TezosNodeWriter.preapplyOperation('http://conseil.server', blockHead.hash, blockHead.protocol, ops, signedOpGroup); + expect(appliedOp).to.be.an('array'); + expect(appliedOp[0]).to.be.an('object'); + expect(appliedOp[0].contents).to.be.an('array'); + })); + + it('TezosNode.injectOperation test', mochaAsync(async () => { + const payload = signedOpGroup; + const injectOp = await TezosNodeWriter.injectOperation('http://conseil.server', payload); + expect(injectOp).to.be.a('string'); + })); + + it('injectOperation test', mochaAsync(async () => { + const injectOp = await TezosNodeWriter.injectOperation('http://conseil.server', signedOpGroup); + expect(injectOp).to.exist; + })); + }); + + describe('Main Operations Test', () => { + beforeEach(async () => { + const nockOb2 = nock('http://conseil.server'); + nockOb2 + .persist() + .filteringRequestBody(body => '*') + .post(`/chains/main/blocks/head/helpers/forge/operations`, '*') + .reply(200, forgedOpGroupList[opIndex]) + .post(`/chains/main/blocks/head/helpers/preapply/operations`, '*') + .reply(200, appliedOpList[opIndex]) + .post(`/injection/operation?chain=main`, '*') + .reply(200, injectOpList[opIndex]); + opIndex ++; + }); + it('sendIdentityActivationOperation', mochaAsync(async () => { + const activeResult = await TezosNodeWriter.sendIdentityActivationOperation('http://conseil.server', keyStore, info0.secret); + expect(activeResult).to.exist; + expect(activeResult.operationGroupID).to.be.a('string'); + })); + + it('sendKeyRevealOperation', mochaAsync(async () => { + const revealResult = await TezosNodeWriter.sendKeyRevealOperation('http://conseil.server', keyStore, 0, ''); + expect(revealResult).to.exist; + expect(revealResult.operationGroupID).to.be.a('string'); + })); + + it('sendTransactionOperation', mochaAsync(async () => { + const toAddress = 'tz1fX6A2miVXjNyReg2dpt2TsXLkZ4w7zRGa'; + const amount = 10000000; + const fee = 100000; + const sendResult = await TezosNodeWriter.sendTransactionOperation('http://conseil.server', keyStore, toAddress, amount, fee, ''); + expect(sendResult).to.exist; + expect(sendResult.operationGroupID).to.be.a('string'); + })); + + it('sendDelegationOperation', mochaAsync(async () => { + const delegator = 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM'; + const bakerAddress = 'tz3gN8NTLNLJg5KRsUU47NHNVHbdhcFXjjaB'; + const fee = 300000; + const delegationResult = await TezosNodeWriter.sendDelegationOperation('http://conseil.server', keyStore, bakerAddress, fee); + expect(delegationResult).to.exist; + expect(delegationResult.operationGroupID).to.be.a('string'); + })); + + it('Ping contract', mochaAsync(async () => { + let result = await TezosNodeWriter.sendContractInvocationOperation('http://conseil.server', keyStore, 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM', 10000, 1000, '', 1000, 1000, undefined, undefined); + expect(result.operationGroupID).to.equal('opBpn8Uzt1c67jw7a3H5nDkpryDkVF1W9SmiWBHtnnofg8TL7LA'); + })); + + it('Invoke contract', mochaAsync(async () => { + let result = await TezosNodeWriter.sendContractInvocationOperation('http://conseil.server', keyStore, 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM', 10000, 1000, '', 1000, 1000, 'SomeEntryPoint', 'Right (Left Unit)', TezosParameterFormat.Michelson); + expect(result.operationGroupID).to.equal('opBpn8Uzt1c67jw7a3H5nDkpryDkVF1W9SmiWBHtnnofg8TL7LA'); + })); + }); +}); diff --git a/test/chain/tezos/lexer/MichelineParser.spec.ts b/ConseilJS-core/test/chain/tezos/lexer/MichelineParser.spec.ts similarity index 70% rename from test/chain/tezos/lexer/MichelineParser.spec.ts rename to ConseilJS-core/test/chain/tezos/lexer/MichelineParser.spec.ts index d1171271..e4be849d 100644 --- a/test/chain/tezos/lexer/MichelineParser.spec.ts +++ b/ConseilJS-core/test/chain/tezos/lexer/MichelineParser.spec.ts @@ -5,6 +5,8 @@ import * as Micheline from '../../../../src/chain/tezos/lexer/Micheline'; import * as nearley from 'nearley'; import * as fs from 'fs'; import * as path from 'path'; +import glob from 'glob'; + import { TezosLanguageUtil } from '../../../../src/chain/tezos/TezosLanguageUtil'; describe('Micheline binary encoding tests', () => { @@ -24,7 +26,7 @@ describe('Micheline binary encoding tests', () => { expect(result).to.equal('00eccd6d'); }); - it('parse a listeral string', () => { + it('parse a literal string', () => { const result = TezosLanguageUtil.translateMichelineToHex('{ "string" : "abc" }'); expect(result).to.equal('0100000003616263'); }); @@ -88,58 +90,28 @@ describe('Micheline binary encoding complex tests', () => { }); - -function michelineToHex(code: string): string { - return preProcessMicheline(code) - .map(p => { - let parser = new nearley.Parser(nearley.Grammar.fromCompiled(Micheline)); - parser.feed(p); - let result = parser.results.join(''); - return ('0000000' + (result.length / 2).toString(16)).slice(-8) + result; // prefix byte length - }).join(''); -} - -function preProcessMicheline(code: string): string[] { - const container = JSON.parse(code); - let parts: string[] = []; - - parts.push(JSON.stringify(container.script[indexOfKey(container, 'code')], null, 1)); - parts.push(JSON.stringify(container.script[indexOfKey(container, 'storage')], null, 1)); - - for (let i = 0; i < parts.length; i++) { - parts[i] = TezosLanguageUtil.normalizeMichelineWhiteSpace(parts[i]); - } - - return parts; -} - -function indexOfKey(container: any, key: string): number { - for (let i = 0; i < container.script.length; i++) { - if (container.script[i]['prim'] === key) { return i; } - } - - throw new Error(`${key} key was not found`); -} - -describe('Micheline to hex official contract tests', async () => { +describe('Micheline to hex contract tests', async () => { const contractSampleRoot = 'test/chain/tezos/lexer/samples'; - const p = new Promise((resolve, reject) => { - fs.readdir(contractSampleRoot, function(err, items) { - if (!!err) { reject(err); return; } - resolve([... new Set(items.map(f => path.basename(f, path.extname(f))))]); - }); - }); - const samples = await p; + let samples: string[] = glob.sync(`${contractSampleRoot}/**/*.micheline`); for (let i = 0; i < samples.length; i++) { const contractName = samples[i]; - if (!fs.existsSync(`${contractSampleRoot}/${contractName}.micheline`)) { continue; } - it(`Micheline to hex contract ${contractName}`, () => { - let micheline = fs.readFileSync(`${contractSampleRoot}/${contractName}.micheline`, 'utf8'); - let hexaline = fs.readFileSync(`${contractSampleRoot}/${contractName}.hex`, 'utf8'); + const d = path.dirname(contractName); + const t = path.basename(d, path.extname(d)); + const f = path.basename(contractName, path.extname(contractName)); - let parsedHex = michelineToHex(micheline); - expect(parsedHex).to.equal(hexaline); + if (!fs.existsSync(`${d}${path.sep}${f}.hex`)) { console.log(`Skipping ${t}${path.sep}${f}, missing hex!`); continue; } + + it(`Micheline to hex contract test: ${t}${path.sep}${f}`, () => { + const micheline = fs.readFileSync(`${d}${path.sep}${f}.micheline`, 'utf8'); + const hexaline = fs.readFileSync(`${d}${path.sep}${f}.hex`, 'utf8'); + + const parser = new nearley.Parser(nearley.Grammar.fromCompiled(Micheline.default)); + parser.feed(TezosLanguageUtil.normalizeMichelineWhiteSpace(micheline)); + const result = parser.results.join(''); + const parsedHex = ('0000000' + (result.length / 2).toString(16)).slice(-8) + result; // prefix byte length + + expect(parsedHex).to.equal(hexaline.trim()); }); } -}); \ No newline at end of file +}); diff --git a/ConseilJS-core/test/chain/tezos/lexer/MichelsonParser.spec.ts b/ConseilJS-core/test/chain/tezos/lexer/MichelsonParser.spec.ts new file mode 100644 index 00000000..699116b2 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/MichelsonParser.spec.ts @@ -0,0 +1,52 @@ +import 'mocha'; +import { expect } from 'chai'; + +import { TezosLanguageUtil } from "../../../../src/chain/tezos/TezosLanguageUtil"; +import * as fs from 'fs'; +import * as path from 'path'; +import glob from 'glob'; + +describe('Michelson/Micheline snippet tests', () => { + it('convert a pair with a map', () => { + const result = TezosLanguageUtil.translateMichelsonToMicheline('Pair (Some "value") { Elt "abc" (Pair 0 (Pair 0 (Pair 0 (Pair 0 (Pair 0 (Pair 0 0)))))); Elt "def" (Pair 0 (Pair 0 (Pair 0 (Pair 0 (Pair 0 (Pair 0 0)))))); Elt "ghi" (Pair 0 (Pair 0 (Pair 0 (Pair 0 (Pair 0 (Pair 0 0)))))); }'); + expect(result).to.equal('{ "prim": "Pair", "args": [ { "prim": "Some", "args": [ { "string": "value" } ] }, [ { "prim": "Elt", "args": [ { "string": "abc" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "int": "0" } ] } ] } ] } ] } ] } ] } ] },{ "prim": "Elt", "args": [ { "string": "def" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "int": "0" } ] } ] } ] } ] } ] } ] } ] },{ "prim": "Elt", "args": [ { "string": "ghi" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "prim": "Pair", "args": [ { "int": "0" }, { "int": "0" } ] } ] } ] } ] } ] } ] } ] } ] ] }'); + }); + + it('convert a map', () => { + const result = TezosLanguageUtil.translateMichelsonToMicheline('{Elt "btc-usd" (Pair "spsig1J5pAPREQCGiYwLofVwxEdUEpdvzoSSXW479S838XSKZj54wgqazZ8zYsAWwcLGpdJzVxyd9fygpWipzbfZGv4AhTpa5qP" (Pair 1591080000 (Pair 1591080060 (Pair 10090000000 (Pair 10092390000 (Pair 10088000000 (Pair 10092380000 3323367)))))));Elt "xtz-usd" (Pair "spsig1KqL61EMYdu8PWEeqTx4AVULDF5DxyXJcgMyVix7VV5XiNMM7AtHppYPpBDyDRYiwU5GmQdaHkLNRxB37oqQMgzvPyLEDM" (Pair 1591080000 (Pair 1591080060 (Pair 2971600 (Pair 2972300 (Pair 2969600 (Pair 2972300 428740000)))))));}'); + expect(result).to.equal('[ { "prim": "Elt", "args": [ { "string": "btc-usd" }, { "prim": "Pair", "args": [ { "string": "spsig1J5pAPREQCGiYwLofVwxEdUEpdvzoSSXW479S838XSKZj54wgqazZ8zYsAWwcLGpdJzVxyd9fygpWipzbfZGv4AhTpa5qP" }, { "prim": "Pair", "args": [ { "int": "1591080000" }, { "prim": "Pair", "args": [ { "int": "1591080060" }, { "prim": "Pair", "args": [ { "int": "10090000000" }, { "prim": "Pair", "args": [ { "int": "10092390000" }, { "prim": "Pair", "args": [ { "int": "10088000000" }, { "prim": "Pair", "args": [ { "int": "10092380000" }, { "int": "3323367" } ] } ] } ] } ] } ] } ] } ] } ] },{ "prim": "Elt", "args": [ { "string": "xtz-usd" }, { "prim": "Pair", "args": [ { "string": "spsig1KqL61EMYdu8PWEeqTx4AVULDF5DxyXJcgMyVix7VV5XiNMM7AtHppYPpBDyDRYiwU5GmQdaHkLNRxB37oqQMgzvPyLEDM" }, { "prim": "Pair", "args": [ { "int": "1591080000" }, { "prim": "Pair", "args": [ { "int": "1591080060" }, { "prim": "Pair", "args": [ { "int": "2971600" }, { "prim": "Pair", "args": [ { "int": "2972300" }, { "prim": "Pair", "args": [ { "int": "2969600" }, { "prim": "Pair", "args": [ { "int": "2972300" }, { "int": "428740000" } ] } ] } ] } ] } ] } ] } ] } ] } ]'); + }); + + it('convert a map as part of params', () => { + const result = TezosLanguageUtil.translateParameterMichelsonToMicheline('Left { Elt "xtz-btc" (Pair "spsig1Wd1evf5BGSqouVYsHu5aXRys6FgVxVs8JgAEB6ZyeeEmzVu3xK86KmNgR2QjTMyGDvrBRmimYuhgwgH5ZwkwWgEH9sz5v" (Pair "xtz-btc" (Pair 1590930900 (Pair 1590930960 (Pair 307 (Pair 307 (Pair 307 (Pair 307 255000000))))))));Elt "xtz-usd" (Pair "spsig1YncAhCisEzw7LCTQXG3aBbRuLoff2Q1MgxhbgdfAD4ZbMsEW83c5LKDf2PGqcsnouyxTmNpXQeGCWtoLxRpamjggPUoNd" (Pair "xtz-usd" (Pair 1590930960 (Pair 1590931020 (Pair 2930200 (Pair 2930200 (Pair 2929600 (Pair 2929600 58740000)))))))) }'); + expect(result).to.equal('{ "prim": "Left", "args": [ [ { "prim": "Elt", "args": [ { "string": "xtz-btc" }, { "prim": "Pair", "args": [ { "string": "spsig1Wd1evf5BGSqouVYsHu5aXRys6FgVxVs8JgAEB6ZyeeEmzVu3xK86KmNgR2QjTMyGDvrBRmimYuhgwgH5ZwkwWgEH9sz5v" }, { "prim": "Pair", "args": [ { "string": "xtz-btc" }, { "prim": "Pair", "args": [ { "int": "1590930900" }, { "prim": "Pair", "args": [ { "int": "1590930960" }, { "prim": "Pair", "args": [ { "int": "307" }, { "prim": "Pair", "args": [ { "int": "307" }, { "prim": "Pair", "args": [ { "int": "307" }, { "prim": "Pair", "args": [ { "int": "307" }, { "int": "255000000" } ] } ] } ] } ] } ] } ] } ] } ] } ] },{ "prim": "Elt", "args": [ { "string": "xtz-usd" }, { "prim": "Pair", "args": [ { "string": "spsig1YncAhCisEzw7LCTQXG3aBbRuLoff2Q1MgxhbgdfAD4ZbMsEW83c5LKDf2PGqcsnouyxTmNpXQeGCWtoLxRpamjggPUoNd" }, { "prim": "Pair", "args": [ { "string": "xtz-usd" }, { "prim": "Pair", "args": [ { "int": "1590930960" }, { "prim": "Pair", "args": [ { "int": "1590931020" }, { "prim": "Pair", "args": [ { "int": "2930200" }, { "prim": "Pair", "args": [ { "int": "2930200" }, { "prim": "Pair", "args": [ { "int": "2929600" }, { "prim": "Pair", "args": [ { "int": "2929600" }, { "int": "58740000" } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] ] }'); + }); +}); + +describe('Michelson/Micheline contract tests', async () => { + const contractSampleRoot = 'test/chain/tezos/lexer/samples'; + let samples: string[] = glob.sync(`${contractSampleRoot}/**/*.michelson`); + + for (let i = 0; i < samples.length; i++) { + const contractName = samples[i]; + const d = path.dirname(contractName); + const t = path.basename(d, path.extname(d)); + const f = path.basename(contractName, path.extname(contractName)); + + if (!fs.existsSync(`${d}${path.sep}${f}.micheline`)) { console.log(`Skipping ${t}${path.sep}${f}, missing micheline.`); continue; } + + it(`Michelson/Micheline contract test: ${t}${path.sep}${f}`, () => { + const michelson = fs.readFileSync(`${d}${path.sep}${f}.michelson`, 'utf8'); + const micheline = fs.readFileSync(`${d}${path.sep}${f}.micheline`, 'utf8'); + + let michelineObject = JSON.parse(micheline); + delete michelineObject.storage; + delete michelineObject.input; + delete michelineObject.amount; + const trimmedMicheline = JSON.stringify(michelineObject).replace(/[\n\r\t\s]/g,''); + const parsedMicheline = TezosLanguageUtil.translateMichelsonToMicheline(michelson).replace(/[\n\r\t\s]/g,''); + + expect(parsedMicheline).to.equal(trimmedMicheline); + }); + } +}); diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/_readme.txt new file mode 100644 index 00000000..f22879e9 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/_readme.txt @@ -0,0 +1,3 @@ +camlCase dex contracts, retrieved on 2019, Sep 19. + +https://gitlab.com/camlcase-dev/dexter/tree/master/dexter-contracts-morley/contracts diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/broker.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/broker.micheline new file mode 100644 index 00000000..d1dfff70 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/broker.micheline @@ -0,0 +1,475 @@ +[{ + "prim": "parameter", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "contract", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }, { + "prim": "address" + }] + }] + }] + }, { + "prim": "nat" + }] + }] +}, { + "prim": "storage", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "big_map", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "address" + }] + }] + }, { + "prim": "unit" + }] + }] +}, { + "prim": "code", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SENDER" + }, { + "prim": "CONTRACT", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "mutez" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "nat" + }] + }] + }] + }] + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "addLiquidityToGetBalance: sender contract does not match the expected type." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }] + ] + }, { + "prim": "ADDRESS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "ADDRESS" + }, { + "prim": "AMOUNT" + }, { + "prim": "PAIR" + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "RIGHT", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }], + [{ + "prim": "RIGHT", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "timestamp" + }] + }] + }] + }, { + "prim": "RIGHT", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "RIGHT", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "mutez" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SENDER" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "getBalanceToAddLiquidity:unexpected,exchangenotfoundforexistingtokencontract." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CONTRACT", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "mutez" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "nat" + }] + }] + }] + }] + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "getBalanceToAddLiquidity:exchangecontractdoesnotmatchtheexpectedtype." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }] + ] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }] + ] + }] + ] +}] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/broker.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/broker.michelson new file mode 100644 index 00000000..629f778e --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/broker.michelson @@ -0,0 +1,67 @@ +parameter (or (pair address + (contract (or (pair address + (pair address + nat)) + address))) + nat); +storage (pair (big_map address + (pair mutez + address)) + unit); +code { DUP; + CAR; + DIP { CDR }; + IF_LEFT { DUP; + CDR; + DIP { SWAP }; + DIP { SENDER; + CONTRACT (or (or (pair nat (pair nat timestamp)) (pair (pair nat mutez) (pair nat timestamp))) (or (pair nat timestamp) (or (pair nat (pair mutez timestamp)) nat))); + IF_NONE { PUSH string "addLiquidityToGetBalance: sender contract does not match the expected type."; + FAILWITH } + { } }; + ADDRESS; + DIP { ADDRESS; + AMOUNT; + PAIR; + SOME; + DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + SWAP; + DUP; + CAR; + RIGHT (pair address (pair address nat)); + DIP { CDR; + PUSH mutez 0 }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { RIGHT (pair nat (pair mutez timestamp)); + RIGHT (pair nat timestamp); + RIGHT (or (pair nat (pair nat timestamp)) (pair (pair nat mutez) (pair nat timestamp))); + DIP { SENDER; + DIP { DUP; + CAR }; + GET; + IF_NONE { PUSH string "getBalanceToAddLiquidity: unexpected, exchange not found for existing token contract."; + FAILWITH } + { }; + DUP; + CAR; + DIP { CDR }; + DIP { CONTRACT (or (or (pair nat (pair nat timestamp)) (pair (pair nat mutez) (pair nat timestamp))) (or (pair nat timestamp) (or (pair nat (pair mutez timestamp)) nat))); + IF_NONE { PUSH string "getBalanceToAddLiquidity: exchange contract does not match the expected type."; + FAILWITH } + { } } }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } }; \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/exchange.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/exchange.micheline new file mode 100644 index 00000000..c283a61b --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/exchange.micheline @@ -0,0 +1,3822 @@ +[{ + "prim": "parameter", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "mutez" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "nat" + }] + }] + }] + }] +}, { + "prim": "storage", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "big_map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "contract", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "contract", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }, { + "prim": "address" + }] + }] + }] + }, { + "prim": "nat" + }] + }] + }, { + "prim": "contract", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }, { + "prim": "address" + }] + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "mutez" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "timestamp" + }] + }] + }] + }] + }] + }] + }] + }] + }] +}, { + "prim": "code", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "NOW" + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "addLiquidity:Expectedthedeadlinetobegreaterthannow." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "addLiquidity:ExpectedmaxTokenstobegreaterthan0." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "AMOUNT" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "addLiquidity:Expectedtheamountsenttothecontracttobegreaterthan0." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "COMPARE" + }, { + "prim": "GT" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "SENDER" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "LEFT", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "mutez" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }, { + "prim": "LEFT", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "timestamp" + }] + }] + }] + }] + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "SENDER" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "LEFT", + "args": [{ + "prim": "nat" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "AMOUNT" + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }], + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1000000" + }] + }, { + "prim": "AMOUNT" + }, { + "prim": "COMPARE" + }, { + "prim": "GE" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "addLiquidity:amountislessthan1XTZ." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "BALANCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "SOME" + }, { + "prim": "SENDER" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "BALANCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SENDER" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SELF" + }, { + "prim": "ADDRESS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "LEFT", + "args": [{ + "prim": "address" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }] + ] + }], + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidity:expectedburnAmounttobegreaterthanzero." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "NOW" + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidity:expecteddeadlinetobegreaterthanthecurrenttime." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidity:expectedminMuteztobegreaterthanzero." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidity:expectedminTokenstobegreaterthanzero." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "RIGHT", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }, { + "prim": "LEFT", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "timestamp" + }] + }] + }] + }] + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "SENDER" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SENDER" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "LEFT", + "args": [{ + "prim": "nat" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "AMOUNT" + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }] + ] + }], + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "NOW" + }] + ] + }, { + "prim": "COMPARE" + }, { + "prim": "GE" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "tezToToken:thedeadlineislessthanthecurrenttime." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "AMOUNT" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "tezToToken:tezosSoldiszero." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "tezToToken:minTokensiszero." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "LEFT", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "timestamp" + }] + }] + }] + }, { + "prim": "RIGHT", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "mutez" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }] + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "SENDER" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SELF" + }, { + "prim": "ADDRESS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "LEFT", + "args": [{ + "prim": "nat" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "AMOUNT" + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }], + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "NOW" + }] + ] + }, { + "prim": "COMPARE" + }, { + "prim": "GE" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "tokenToTez: the deadline is less than the current time." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "tokenToTez:tokensSoldiszero." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "tokenToTez:minMuteziszero." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "RIGHT", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "RIGHT", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "mutez" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }] + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "SENDER" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SENDER" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "LEFT", + "args": [{ + "prim": "nat" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "AMOUNT" + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }], + [{ + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "ADDRESS" + }, { + "prim": "SENDER" + }, { + "prim": "COMPARE" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "continuation:this method only allows calls from the broker contract." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "SOURCE" + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "continuation:thecontinuationstoragecouldnotbefoundforthetransactionsource." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "NONE", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "mutez" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "timestamp" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "mutez" + }, { + "prim": "timestamp" + }] + }] + }] + }] + }] + }, { + "prim": "SOURCE" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "AMOUNT" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "MUL" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "AMOUNT" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "BALANCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "SUB" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "getMutezReservefailed,thenaturalvaluewasunexpectedlylessthanzero." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "addLiquidityContinuation:dividebyzeroerror,tezosReservewaszerointheformula(amount*tokenReserve/tezosReserve+1)." + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "1" + }] + }, { + "prim": "ADD" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "AMOUNT" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "MUL" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "addLiquidityContinuation:dividebyzeroerror,tokenReservewaszerointheformula(amount*totalSupply/tokenReserve)." + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "COMPARE" + }, { + "prim": "LE" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "addLiquidityContinuation:ExpectedmaxTokens>=tokenAmount" + }] + }, { + "prim": "FAILWITH" + }] + ] + }] + ] + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "COMPARE" + }, { + "prim": "LE" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "addLiquidityContinuation:ExpectedliquidityMinted>=minLiquidity" + }] + }, { + "prim": "FAILWITH" + }] + ] + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "SOURCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DUP" + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SOURCE" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SOURCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SELF" + }, { + "prim": "ADDRESS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "LEFT", + "args": [{ + "prim": "address" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }], + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "BALANCE" + }, { + "prim": "MUL" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidityContinuation:divisionbyzero" + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "COMPARE" + }, { + "prim": "GE" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidityContinuation:themutezamounttobewithdrawnislowerthantheminMutezthatyouhaveset." + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "MUL" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidityContinuation:divisionbyzero" + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "SOURCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SUB" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidityContinuation:burnAmountismorethanbalance." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SOURCE" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SUB" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidityContinuation:burnAmountismorethanbalance." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SOURCE" + }, { + "prim": "CONTRACT", + "args": [{ + "prim": "unit" + }] + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "removeLiquidityContinuation:thesourcecontractdoesnotmatchtheexpectedtype(contractUnit)." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }] + ] + }, { + "prim": "UNIT" + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "SELF" + }, { + "prim": "ADDRESS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SOURCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "LEFT", + "args": [{ + "prim": "address" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }] + ] + }], + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "AMOUNT" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "AMOUNT" + }, { + "prim": "BALANCE" + }, { + "prim": "SUB" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "inputReservemustbegreaterthanzero" + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "outputReservemustbegreaterthanzero" + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "997" + }] + }, { + "prim": "MUL" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "MUL" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "1000" + }] + }, { + "prim": "MUL" + }] + ] + }, { + "prim": "ADD" + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "getInputPricedivisionbyzero" + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "COMPARE" + }, { + "prim": "GE" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "tezToTokenContinuation:tokensboughtislessthantheminTokensamountyouset." + }] + }, { + "prim": "FAILWITH" + }] + ] + }] + ] + }, { + "prim": "SELF" + }, { + "prim": "ADDRESS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SOURCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "LEFT", + "args": [{ + "prim": "address" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "BALANCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "inputReservemustbegreaterthanzero" + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "COMPARE" + }, { + "prim": "LT" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "outputReservemustbegreaterthanzero" + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "997" + }] + }, { + "prim": "MUL" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "MUL" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "1000" + }] + }, { + "prim": "MUL" + }] + ] + }, { + "prim": "ADD" + }] + ] + }, { + "prim": "EDIV" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "getInputPricedivisionbyzero" + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "1" + }] + }, { + "prim": "MUL" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SOURCE" + }, { + "prim": "CONTRACT", + "args": [{ + "prim": "unit" + }] + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "tokenToTezContinuation:thesourcedoesnotmatchtheexpectedcontracttype(contractunit)." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "SWAP" + }, { + "prim": "UNIT" + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SOURCE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SELF" + }, { + "prim": "ADDRESS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "LEFT", + "args": [{ + "prim": "address" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }] + ] + }] + ] + }] + ] + }] + ] + }] + ] + }] + ] +}] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/exchange.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/exchange.michelson new file mode 100644 index 00000000..8522f42e --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/exchange.michelson @@ -0,0 +1,898 @@ +parameter (or (or (pair nat + (pair nat + timestamp)) + (pair (pair nat + mutez) + (pair nat + timestamp))) + (or (pair nat + timestamp) + (or (pair nat + (pair mutez + timestamp)) + nat))); +storage (pair (big_map address + nat) + (pair (pair (contract (or (pair address + (contract (or (pair address + (pair address + nat)) + address))) + nat)) + (contract (or (pair address + (pair address + nat)) + address))) + (pair nat + (map address + (or (or (pair nat + (pair nat + timestamp)) + (pair (pair nat + mutez) + (pair nat + timestamp))) + (or (pair nat + timestamp) + (pair nat + (pair mutez + timestamp)))))))); +code { DUP; + CAR; + DIP { CDR }; + IF_LEFT { IF_LEFT { DUP; + CDR; + CDR; + NOW; + COMPARE; + LT; + IF { } + { PUSH string "addLiquidity: Expected the deadline to be greater than now."; + FAILWITH }; + DUP; + CDR; + CAR; + PUSH nat 0; + COMPARE; + LT; + IF { } + { PUSH string "addLiquidity: Expected maxTokens to be greater than 0."; + FAILWITH }; + AMOUNT; + PUSH mutez 0; + COMPARE; + LT; + IF { } + { PUSH string "addLiquidity: Expected the amount sent to the contract to be greater than 0."; + FAILWITH }; + SWAP; + DUP; + CDR; + CDR; + CAR; + DIP { PUSH nat 0 }; + COMPARE; + GT; + IF { SWAP; + SENDER; + DIP { DIP { DUP }; + SWAP; + CDR; + CAR; + CDR }; + PAIR; + DIP { LEFT (pair (pair nat mutez) (pair nat timestamp)); + LEFT (or (pair nat timestamp) (pair nat (pair mutez timestamp))); + SOME; + DIP { DUP; + CDR; + CDR; + CDR }; + SENDER; + UPDATE; + DIP { DUP; + CDR; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR }; + LEFT nat; + DIP { DUP; + CDR; + CAR; + CAR; + AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { PUSH mutez 1000000; + AMOUNT; + COMPARE; + GE; + IF { } + { PUSH string "addLiquidity: amount is less than 1 XTZ."; + FAILWITH }; + DUP; + CAR; + BALANCE; + DIP { PUSH mutez 1 }; + EDIV; + IF_NONE { PUSH nat 0 } + { CAR }; + SOME; + SENDER; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DUP; + CDR; + CDR; + BALANCE; + DIP { PUSH mutez 1 }; + EDIV; + IF_NONE { PUSH nat 0 } + { CAR }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + SENDER; + DIP { SELF; + ADDRESS; + DIP { DIP { DUP }; + SWAP; + CDR; + CAR }; + PAIR }; + PAIR; + DIP { DIP { DROP } }; + LEFT address; + DIP { DUP; + CDR; + CAR; + CDR; + PUSH mutez 0 }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } } + { DUP; + CAR; + CAR; + PUSH nat 0; + COMPARE; + LT; + IF { } + { PUSH string "removeLiquidity: expected burnAmount to be greater than zero."; + FAILWITH }; + DUP; + CDR; + CDR; + NOW; + COMPARE; + LT; + IF { } + { PUSH string "removeLiquidity: expected deadline to be greater than the current time."; + FAILWITH }; + DUP; + CAR; + CDR; + PUSH mutez 0; + COMPARE; + LT; + IF { } + { PUSH string "removeLiquidity: expected minMutez to be greater than zero."; + FAILWITH }; + DUP; + CDR; + CAR; + PUSH nat 0; + COMPARE; + LT; + IF { } + { PUSH string "removeLiquidity: expected minTokens to be greater than zero."; + FAILWITH }; + RIGHT (pair nat (pair nat timestamp)); + LEFT (or (pair nat timestamp) (pair nat (pair mutez timestamp))); + SOME; + DIP { DUP; + CDR; + CDR; + CDR }; + SENDER; + UPDATE; + DIP { DUP; + CDR; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + SENDER; + DIP { DUP; + CDR; + CAR; + CDR }; + PAIR; + LEFT nat; + DIP { DUP; + CDR; + CAR; + CAR; + AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } } + { IF_LEFT { DUP; + CDR; + DIP { NOW }; + COMPARE; + GE; + IF { } + { PUSH string "tezToToken: the deadline is less than the current time."; + FAILWITH }; + AMOUNT; + PUSH mutez 0; + COMPARE; + LT; + IF { } + { PUSH string "tezToToken: tezosSold is zero."; + FAILWITH }; + DUP; + CAR; + PUSH nat 0; + COMPARE; + LT; + IF { } + { PUSH string "tezToToken: minTokens is zero."; + FAILWITH }; + LEFT (pair nat (pair mutez timestamp)); + RIGHT (or (pair nat (pair nat timestamp)) (pair (pair nat mutez) (pair nat timestamp))); + SOME; + DIP { DUP; + CDR; + CDR; + CDR }; + SENDER; + UPDATE; + DIP { DUP; + CDR; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + SELF; + ADDRESS; + DIP { DUP; + CDR; + CAR; + CDR }; + PAIR; + LEFT nat; + DIP { DUP; + CDR; + CAR; + CAR; + AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { IF_LEFT { DUP; + CDR; + CDR; + DIP { NOW }; + COMPARE; + GE; + IF { } + { PUSH string "tokenToTez: the deadline is less than the current time."; + FAILWITH }; + DUP; + CAR; + PUSH nat 0; + COMPARE; + LT; + IF { } + { PUSH string "tokenToTez: tokensSold is zero."; + FAILWITH }; + DUP; + CDR; + CAR; + PUSH mutez 0; + COMPARE; + LT; + IF { } + { PUSH string "tokenToTez: minMutez is zero."; + FAILWITH }; + RIGHT (pair nat timestamp); + RIGHT (or (pair nat (pair nat timestamp)) (pair (pair nat mutez) (pair nat timestamp))); + SOME; + DIP { DUP; + CDR; + CDR; + CDR }; + SENDER; + UPDATE; + DIP { DUP; + CDR; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + SENDER; + DIP { DUP; + CDR; + CAR; + CDR }; + PAIR; + LEFT nat; + DIP { DUP; + CDR; + CAR; + CAR; + AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { SWAP; + DUP; + CDR; + CAR; + CAR; + ADDRESS; + SENDER; + COMPARE; + EQ; + IF { } + { PUSH string "continuation: this method only allows calls from the broker contract."; + FAILWITH }; + DUP; + CDR; + CDR; + CDR; + SOURCE; + GET; + IF_NONE { PUSH string "continuation: the continuation storage could not be found for the transaction source."; + FAILWITH } + { }; + DIP { DUP; + CDR; + CDR; + CDR; + NONE (or (or (pair nat (pair nat timestamp)) (pair (pair nat mutez) (pair nat timestamp))) (or (pair nat timestamp) (pair nat (pair mutez timestamp)))); + SOURCE; + UPDATE; + DIP { DUP; + CDR; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR }; + IF_LEFT { IF_LEFT { SWAP; + DIP { SWAP }; + SWAP; + DUP; + AMOUNT; + DIP { PUSH mutez 1 }; + EDIV; + IF_NONE { PUSH nat 0 } + { CAR }; + MUL; + DIP { AMOUNT; + DIP { PUSH mutez 1 }; + EDIV; + IF_NONE { PUSH nat 0 } + { CAR }; + BALANCE; + DIP { PUSH mutez 1 }; + EDIV; + IF_NONE { PUSH nat 0 } + { CAR }; + SUB; + ISNAT; + IF_NONE { PUSH string "getMutezReserve failed, the natural value was unexpectedly less than zero."; + FAILWITH } + { } }; + EDIV; + IF_NONE { PUSH string "addLiquidityContinuation: divide by zero error, tezosReserve was zero in the formula (amount * tokenReserve / tezosReserve + 1)."; + FAILWITH } + { CAR }; + PUSH nat 1; + ADD; + DIP { SWAP }; + SWAP; + DUP; + CDR; + CDR; + CAR; + AMOUNT; + DIP { PUSH mutez 1 }; + EDIV; + IF_NONE { PUSH nat 0 } + { CAR }; + MUL; + DIP { SWAP }; + EDIV; + IF_NONE { PUSH string "addLiquidityContinuation: divide by zero error, tokenReserve was zero in the formula (amount * totalSupply / tokenReserve)."; + FAILWITH } + { CAR }; + DIP { DIP { DIP { DUP; + CDR; + CAR }; + DUP; + DIP { COMPARE; + LE; + IF { } + { PUSH string "addLiquidityContinuation: Expected maxTokens >= tokenAmount"; + FAILWITH } } } }; + DIP { DIP { SWAP }; + SWAP; + CAR }; + DUP; + DIP { COMPARE; + LE; + IF { } + { PUSH string "addLiquidityContinuation: Expected liquidityMinted >= minLiquidity"; + FAILWITH } }; + SWAP; + SOURCE; + DIP { DUP; + CAR }; + GET; + IF_NONE { PUSH nat 0 } + { }; + DIP { SWAP; + DUP }; + ADD; + SOME; + DIP { SWAP; + DUP; + CAR }; + SOURCE; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + SWAP; + DIP { DUP; + CDR; + CDR; + CAR }; + ADD; + DIP { DUP; + CDR; + CDR }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + SOURCE; + DIP { SELF; + ADDRESS; + DIP { DIP { DUP }; + SWAP }; + PAIR }; + PAIR; + DIP { DIP { DROP } }; + LEFT address; + DIP { DUP; + CDR; + CAR; + CDR; + PUSH mutez 0 }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { DUP; + CAR; + CAR; + BALANCE; + MUL; + DIP { SWAP; + DUP; + CDR; + CDR; + CAR }; + EDIV; + IF_NONE { PUSH string "removeLiquidityContinuation: division by zero"; + FAILWITH } + { CAR }; + DIP { SWAP; + DUP; + CAR; + CDR }; + DUP; + DIP { COMPARE; + GE; + IF { } + { PUSH string "removeLiquidityContinuation: the mutez amount to be withdrawn is lower than the minMutez that you have set."; + FAILWITH }; + SWAP }; + DIP { SWAP }; + SWAP; + DUP; + CAR; + CAR; + DIP { DIP { DIP { SWAP }; + SWAP }; + SWAP }; + MUL; + DIP { DIP { SWAP }; + SWAP; + DUP; + CDR; + CDR; + CAR }; + EDIV; + IF_NONE { PUSH string "removeLiquidityContinuation: division by zero"; + FAILWITH } + { CAR }; + SWAP; + SOURCE; + DIP { DUP; + CAR }; + GET; + IF_NONE { PUSH nat 0 } + { }; + DIP { DIP { SWAP }; + SWAP; + DUP; + CAR; + CAR }; + SUB; + ISNAT; + IF_NONE { PUSH string "removeLiquidityContinuation: burnAmount is more than balance."; + FAILWITH } + { }; + SOME; + DIP { SWAP; + DUP; + CAR }; + SOURCE; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DUP; + CDR; + CDR; + CAR; + DIP { SWAP; + CAR; + CAR }; + SUB; + ISNAT; + IF_NONE { PUSH string "removeLiquidityContinuation: burnAmount is more than balance."; + FAILWITH } + { }; + DIP { DUP; + CDR; + CDR }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + DIP { SWAP }; + SWAP; + DIP { SOURCE; + CONTRACT unit; + IF_NONE { PUSH string "removeLiquidityContinuation: the source contract does not match the expected type (contract Unit)."; + FAILWITH } + { } }; + UNIT; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + DIP { SWAP }; + SWAP; + SELF; + ADDRESS; + DIP { SOURCE; + DIP { DUP }; + PAIR }; + PAIR; + DIP { DROP }; + LEFT address; + DIP { SWAP; + DUP; + CDR; + CAR; + CDR; + PUSH mutez 0 }; + TRANSFER_TOKENS; + DIP { SWAP }; + CONS; + PAIR } } + { IF_LEFT { SWAP; + DIP { SWAP }; + SWAP; + AMOUNT; + DIP { PUSH mutez 1 }; + EDIV; + IF_NONE { PUSH nat 0 } + { CAR }; + DIP { AMOUNT; + BALANCE; + SUB; + DIP { PUSH mutez 1 }; + EDIV; + IF_NONE { PUSH nat 0 } + { CAR }; + DIP { DUP }; + PAIR }; + PAIR; + DIP { DROP }; + DUP; + CDR; + CAR; + PUSH nat 0; + COMPARE; + LT; + IF { } + { PUSH string "inputReserve must be greater than zero"; + FAILWITH }; + DUP; + CDR; + CDR; + PUSH nat 0; + COMPARE; + LT; + IF { } + { PUSH string "outputReserve must be greater than zero"; + FAILWITH }; + DUP; + CAR; + PUSH nat 997; + MUL; + DUP; + DIP { DIP { DUP; + CDR; + CDR }; + MUL }; + SWAP; + DIP { DIP { CDR; + CAR; + PUSH nat 1000; + MUL }; + ADD }; + EDIV; + IF_NONE { PUSH string "getInputPrice division by zero"; + FAILWITH } + { CAR }; + DIP { SWAP }; + DIP { CAR }; + DUP; + DIP { COMPARE; + GE; + IF { } + { PUSH string "tezToTokenContinuation: tokens bought is less than the minTokens amount you set."; + FAILWITH } }; + SELF; + ADDRESS; + DIP { SOURCE; + DIP { DUP }; + PAIR }; + PAIR; + DIP { DROP }; + LEFT address; + DIP { DUP; + CDR; + CAR; + CDR; + PUSH mutez 0 }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { DIP { SWAP }; + SWAP; + SWAP; + DUP; + CAR; + DIP { DIP { DUP }; + SWAP; + DIP { BALANCE; + DIP { PUSH mutez 1 }; + EDIV; + IF_NONE { PUSH nat 0 } + { CAR } }; + PAIR }; + PAIR; + DIP { DIP { DROP } }; + DUP; + CDR; + CAR; + PUSH nat 0; + COMPARE; + LT; + IF { } + { PUSH string "inputReserve must be greater than zero"; + FAILWITH }; + DUP; + CDR; + CDR; + PUSH nat 0; + COMPARE; + LT; + IF { } + { PUSH string "outputReserve must be greater than zero"; + FAILWITH }; + DUP; + CAR; + PUSH nat 997; + MUL; + DUP; + DIP { DIP { DUP; + CDR; + CDR }; + MUL }; + SWAP; + DIP { DIP { CDR; + CAR; + PUSH nat 1000; + MUL }; + ADD }; + EDIV; + IF_NONE { PUSH string "getInputPrice division by zero"; + FAILWITH } + { CAR }; + PUSH mutez 1; + MUL; + DUP; + DIP { DROP }; + SOURCE; + CONTRACT unit; + IF_NONE { PUSH string "tokenToTezContinuation: the source does not match the expected contract type (contract unit)."; + FAILWITH } + { }; + SWAP; + UNIT; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + SWAP; + DIP { SWAP }; + SOURCE; + DIP { SELF; + ADDRESS; + DIP { DUP; + SWAP; + CAR }; + PAIR }; + PAIR; + DIP { DROP }; + LEFT address; + DIP { DUP; + CDR; + CAR; + CDR; + PUSH mutez 0 }; + TRANSFER_TOKENS; + DIP { SWAP }; + CONS; + PAIR } } } } } }; \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/token.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/token.micheline new file mode 100644 index 00000000..1c643cb7 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/token.micheline @@ -0,0 +1,469 @@ +[{ + "prim": "parameter", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }, { + "prim": "address" + }] + }] +}, { + "prim": "storage", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "big_map", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "pair", + "args": [{ + "prim": "string" + }, { + "prim": "string" + }] + }] + }] + }] +}, { + "prim": "code", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "PAIR" + }], + [] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "SUB" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "performTransfer:notenoughtokensfortransferto" + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "PAIR" + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SOME" + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "RIGHT", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "contract", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }, { + "prim": "address" + }] + }] + }] + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SENDER" + }, { + "prim": "CONTRACT", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "contract", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }, { + "prim": "address" + }] + }] + }] + }, { + "prim": "nat" + }] + }] + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "GetBalance: sender contract does not match the expected type, first try." + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }] + ] + }] + ] +}] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/token.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/token.michelson new file mode 100644 index 00000000..b7ca6d8b --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-201909/token.michelson @@ -0,0 +1,96 @@ +parameter (or (pair address + (pair address + nat)) + address); +storage (pair (big_map address + (pair nat + (map address + nat))) + (pair nat + (pair string + string))); +code { DUP; + CAR; + DIP { CDR }; + IF_LEFT { DUP; + CAR; + DIP { SWAP }; + DIP { DUP; + CAR }; + GET; + IF_NONE { EMPTY_MAP address nat; + PUSH nat 0; + PAIR } + { }; + DUP; + CAR; + DIP { DIP { SWAP }; + SWAP; + DUP; + CDR; + CDR }; + SUB; + ISNAT; + IF_NONE { PUSH string "performTransfer: not enough tokens for transfer to"; + FAILWITH } + { DIP { SWAP; + CDR }; + PAIR }; + SOME; + DIP { DUP; + CAR }; + SWAP; + DIP { DIP { DIP { DUP; + CAR }; + SWAP } }; + UPDATE; + DIP { DUP; + CDR; + CAR }; + DUP; + DIP { SWAP }; + SWAP; + GET; + IF_NONE { EMPTY_MAP address nat; + PUSH nat 0; + PAIR } + { }; + DIP { SWAP; + DUP; + CDR; + CDR }; + SWAP; + DIP { DUP; + CAR }; + ADD; + DIP { CDR }; + PAIR; + SWAP; + CDR; + CAR; + DIP { SOME }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + NIL operation; + PAIR } + { DIP { DUP; + CAR }; + GET; + IF_NONE { PUSH nat 0 } + { CAR }; + RIGHT (pair address (contract (or (pair address (pair address nat)) address))); + DIP { SENDER; + CONTRACT (or (pair address (contract (or (pair address (pair address nat)) address))) nat); + IF_NONE { PUSH string "GetBalance: sender contract does not match the expected type, first try."; + FAILWITH } + { }; + PUSH mutez 0 }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } }; \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/_readme.txt new file mode 100644 index 00000000..27b75e46 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/_readme.txt @@ -0,0 +1,3 @@ +camlCase dex contracts, retrieved on 2020, Jan 24. + +https://gitlab.com/camlcase-dev/dexter/tree/master/dexter-contracts-ligo/contracts diff --git a/test/chain/tezos/lexer/samples/mist_wallet_current.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/exchange.micheline similarity index 55% rename from test/chain/tezos/lexer/samples/mist_wallet_current.micheline rename to ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/exchange.micheline index edce9112..0833b81d 100644 --- a/test/chain/tezos/lexer/samples/mist_wallet_current.micheline +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/exchange.micheline @@ -1,2996 +1,1935 @@ - { "script": - [ { "prim": "parameter", +[ { "prim": "parameter", + "args": + [ { "prim": "or", "args": [ { "prim": "or", "args": [ { "prim": "or", "args": [ { "prim": "pair", - "args": - [ { "prim": "contract", - "args": [ { "prim": "unit" } ], - "annots": - [ ":UnitContract", "%destination" ] }, - { "prim": "mutez", "annots": [ "%amount" ] } ], - "annots": [ ":transaction", "%Withdraw" ] }, - { "prim": "or", "args": [ { "prim": "pair", "args": [ { "prim": "address" }, - { "prim": "address" } ], - "annots": [ "%ChangeOwner" ] }, - { "prim": "or", + { "prim": "nat" } ] }, + { "prim": "pair", "args": - [ { "prim": "address", - "annots": [ "%AddOwner" ] }, - { "prim": "or", - "args": - [ { "prim": "address", - "annots": [ "%RemoveOwner" ] }, - { "prim": "or", - "args": - [ { "prim": "nat", - "annots": - [ "%ChangeRequirement" ] }, - { "prim": "or", - "args": - [ { "prim": "mutez", - "annots": - [ "%SetDailyLimit" ] }, - { "prim": "or", - "args": - [ { "prim": - "unit", - "annots": - [ "%ResetSpentToday" ] }, - { "prim": - "contract", - "args": - [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%Kill" ] } ] } ] } ] } ] } ] } ] } ], - "annots": [ ":wallet_operation", "%_Liq_entry_revoke" ] }, + [ { "prim": "nat" }, + { "prim": "timestamp" } ] } ], + "annots": [ "%addLiquidity" ] }, + { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "address" }, + { "prim": "nat" } ] }, + { "prim": "nat" } ], + "annots": [ "%approve" ] } ] }, { "prim": "or", "args": [ { "prim": "pair", "args": - [ { "prim": "address" }, - { "prim": "address" } ], - "annots": [ "%_Liq_entry_changeOwner" ] }, - { "prim": "or", + [ { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "address" }, + { "prim": "address" } ] }, + { "prim": "pair", + "args": + [ { "prim": "nat" }, + { "prim": "mutez" } ] } ] }, + { "prim": "pair", + "args": + [ { "prim": "nat" }, + { "prim": "timestamp" } ] } ], + "annots": [ "%removeLiquidity" ] }, + { "prim": "pair", "args": - [ { "prim": "address", - "annots": [ "%_Liq_entry_addOwner" ] }, - { "prim": "or", + [ { "prim": "pair", "args": - [ { "prim": "address", - "annots": - [ "%_Liq_entry_removeOwner" ] }, - { "prim": "or", + [ { "prim": "pair", "args": - [ { "prim": "nat", - "annots": - [ "%_Liq_entry_changeRequirement" ] }, - { "prim": "or", - "args": - [ { "prim": "mutez", - "annots": - [ "%_Liq_entry_setDailyLimit" ] }, - { "prim": "or", - "args": - [ { "prim": "unit", - "annots": - [ "%_Liq_entry_resetSpentToday" ] }, - { "prim": "or", - "args": - [ { "prim": - "unit", - "annots": - [ "%_Liq_entry_deposit" ] }, - { "prim": "or", - "args": - [ { "prim": - "contract", - "args": - [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%_Liq_entry_kill" ] }, - { "prim": - "pair", - "args": - [ { "prim": - "contract", - "args": - [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%destination" ] }, - { "prim": - "mutez", - "annots": - [ "%amount" ] } ], - "annots": - [ ":transaction", - "%_Liq_entry_withdraw" ] } ] } ] } ] } ] } ] } ] } ] } ] } ], - "annots": [ ":_entries" ] } ] }, - { "prim": "storage", + [ { "prim": "address" }, + { "prim": "address" } ] }, + { "prim": "pair", + "args": + [ { "prim": "nat" }, + { "prim": "mutez" } ] } ] }, + { "prim": "timestamp" } ], + "annots": [ "%tokenToXtz" ] } ] } ] }, + { "prim": "or", + "args": + [ { "prim": "pair", + "args": [ { "prim": "key_hash" }, { "prim": "bool" } ], + "annots": [ "%vote" ] }, + { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "address" }, { "prim": "nat" } ] }, + { "prim": "timestamp" } ], + "annots": [ "%xtzToToken" ] } ] } ] } ] }, + { "prim": "storage", + "args": + [ { "prim": "pair", "args": - [ { "prim": "pair", + [ { "prim": "big_map", "args": - [ { "prim": "nat", "annots": [ "%m_required" ] }, + [ { "prim": "address" }, { "prim": "pair", "args": - [ { "prim": "nat", "annots": [ "%m_num_owners" ] }, - { "prim": "pair", + [ { "prim": "pair", "args": - [ { "prim": "set", - "args": [ { "prim": "address" } ], - "annots": [ "%m_owners" ] }, - { "prim": "pair", + [ { "prim": "map", "args": - [ { "prim": "map", - "args": - [ { "prim": "bytes" }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": - [ "%yetNeeded" ] }, - { "prim": "set", - "args": - [ { "prim": "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": [ ":pending_state" ] } ], - "annots": [ "%m_pending" ] }, - { "prim": "pair", + [ { "prim": "address" }, + { "prim": "nat" } ], + "annots": [ "%allowances" ] }, + { "prim": "nat", "annots": [ "%balance" ] } ] }, + { "prim": "option", + "args": [ { "prim": "key_hash" } ], + "annots": [ "%vote" ] } ] } ], + "annots": [ "%accounts" ] }, + { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "option", + "args": + [ { "prim": "pair", "args": - [ { "prim": "mutez", - "annots": [ "%m_daily_limit" ] }, - { "prim": "pair", - "args": - [ { "prim": "mutez", - "annots": - [ "%m_spent_today" ] }, - { "prim": "timestamp", - "annots": [ "%m_last" ] } ] } ] } ] } ] } ] } ], - "annots": [ ":storage" ] } ] }, - { "prim": "code", - "args": - [ [ { "prim": "DUP" }, - { "prim": "DIP", - "args": - [ [ { "prim": "CDR", "annots": [ "@storage_slash_1" ] } ] ] }, - { "prim": "CAR", "annots": [ "@parameter_slash_2" ] }, - { "prim": "LAMBDA", + [ { "prim": "key_hash" }, + { "prim": "nat" } ] } ], + "annots": [ "%current_baker" ] }, + { "prim": "address", + "annots": [ "%token_address" ] } ] }, + { "prim": "pair", + "args": + [ { "prim": "nat", + "annots": [ "%token_pool" ] }, + { "prim": "nat", + "annots": [ "%total_liquidity" ] } ] } ] }, + { "prim": "map", + "args": [ { "prim": "key_hash" }, { "prim": "nat" } ], + "annots": [ "%votes" ] } ], "annots": [ "%s" ] } ] } ] }, + { "prim": "code", + "args": + [ [ { "prim": "LAMBDA", + "args": + [ { "prim": "mutez" }, { "prim": "nat" }, + [ { "prim": "DUP" }, + { "prim": "PUSH", + "args": [ { "prim": "mutez" }, { "int": "1" } ] }, + { "prim": "SWAP" }, { "prim": "EDIV" }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": "DIV by 0" } ] }, + { "prim": "FAILWITH" } ], [] ] }, + { "prim": "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": "DROP" } ] ] } ] ] }, + { "prim": "LAMBDA", + "args": + [ { "prim": "nat" }, { "prim": "mutez" }, + [ { "prim": "DUP" }, + { "prim": "PUSH", + "args": [ { "prim": "mutez" }, { "int": "1" } ] }, + { "prim": "SWAP" }, { "prim": "MUL" }, + { "prim": "DIP", "args": [ [ { "prim": "DROP" } ] ] } ] ] }, + { "prim": "EMPTY_MAP", + "args": [ { "prim": "address" }, { "prim": "nat" } ] }, + { "prim": "DUP" }, + { "prim": "NONE", "args": [ { "prim": "key_hash" } ] }, + { "prim": "DUP" }, + { "prim": "DIP", "args": [ [ { "prim": "PAIR" } ] ] }, + { "prim": "SWAP" }, + { "prim": "NONE", "args": [ { "prim": "nat" } ] }, + { "prim": "SWAP" }, + { "prim": "LAMBDA", + "args": + [ { "prim": "pair", + "args": [ { "prim": "string" }, { "prim": "int" } ] }, + { "prim": "nat" }, + [ { "prim": "DUP" }, { "prim": "CDR" }, { "prim": "DUP" }, + { "prim": "PUSH", + "args": [ { "prim": "nat" }, { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "SWAP" }, { "prim": "COMPARE" }, + { "prim": "GE" }, + { "prim": "IF", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, { "prim": "ABS" }, + { "prim": "DIP", + "args": [ [ { "prim": "DROP" } ] ] }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, { "prim": "Unit" } ] } ], + [ { "prim": "DIP", + "args": [ { "int": "2" }, [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", "args": [ { "int": "2" } ] }, + { "prim": "CAR" }, { "prim": "FAILWITH" } ] ] }, + { "prim": "DROP" }, { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", "args": [ { "int": "3" } ] } ] ] } ] ] }, + { "prim": "SWAP" }, + { "prim": "LAMBDA", + "args": + [ { "prim": "pair", "args": [ { "prim": "pair", "args": - [ { "prim": "or", + [ { "prim": "option", + "args": [ { "prim": "key_hash" } ] }, + { "prim": "map", "args": - [ { "prim": "pair", - "args": - [ { "prim": "contract", - "args": [ { "prim": "unit" } ], - "annots": - [ ":UnitContract", - "%destination" ] }, - { "prim": "mutez", - "annots": [ "%amount" ] } ], - "annots": [ ":transaction", "%Withdraw" ] }, - { "prim": "or", + [ { "prim": "address" }, { "prim": "nat" } ] } ] }, + { "prim": "pair", + "args": + [ { "prim": "address" }, + { "prim": "big_map", + "args": + [ { "prim": "address" }, + { "prim": "pair", "args": [ { "prim": "pair", "args": - [ { "prim": "address" }, - { "prim": "address" } ], - "annots": [ "%ChangeOwner" ] }, - { "prim": "or", - "args": - [ { "prim": "address", - "annots": [ "%AddOwner" ] }, - { "prim": "or", + [ { "prim": "map", "args": - [ { "prim": "address", - "annots": - [ "%RemoveOwner" ] }, - { "prim": "or", - "args": - [ { "prim": "nat", - "annots": - [ "%ChangeRequirement" ] }, - { "prim": "or", - "args": - [ { "prim": - "mutez", - "annots": - [ "%SetDailyLimit" ] }, - { "prim": - "or", - "args": - [ { "prim": - "unit", - "annots": - [ "%ResetSpentToday" ] }, - { "prim": - "contract", - "args": - [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%Kill" ] } ] } ] } ] } ] } ] } ] } ], - "annots": [ ":wallet_operation" ] }, + [ { "prim": "address" }, + { "prim": "nat" } ], + "annots": [ "%allowances" ] }, + { "prim": "nat", + "annots": [ "%balance" ] } ] }, + { "prim": "option", + "args": [ { "prim": "key_hash" } ], + "annots": [ "%vote" ] } ] } ] } ] } ] }, + { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "map", + "args": + [ { "prim": "address" }, { "prim": "nat" } ], + "annots": [ "%allowances" ] }, + { "prim": "nat", "annots": [ "%balance" ] } ] }, + { "prim": "option", "args": [ { "prim": "key_hash" } ], + "annots": [ "%vote" ] } ] }, + [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "SWAP" }, + { "prim": "CDR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "SWAP" }, { "prim": "CAR" } ] ] }, + { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" }, { "prim": "CDR" } ] ] }, + { "prim": "GET" }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "DIP", + "args": [ { "int": "2" }, [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", "args": [ { "int": "2" } ] }, + { "prim": "PUSH", + "args": [ { "prim": "nat" }, { "int": "0" } ] }, + { "prim": "SWAP" }, { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "PAIR" } ], + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": [ [ { "prim": "DROP" } ] ] } ] ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", "args": [ { "int": "3" } ] } ] ] } ] ] }, + { "prim": "SWAP" }, { "prim": "APPLY" }, + { "prim": "LAMBDA", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "big_map", + "args": + [ { "prim": "address" }, { "prim": "pair", "args": - [ { "prim": "nat", - "annots": [ "%m_required" ] }, - { "prim": "pair", + [ { "prim": "pair", "args": - [ { "prim": "nat", - "annots": [ "%m_num_owners" ] }, - { "prim": "pair", + [ { "prim": "map", "args": - [ { "prim": "set", - "args": - [ { "prim": "address" } ], - "annots": [ "%m_owners" ] }, - { "prim": "pair", - "args": - [ { "prim": "map", - "args": - [ { "prim": "bytes" }, - { "prim": "pair", - "args": - [ { "prim": - "nat", - "annots": - [ "%yetNeeded" ] }, - { "prim": - "set", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": - [ ":pending_state" ] } ], - "annots": - [ "%m_pending" ] }, - { "prim": "pair", - "args": - [ { "prim": "mutez", - "annots": - [ "%m_daily_limit" ] }, - { "prim": "pair", - "args": - [ { "prim": - "mutez", - "annots": - [ "%m_spent_today" ] }, - { "prim": - "timestamp", - "annots": - [ "%m_last" ] } ] } ] } ] } ] } ] } ], - "annots": [ ":storage" ] } ] }, - { "prim": "or", + [ { "prim": "address" }, + { "prim": "nat" } ], + "annots": [ "%allowances" ] }, + { "prim": "nat", + "annots": [ "%balance" ] } ] }, + { "prim": "option", + "args": [ { "prim": "key_hash" } ], + "annots": [ "%vote" ] } ] } ], + "annots": [ "%accounts" ] }, + { "prim": "pair", "args": [ { "prim": "pair", "args": - [ { "prim": "nat", - "annots": [ "%m_required" ] }, + [ { "prim": "pair", + "args": + [ { "prim": "option", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "key_hash" }, + { "prim": "nat" } ] } ], + "annots": [ "%current_baker" ] }, + { "prim": "address", + "annots": [ "%token_address" ] } ] }, { "prim": "pair", "args": [ { "prim": "nat", - "annots": [ "%m_num_owners" ] }, - { "prim": "pair", + "annots": [ "%token_pool" ] }, + { "prim": "nat", + "annots": [ "%total_liquidity" ] } ] } ] }, + { "prim": "map", + "args": + [ { "prim": "key_hash" }, { "prim": "nat" } ], + "annots": [ "%votes" ] } ], + "annots": [ "%s" ] } ] }, + { "prim": "pair", + "args": + [ { "prim": "option", + "args": [ { "prim": "operation" } ] }, + { "prim": "pair", + "args": + [ { "prim": "big_map", + "args": + [ { "prim": "address" }, + { "prim": "pair", + "args": + [ { "prim": "pair", "args": - [ { "prim": "set", + [ { "prim": "map", "args": - [ { "prim": "address" } ], - "annots": [ "%m_owners" ] }, - { "prim": "pair", - "args": - [ { "prim": "map", - "args": - [ { "prim": "bytes" }, - { "prim": "pair", - "args": - [ { "prim": - "nat", - "annots": - [ "%yetNeeded" ] }, - { "prim": - "set", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": - [ ":pending_state" ] } ], - "annots": - [ "%m_pending" ] }, - { "prim": "pair", - "args": - [ { "prim": "mutez", - "annots": - [ "%m_daily_limit" ] }, - { "prim": "pair", - "args": - [ { "prim": - "mutez", - "annots": - [ "%m_spent_today" ] }, - { "prim": - "timestamp", - "annots": - [ "%m_last" ] } ] } ] } ] } ] } ] } ], - "annots": - [ ":storage", "%Confirmations_Needed" ] }, + [ { "prim": "address" }, + { "prim": "nat" } ], + "annots": [ "%allowances" ] }, + { "prim": "nat", + "annots": [ "%balance" ] } ] }, + { "prim": "option", + "args": [ { "prim": "key_hash" } ], + "annots": [ "%vote" ] } ] } ], + "annots": [ "%accounts" ] }, { "prim": "pair", "args": - [ { "prim": "nat", - "annots": [ "%m_required" ] }, - { "prim": "pair", + [ { "prim": "pair", "args": - [ { "prim": "nat", - "annots": [ "%m_num_owners" ] }, - { "prim": "pair", + [ { "prim": "pair", "args": - [ { "prim": "set", - "args": - [ { "prim": "address" } ], - "annots": [ "%m_owners" ] }, - { "prim": "pair", + [ { "prim": "option", "args": - [ { "prim": "map", - "args": - [ { "prim": "bytes" }, - { "prim": "pair", - "args": - [ { "prim": - "nat", - "annots": - [ "%yetNeeded" ] }, - { "prim": - "set", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": - [ ":pending_state" ] } ], - "annots": - [ "%m_pending" ] }, - { "prim": "pair", + [ { "prim": "pair", "args": - [ { "prim": "mutez", - "annots": - [ "%m_daily_limit" ] }, - { "prim": "pair", - "args": - [ { "prim": - "mutez", - "annots": - [ "%m_spent_today" ] }, - { "prim": - "timestamp", - "annots": - [ "%m_last" ] } ] } ] } ] } ] } ] } ], - "annots": [ ":storage", "%Execute" ] } ], - "annots": [ ":check_result" ] }, - [ { "prim": "RENAME", - "annots": [ "@_op_storage_slash_12" ] }, - { "prim": "DUP" }, - { "prim": "CDR", "annots": [ "@storage" ] }, - { "prim": "SOURCE", "annots": [ "@owner" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", "annots": [ "@owner" ] } ] ] }, - { "prim": "SWAP" } ], { "prim": "PAIR" }, - { "prim": "DUP" }, - { "prim": "CDR", "annots": [ "@storage" ] }, - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CAR", "annots": [ "%m_owners" ] } ], - { "prim": "SWAP" }, - { "prim": "CAR", "annots": [ "@addr" ] }, - { "prim": "MEM" }, { "prim": "NOT" }, - { "prim": "IF", + [ { "prim": + "key_hash" }, + { "prim": "nat" } ] } ], + "annots": + [ "%current_baker" ] }, + { "prim": "address", + "annots": + [ "%token_address" ] } ] }, + { "prim": "pair", + "args": + [ { "prim": "nat", + "annots": [ "%token_pool" ] }, + { "prim": "nat", + "annots": + [ "%total_liquidity" ] } ] } ] }, + { "prim": "map", + "args": + [ { "prim": "key_hash" }, + { "prim": "nat" } ], + "annots": [ "%votes" ] } ], + "annots": [ "%s" ] } ] } ] }, + [ { "prim": "DUP" }, + { "prim": "NONE", + "args": + [ { "prim": "pair", "args": - [ [ { "prim": "UNIT" }, { "prim": "FAILWITH" } ], - [ { "prim": "UNIT" } ] ] }, { "prim": "DROP" }, - [ { "prim": "DIP", + [ { "prim": "key_hash" }, { "prim": "nat" } ] } ] }, + { "prim": "SWAP" }, { "prim": "CDR" }, { "prim": "CDR" }, + { "prim": "ITER", + "args": + [ [ { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, { "prim": "CDR" }, + { "prim": "DIP", + "args": [ { "int": "3" }, [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", "args": [ { "int": "3" } ] }, + { "prim": "IF_NONE", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "@op" ] }, - { "prim": "PACK", "annots": [ "@op_bytes" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", + { "prim": "SWAP" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "PAIR" }, { "prim": "SOME" }, + { "prim": "DIP", "args": - [ [ { "prim": "DUP", - "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", "annots": [ "%m_pending" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@op_bytes" ] } ] ] }, - { "prim": "SWAP" } ], { "prim": "GET" }, - { "prim": "IF_NONE", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": "set", - "args": [ { "prim": "address" } ] }, - [] ] }, + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] }, + { "prim": "DROP" } ] ] }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": [ { "int": "3" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CDR" } ] ] }, + { "prim": "COMPARE" }, { "prim": "GT" }, + { "prim": "IF", "args": [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "2" } ] }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": "DUP", - "annots": - [ "@storage" ] } ] ] }, + [ [ { "prim": "DUP" } ] ] }, { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "PAIR", - "annots": [ "%yetNeeded", "%ownersDone" ] } ], - [] ] }, - { "prim": "RENAME", "annots": [ "@pending" ] }, - { "prim": "DUP", "annots": [ "@pending" ] }, - { "prim": "CDR", "annots": [ "%ownersDone" ] }, - [ { "prim": "DIP", + { "prim": "PAIR" }, + { "prim": "SOME" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] }, + { "prim": "DROP" } ] ] }, + { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": [ { "int": "4" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ] ] }, + { "prim": "DIP", + "args": [ [ { "prim": "DROP" } ] ] } ] ] }, + { "prim": "DROP", "args": [ { "int": "4" } ] } ] ] }, + { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "SWAP" }, + { "prim": "CDR" }, { "prim": "DUP" }, + { "prim": "CDR" }, { "prim": "SWAP" }, + { "prim": "CAR" }, { "prim": "DUP" }, + { "prim": "CDR" }, { "prim": "SWAP" }, + { "prim": "CAR" }, { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, { "prim": "PAIR" }, { "prim": "PAIR" }, + { "prim": "SWAP" }, { "prim": "PAIR" }, { "prim": "SWAP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DROP" } ] ] } ] ] }, + { "prim": "NONE", "args": [ { "prim": "operation" } ] }, + { "prim": "DIP", + "args": [ { "int": "2" }, [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", "args": [ { "int": "2" } ] }, + { "prim": "CDR" }, { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "unit" }, { "prim": "Unit" } ] } ], + [ { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "SOME" }, { "prim": "SET_DELEGATE" }, + { "prim": "DUP" }, { "prim": "SOME" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "2" } ] }, + { "prim": "DROP" } ] ] }, + { "prim": "DIP", + "args": + [ { "int": "3" }, [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", "args": [ { "int": "2" } ] }, + { "prim": "DROP", "args": [ { "int": "2" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, { "prim": "Unit" } ] } ] ] }, + { "prim": "DROP" }, { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ { "int": "2" }, [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", "args": [ { "int": "2" } ] } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", "args": [ { "int": "3" } ] } ] ] } ] ] }, + { "prim": "DIP", + "args": [ { "int": "8" }, [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", "args": [ { "int": "8" } ] }, { "prim": "CDR" }, + { "prim": "DIP", + "args": [ { "int": "9" }, [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", "args": [ { "int": "9" } ] }, { "prim": "CAR" }, + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "DUP" }, + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "DUP" }, + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "DUP" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": "DUP", - "annots": [ "@owner" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "MEM" }, - { "prim": "IF", - "args": - [ [ { "prim": "UNIT" }, { "prim": "FAILWITH" } ], - [ { "prim": "UNIT" } ] ] }, { "prim": "DROP" }, - { "prim": "PUSH", - "args": [ { "prim": "nat" }, { "int": "1" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", "annots": [ "@pending" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%yetNeeded" ] }, - { "prim": "COMPARE" }, { "prim": "LE" }, - { "prim": "IF", - "args": - [ [ [ { "prim": "DIP", + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "4" } ] } ] ] }, + { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "2" } ] }, + { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] }, + { "prim": "CDR" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "5" } ] }, + { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "CDR" }, { "prim": "NOW" }, + { "prim": "COMPARE" }, { "prim": "LT" }, + { "prim": "IF", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "SWAP" }, { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_num_owners" ] }, - { "prim": "SWAP" }, { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "PUSH", - "args": - [ { "prim": "map", - "args": - [ { "prim": "bytes" }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": - [ "%yetNeeded" ] }, - { "prim": "set", + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "2" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "COMPARE" }, + { "prim": "GT" }, + { "prim": "IF", + "args": + [ [ { "prim": "PUSH", "args": - [ { "prim": "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": [ ":pending_state" ] } ] }, - [] ] }, - { "prim": "PAIR", - "annots": [ "%m_pending" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "@storage", "%m_required" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%m_required" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": - [ "%m_num_owners" ] }, - { "prim": "pair", + [ { "prim": "mutez" }, + { "int": "0" } ] }, + { "prim": "AMOUNT" }, + { "prim": "COMPARE" }, + { "prim": "GT" }, + { "prim": "IF", "args": - [ { "prim": "set", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%m_owners" ] }, - { "prim": "pair", - "args": - [ { "prim": "map", - "args": - [ { "prim": - "bytes" }, - { "prim": - "pair", + [ [ { "prim": "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "PUSH", + "args": + [ { "prim": + "nat" }, + { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "COMPARE" }, + { "prim": "GT" }, + { "prim": "IF", + "args": + [ [ { "prim": + "DIP", "args": + [ { "int": + "3" }, [ { "prim": - "nat", - "annots": - [ "%yetNeeded" ] }, - { "prim": - "set", + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ { "prim": - "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": - [ ":pending_state" ] } ], - "annots": - [ "%m_pending" ] }, - { "prim": - "pair", - "args": - [ { "prim": - "mutez", - "annots": - [ "%m_daily_limit" ] }, - { "prim": - "pair", + [ { "int": + "3" } ] }, + { "prim": + "PUSH", "args": [ { "prim": - "mutez", - "annots": - [ "%m_spent_today" ] }, - { "prim": - "timestamp", - "annots": - [ "%m_last" ] } ] } ] } ] } ] } ] } ], - "annots": [ ":storage" ] } ], - "annots": [ "%", "%Execute" ] } ], - [ { "prim": "DUP", "annots": [ "@pending" ] }, - { "prim": "CDR", - "annots": [ "%ownersDone" ] }, - { "prim": "PUSH", - "args": - [ { "prim": "int" }, { "int": "1" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@pending" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%yetNeeded" ] }, - { "prim": "INT" }, { "prim": "SUB" }, - { "prim": "DUP" }, { "prim": "ABS" }, - { "prim": "SWAP" }, { "prim": "GE" }, - { "prim": "IF", - "args": - [ [], - [ { "prim": "UNIT" }, - { "prim": "FAILWITH" } ] ] }, - { "prim": "RENAME", - "annots": [ "@new_yetNeeded" ] }, - { "prim": "PAIR", - "annots": - [ "@pending", "%yetNeeded", - "%ownersDone" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "SWAP" }, { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_num_owners" ] }, - { "prim": "SWAP" }, { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, { "prim": "CDR" }, - { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "nat" }, + { "int": + "0" } ] }, + { "prim": + "SWAP" }, + { "prim": + "COMPARE" }, + { "prim": + "GT" }, + { "prim": + "IF", "args": [ [ { "prim": + "AMOUNT" }, + { "prim": + "BALANCE" }, + { "prim": + "SUB" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "18" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "18" } ] } ] ] }, + { "prim": + "EXEC" }, + { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + [ { "int": + "19" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "19" } ] }, { "prim": - "SWAP" } ] ] }, + "AMOUNT" }, + { "prim": + "EXEC" }, + { "prim": + "DUP" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": [ "%m_pending" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@pending" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%yetNeeded" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "3" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@pending" ] } ] ] }, + [ { "int": + "3" } ] }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" }, + { "prim": + "CAR" } ] ] }, + { "prim": + "MUL" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "%ownersDone" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": - "DIP", + "DUP" } ] ] }, + { "prim": + "SWAP" } ] ] }, + { "prim": + "EDIV" }, + { "prim": + "IF_NONE", "args": [ [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "DIV by 0" } ] }, + { "prim": + "FAILWITH" } ], + [] ] }, + { "prim": + "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": + "DUP" } ] ] }, + { "prim": + "SWAP" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@owner" ] } ] ] }, + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "4" } ] }, { "prim": - "SWAP" } ] ] }, + "CDR" }, { "prim": - "SWAP" } ] ] }, + "CAR" }, { "prim": - "SWAP" } ] ] }, + "CDR" }, + { "prim": + "CDR" } ] ] }, + { "prim": + "MUL" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": "bool" }, - { "prim": "True" } ] } ] ] }, - { "prim": "UPDATE" }, { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "@pending", "%yetNeeded", - "%ownersDone" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "2" } ] } ] ] }, + { "prim": + "EDIV" }, + { "prim": + "IF_NONE", + "args": [ [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "DIV by 0" } ] }, + { "prim": + "FAILWITH" } ], + [] ] }, + { "prim": + "CAR" }, + { "prim": + "DIP", + "args": + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "6" } ] }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@op_bytes" ] } ] ] }, + "DUP" } ] ] }, { "prim": "SWAP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "COMPARE" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": [ [ { "prim": "SOME" } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "GE" }, + { "prim": + "IF", "args": [ [ { "prim": + "DUP" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ], - { "prim": "UPDATE" }, - { "prim": "PAIR", - "annots": [ "%m_pending" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "@storage", "%m_required" ] }, - { "prim": "LEFT", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%m_required" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": - [ "%m_num_owners" ] }, - { "prim": "pair", - "args": - [ { "prim": "set", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%m_owners" ] }, - { "prim": "pair", - "args": - [ { "prim": "map", - "args": - [ { "prim": - "bytes" }, + [ { "int": + "7" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "pair", + "DIG", "args": - [ { "prim": - "nat", - "annots": - [ "%yetNeeded" ] }, + [ { "int": + "7" } ] } ] ] }, + { "prim": + "COMPARE" }, { "prim": - "set", + "GE" }, + { "prim": + "IF", + "args": + [ [ { "prim": + "DIP", "args": + [ { "int": + "8" }, [ { "prim": - "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": - [ ":pending_state" ] } ], - "annots": - [ "%m_pending" ] }, - { "prim": - "pair", - "args": - [ { "prim": - "mutez", - "annots": - [ "%m_daily_limit" ] }, + "DUP" } ] ] }, { "prim": - "pair", + "DIG", "args": - [ { "prim": - "mutez", - "annots": - [ "%m_spent_today" ] }, + [ { "int": + "8" } ] }, { "prim": - "timestamp", - "annots": - [ "%m_last" ] } ] } ] } ] } ] } ] } ], - "annots": [ ":storage" ] } ], - "annots": [ "%Confirmations_Needed", "%" ] } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": "DROP" }, { "prim": "DROP" }, - { "prim": "DROP" }, { "prim": "DROP" }, - { "prim": "DROP" } ] ] } ] ], - "annots": [ "@confirmAndCheck" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", "annots": [ "@parameter" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", "annots": [ "@op_slash_33" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DUP", "annots": [ "@storage" ] }, - { "prim": "DUP", "annots": [ "@storage" ] }, - { "prim": "SOURCE" }, { "prim": "PAIR" }, - { "prim": "DUP" }, - { "prim": "CDR", "annots": [ "@storage" ] }, - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CAR", "annots": [ "%m_owners" ] } ], - { "prim": "SWAP" }, - { "prim": "CAR", "annots": [ "@addr" ] }, - { "prim": "MEM" }, - { "prim": "IF", - "args": - [ [ { "prim": "UNIT" } ], - [ { "prim": "UNIT" }, { "prim": "FAILWITH" } ] ] }, - { "prim": "DIP", "args": [ [ { "prim": "DROP" } ] ] }, - { "prim": "DROP" }, - { "prim": "SOURCE", "annots": [ "@owner" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@op" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "PACK", "annots": [ "@op_bytes" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", "annots": [ "%m_pending" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@op_bytes" ] } ] ] }, - { "prim": "SWAP" } ], { "prim": "GET" }, - { "prim": "IF_NONE", - "args": - [ [ { "prim": "UNIT" }, { "prim": "FAILWITH" } ], - [ { "prim": "DUP", "annots": [ "@pending" ] }, - { "prim": "CDR", - "annots": [ "%ownersDone" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@owner" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "MEM" }, - { "prim": "IF", - "args": - [ [ { "prim": "DUP", - "annots": [ "@pending" ] }, - { "prim": "CDR", - "annots": [ "%ownersDone" ] }, - { "prim": "PUSH", - "args": - [ { "prim": "nat" }, - { "int": "1" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@pending" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": [ "%yetNeeded" ] }, - { "prim": "ADD" }, - { "prim": "PAIR", - "annots": - [ "@pending", "%yetNeeded", - "%ownersDone" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "5" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": + [ { "int": + "5" } ] }, + { "prim": + "CAR" } ] ] }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "16" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + [ { "int": + "16" } ] } ] ] }, { "prim": - "SWAP" } ] ] }, + "EXEC" }, { "prim": - "SWAP" } ] ] }, + "DUP" }, { "prim": - "SWAP" } ] ] }, + "CAR" }, + { "prim": + "CDR" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": [ "%m_pending" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@pending" ] } ] ] }, + "DUP" } ] ] }, { "prim": "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": [ "%yetNeeded" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": + { "prim": + "ADD" }, + { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "10" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "10" } ] }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@pending" ] } ] ] }, + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "SWAP" }, + { "prim": + "CAR" }, + { "prim": + "CAR" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "%ownersDone" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": + "DUP" } ] ] }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": + "DUP" } ] ] }, + { "prim": + "SWAP" }, + { "prim": + "CDR" } ] ] }, + { "prim": + "PAIR" }, + { "prim": + "SOME" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "7" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "7" } ] }, + { "prim": + "CAR" } ] ] } ] ] }, + { "prim": + "UPDATE" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@owner" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, + [ { "int": + "7" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "7" } ] }, { "prim": - "SWAP" } ] ] }, + "CDR" } ] ] }, { "prim": - "SWAP" } ] ] }, + "PAIR" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": "bool" }, - { "prim": "False" } ] } ] ] }, - { "prim": "UPDATE" }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "@pending", "%yetNeeded", - "%ownersDone" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "8" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", "args": - [ [ { "prim": + [ { "int": + "7" } ] }, + { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "7" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@op_bytes" ] } ] ] }, + [ { "int": + "7" } ] }, { "prim": - "SWAP" } ] ] }, + "CDR" }, { "prim": - "SWAP" } ] ] }, + "CAR" }, { "prim": - "SWAP" } ] ] }, + "CDR" }, + { "prim": + "CDR" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": [ [ { "prim": "SOME" } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "2" } ] } ] ] }, + { "prim": + "ADD" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ], - { "prim": "UPDATE" }, - { "prim": "PAIR", - "annots": [ "%m_pending" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_required" ] }, - { "prim": "NIL", - "args": [ { "prim": "operation" } ], - "annots": [ "@no_op" ] }, - { "prim": "PAIR" } ], - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "NIL", - "args": [ { "prim": "operation" } ], - "annots": [ "@no_op" ] }, - { "prim": "PAIR" } ] ] }, - { "prim": "DIP", - "args": [ [ { "prim": "DROP" } ] ] } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": "DROP" }, { "prim": "DROP" }, - { "prim": "DROP" }, { "prim": "DROP" } ] ] } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": [ "@parameter_slash_40" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@confirmAndCheck" ] } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@parameter" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "LEFT", - "args": - [ { "prim": "or", - "args": - [ { "prim": "address", - "annots": [ "%AddOwner" ] }, - { "prim": "or", - "args": - [ { "prim": "address", - "annots": - [ "%RemoveOwner" ] }, - { "prim": "or", - "args": - [ { "prim": "nat", - "annots": - [ "%ChangeRequirement" ] }, - { "prim": "or", - "args": - [ { "prim": - "mutez", - "annots": - [ "%SetDailyLimit" ] }, - { "prim": "or", - "args": - [ { "prim": - "unit", - "annots": - [ "%ResetSpentToday" ] }, - { "prim": - "contract", - "args": + [ { "int": + "7" }, [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%Kill" ] } ] } ] } ] } ] } ] } ], - "annots": [ "%ChangeOwner", "%" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "contract", - "args": [ { "prim": "unit" } ], - "annots": - [ ":UnitContract", - "%destination" ] }, - { "prim": "mutez", - "annots": [ "%amount" ] } ], - "annots": [ ":transaction" ] } ], - "annots": [ "%", "%_" ] }, - { "prim": "PAIR" }, { "prim": "EXEC" }, - { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": [ "@storage_slash_42" ] }, - { "prim": "NIL", - "args": [ { "prim": "operation" } ], - "annots": [ "@no_op" ] }, - { "prim": "PAIR" } ], - [ { "prim": "RENAME", - "annots": [ "@storage_slash_43" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@parameter" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "@from" ] }, - [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "@_to" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@from" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "PAIR" }, - { "prim": "DUP" }, - { "prim": "CDR", - "annots": [ "@storage" ] }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": [ "%m_owners" ] } ], - { "prim": "SWAP" }, - { "prim": "CAR", - "annots": [ "@addr" ] }, - { "prim": "MEM" }, { "prim": "NOT" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "PAIR" }, - { "prim": "DUP" }, - { "prim": "CDR", - "annots": [ "@storage" ] }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": [ "%m_owners" ] } ], - { "prim": "SWAP" }, - { "prim": "CAR", - "annots": [ "@addr" ] }, - { "prim": "MEM" }, { "prim": "OR" }, - { "prim": "IF", - "args": - [ [ { "prim": "UNIT" }, - { "prim": "FAILWITH" } ], - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": + [ { "int": + "7" } ] }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "SWAP" }, + { "prim": + "CDR" }, + { "prim": + "DUP" }, + { "prim": + "CDR" }, + { "prim": + "SWAP" }, + { "prim": + "CAR" }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "SWAP" }, + { "prim": + "CDR" }, + { "prim": + "CAR" } ] ] }, + { "prim": + "SWAP" }, + { "prim": + "PAIR" }, + { "prim": + "SWAP" }, + { "prim": + "PAIR" }, + { "prim": + "PAIR" }, + { "prim": + "SWAP" }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "PUSH", - "args": - [ { "prim": "map", - "args": - [ { "prim": "bytes" }, - { "prim": "pair", - "args": - [ { "prim": - "nat", - "annots": - [ "%yetNeeded" ] }, - { "prim": - "set", - "args": + [ { "int": + "8" }, [ { "prim": - "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": - [ ":pending_state" ] } ] }, - [] ] }, - { "prim": "PAIR", - "annots": [ "%m_pending" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_required" ] }, - { "prim": "DUP", - "annots": [ "@storage" ] }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "DROP" } ] ] }, + { "prim": + "DUG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": [ "%m_owners" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": + [ { "int": + "7" } ] }, + { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "7" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": + [ { "int": + "7" } ] }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@from" ] } ] ] }, + [ { "int": + "3" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "3" } ] } ] ] }, { "prim": - "SWAP" } ] ] }, + "ADD" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": - "bool" }, - { "prim": - "False" } ] } ] ] }, - { "prim": "UPDATE" }, - { "prim": "PAIR", - "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "@storage", - "%m_required" ] }, - { "prim": "DUP", - "annots": [ "@storage" ] }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": [ "%m_owners" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "7" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": + [ { "int": + "7" } ] }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "SWAP" }, + { "prim": + "CDR" }, + { "prim": + "DUP" }, + { "prim": + "CDR" }, + { "prim": + "SWAP" }, + { "prim": + "CAR" }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "SWAP" }, + { "prim": + "CDR" }, + { "prim": + "CDR" } ] ] }, + { "prim": + "PAIR" }, + { "prim": + "SWAP" }, + { "prim": + "PAIR" }, + { "prim": + "PAIR" }, + { "prim": + "SWAP" }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "8" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", + "args": + [ { "int": + "7" } ] }, + { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "7" }, + [ { "prim": "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "7" } ] }, { "prim": - "SWAP" } ] ] }, + "CDR" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": - "bool" }, - { "prim": - "True" } ] } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "CAR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" }, + { "prim": + "CONTRACT", "args": - [ [ { "prim": - "DIP", + [ { "prim": + "or", "args": - [ [ { "prim": - "DIP", + [ { "prim": + "or", "args": - [ [ { "prim": - "DIP", + [ { "prim": + "or", "args": - [ [ { "prim": - "DROP" }, + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ], - { "prim": "UPDATE" }, - { "prim": "PAIR", - "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_required" ] }, - { "prim": "NIL", - "args": - [ { "prim": "operation" } ], - "annots": [ "@no_op" ] }, - { "prim": "PAIR" } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" } ] ] } ] ] }, - { "prim": "DIP", - "args": [ [ { "prim": "DROP" } ] ] } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": [ "@owner_slash_49" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@confirmAndCheck" ] } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "nat" } ], + "annots": + [ "%approve" ] }, + { "prim": + "pair", "args": - [ [ { "prim": - "DUP", + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ], "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@owner" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "LEFT", - "args": - [ { "prim": "or", - "args": - [ { "prim": "address", - "annots": - [ "%RemoveOwner" ] }, - { "prim": "or", - "args": - [ { "prim": "nat", - "annots": - [ "%ChangeRequirement" ] }, - { "prim": "or", - "args": - [ { "prim": - "mutez", - "annots": - [ "%SetDailyLimit" ] }, - { "prim": + [ "%getAllowance" ] } ] }, + { "prim": "or", - "args": + "args": [ { "prim": - "unit", - "annots": - [ "%ResetSpentToday" ] }, + "pair", + "args": + [ { "prim": + "address" }, { "prim": "contract", "args": [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%Kill" ] } ] } ] } ] } ] } ], - "annots": [ "%AddOwner", "%" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "address" } ] } ], - "annots": [ "%", "%_" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "contract", - "args": - [ { "prim": "unit" } ], - "annots": - [ ":UnitContract", - "%destination" ] }, - { "prim": "mutez", - "annots": [ "%amount" ] } ], - "annots": [ ":transaction" ] } ], - "annots": [ "%", "%_" ] }, - { "prim": "PAIR" }, - { "prim": "EXEC" }, - { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": - [ "@storage_slash_51" ] }, - { "prim": "NIL", - "args": - [ { "prim": "operation" } ], - "annots": [ "@no_op" ] }, - { "prim": "PAIR" } ], - [ { "prim": "RENAME", - "annots": - [ "@storage_slash_52" ] }, - { "prim": "DUP", - "annots": [ "@storage" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", + "nat" } ] } ], "annots": - [ "@owner" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "PAIR" }, - { "prim": "DUP" }, - { "prim": "CDR", - "annots": [ "@storage" ] }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": [ "%m_owners" ] } ], - { "prim": "SWAP" }, - { "prim": "CAR", - "annots": [ "@addr" ] }, - { "prim": "MEM" }, - { "prim": "IF", - "args": - [ [ { "prim": "UNIT" }, - { "prim": "FAILWITH" } ], - [ { "prim": "UNIT" } ] ] }, - { "prim": "DROP" }, - { "prim": "DUP", - "annots": [ "@storage" ] }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "PUSH", - "args": - [ { "prim": "map", - "args": - [ { "prim": "bytes" }, - { "prim": "pair", - "args": - [ { "prim": - "nat", + [ "%getBalance" ] }, + { "prim": + "pair", + "args": + [ { "prim": + "unit" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ], "annots": - [ "%yetNeeded" ] }, - { "prim": - "set", + [ "%getTotalSupply" ] } ] } ] }, + { "prim": + "pair", + "args": + [ { "prim": + "pair", "args": [ { "prim": - "address" } ], + "address" }, + { "prim": + "address" } ] }, + { "prim": + "nat" } ], "annots": - [ "%ownersDone" ] } ], - "annots": - [ ":pending_state" ] } ] }, - [] ] }, - { "prim": "PAIR", - "annots": [ "%m_pending" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_required" ] }, - { "prim": "DUP", - "annots": [ "@storage" ] }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "PUSH", - "args": - [ { "prim": "nat" }, - { "int": "1" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + [ "%transfer" ] } ] } ] }, + { "prim": + "IF_NONE", "args": [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] } ], - { "prim": "ADD" }, - { "prim": "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "@storage", - "%m_required" ] }, - { "prim": "DUP", - "annots": [ "@storage" ] }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "bad address for get_contract" } ] }, + { "prim": + "FAILWITH" } ], + [] ] }, + { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": [ "%m_owners" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": + [ { "int": + "11" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "11" } ] }, + { "prim": "DIP", "args": [ [ { "prim": + "SELF" }, + { "prim": + "ADDRESS" } ] ] }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "4" } ] } ] ] }, + { "prim": + "PAIR" }, + { "prim": + "RIGHT", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "nat" } ] }, + { "prim": + "pair", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ] } ] }, + { "prim": + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ] }, + { "prim": + "pair", + "args": + [ { "prim": + "unit" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ] } ] } ] } ] }, + { "prim": "DIP", "args": [ [ { "prim": + "DUP" }, + { "prim": + "PUSH", + "args": + [ { "prim": + "mutez" }, + { "int": + "0" } ] } ] ] }, + { "prim": + "TRANSFER_TOKENS" }, + { "prim": + "DIP", + "args": + [ { "int": + "9" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "9" } ] }, + { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@owner" ] } ] ] }, + "DIP", + "args": + [ { "int": + "19" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "19" } ] } ] ] }, { "prim": - "SWAP" } ] ] }, + "EXEC" }, { "prim": - "SWAP" } ] ] }, + "DUP" }, + { "prim": + "CDR" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": - "bool" }, - { "prim": - "True" } ] } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "10" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "10" } ] }, + { "prim": + "DROP" } ] ] }, + { "prim": "DIP", "args": + [ { "int": + "11" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", + "args": + [ { "int": + "10" } ] }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "IF_NONE", + "args": [ [ { "prim": "DIP", "args": [ [ { "prim": - "DROP" }, + "DUP" } ] ] }, { "prim": - "DROP" }, + "SWAP" }, + { "prim": + "NIL", + "args": + [ { "prim": + "operation" } ] }, + { "prim": + "SWAP" }, + { "prim": + "CONS" }, { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ], - { "prim": "UPDATE" }, - { "prim": "PAIR", - "annots": [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%m_required" ] }, - { "prim": "NIL", - "args": - [ { "prim": "operation" } ], - "annots": [ "@no_op" ] }, - { "prim": "PAIR" } ] ] }, - { "prim": "DIP", - "args": [ [ { "prim": "DROP" } ] ] } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": - [ "@owner_slash_55" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@confirmAndCheck" ] } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + [ { "int": + "9" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@owner" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "LEFT", - "args": - [ { "prim": "or", - "args": - [ { "prim": "nat", - "annots": - [ "%ChangeRequirement" ] }, - { "prim": "or", - "args": - [ { "prim": - "mutez", - "annots": - [ "%SetDailyLimit" ] }, - { "prim": - "or", + "DIG", "args": - [ { "prim": - "unit", - "annots": - [ "%ResetSpentToday" ] }, + [ { "int": + "9" } ] }, { "prim": - "contract", + "DROP" } ] ] }, + { "prim": + "DIP", "args": + [ { "int": + "10" }, [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%Kill" ] } ] } ] } ] } ], - "annots": - [ "%RemoveOwner", "%" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": "address" } ], - "annots": [ "%", "%_" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": "pair", - "args": - [ { "prim": - "address" }, - { "prim": - "address" } ] } ], - "annots": [ "%", "%_" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": "pair", - "args": - [ { "prim": - "contract", - "args": - [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%destination" ] }, - { "prim": "mutez", - "annots": - [ "%amount" ] } ], - "annots": - [ ":transaction" ] } ], - "annots": [ "%", "%_" ] }, - { "prim": "PAIR" }, - { "prim": "EXEC" }, - { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": - [ "@storage_slash_57" ] }, - { "prim": "NIL", - "args": - [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, - { "prim": "PAIR" } ], - [ { "prim": "RENAME", - "annots": - [ "@storage_slash_58" ] }, - { "prim": "DUP", - "annots": - [ "@storage" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "DROP" } ] ] }, + { "prim": + "DUG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@owner" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "PAIR" }, - { "prim": "DUP" }, - { "prim": "CDR", - "annots": - [ "@storage" ] }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": - [ "%m_owners" ] } ], - { "prim": "SWAP" }, - { "prim": "CAR", - "annots": - [ "@addr" ] }, - { "prim": "MEM" }, - { "prim": "NOT" }, - { "prim": "IF", - "args": - [ [ { "prim": - "UNIT" }, - { "prim": - "FAILWITH" } ], - [ { "prim": - "UNIT" } ] ] }, - { "prim": "DROP" }, - { "prim": "DUP", - "annots": - [ "@storage" ] }, - [ { "prim": "CDR" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": - [ "%m_required" ] }, - { "prim": "COMPARE" }, - { "prim": "GE" }, - { "prim": "IF", - "args": - [ [ { "prim": - "UNIT" }, - { "prim": - "FAILWITH" } ], - [ { "prim": - "UNIT" } ] ] }, - { "prim": "DROP" }, - { "prim": "DUP", - "annots": - [ "@storage" ] }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "PUSH", - "args": - [ { "prim": "int" }, - { "int": "1" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + [ { "int": + "9" } ] }, + { "prim": + "PUSH", "args": - [ [ { "prim": + [ { "prim": + "unit" }, + { "prim": + "Unit" } ] } ], + [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] } ], - { "prim": "INT" }, - { "prim": "SUB" }, - { "prim": "DUP" }, - { "prim": "ABS" }, - { "prim": "SWAP" }, - { "prim": "GE" }, - { "prim": "IF", - "args": - [ [], - [ { "prim": - "UNIT" }, - { "prim": - "FAILWITH" } ] ] }, - { "prim": "RENAME", - "annots": - [ "@new_num_owners" ] }, - { "prim": "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "@storage", - "%m_required" ] }, - { "prim": "DUP", - "annots": - [ "@storage" ] }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "DIG", "args": - [ [ { "prim": + [ { "int": + "2" } ] }, + { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + "DUP" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR", - "annots": - [ "%m_owners" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "NIL", "args": - [ [ { "prim": + [ { "prim": + "operation" } ] }, + { "prim": + "SWAP" }, + { "prim": + "CONS" } ] ] }, + { "prim": + "CONS" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "10" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": + [ { "int": + "10" } ] }, + { "prim": + "DROP" } ] ] }, + { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@owner" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, + [ { "int": + "11" }, + [ { "prim": + "DROP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DUG", + "args": + [ { "int": + "10" } ] }, { "prim": - "SWAP" } ] ] }, + "DROP" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "PUSH", - "args": + "args": [ { "prim": - "bool" }, + "unit" }, + { "prim": + "Unit" } ] } ] ] }, { "prim": - "False" } ] } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", "args": [ [ { "prim": - "DIP", + "DROP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "5" } ] } ] ] } ], + [ { "prim": + "PUSH", "args": - [ [ { "prim": - "DIP", + [ { "prim": + "string" }, + { "string": + "add_liquidity: lqt_minted must be greater than min_lqt_created." } ] }, + { "prim": + "FAILWITH" } ] ] } ], + [ { "prim": + "PUSH", "args": - [ [ { "prim": + [ { "prim": + "string" }, + { "string": + "add_liquidity: max_tokens_deposited must be greater than or equal to tokens_deposited." } ] }, + { "prim": + "FAILWITH" } ] ] }, + { "prim": "DIP", "args": [ [ { "prim": - "DROP" }, - { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ], - { "prim": "UPDATE" }, - { "prim": "PAIR", - "annots": - [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "@storage", - "%m_required" ] }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_required" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": - [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "PUSH", - "args": - [ { "prim": "map", - "args": - [ { "prim": - "bytes" }, - { "prim": - "pair", + "DROP", "args": + [ { "int": + "4" } ] } ] ] } ], [ { "prim": - "nat", - "annots": - [ "%yetNeeded" ] }, - { "prim": - "set", + "PUSH", "args": [ { "prim": - "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": - [ ":pending_state" ] } ] }, - [] ] }, - { "prim": "PAIR", - "annots": - [ "%m_pending" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "%m_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "%m_required" ] }, - { "prim": "NIL", - "args": - [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, - { "prim": "PAIR" } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": "DROP" } ] ] } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": - [ "@required_slash_64" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@confirmAndCheck" ] } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "string" }, + { "string": + "add_liquidity: min_lqt_created must be greater than zero." } ] }, + { "prim": + "FAILWITH" } ] ] } ], + [ { "prim": + "PUSH", "args": - [ [ { "prim": - "DIP", + [ { "prim": + "mutez" }, + { "int": + "1000000" } ] }, + { "prim": + "AMOUNT" }, + { "prim": + "COMPARE" }, + { "prim": + "GE" }, + { "prim": + "IF", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", + "DIG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@required" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "LEFT", - "args": - [ { "prim": "or", - "args": - [ { "prim": - "mutez", - "annots": - [ "%SetDailyLimit" ] }, + [ { "int": + "2" } ] }, { "prim": - "or", + "DIP", "args": + [ { "int": + "19" }, [ { "prim": - "unit", - "annots": - [ "%ResetSpentToday" ] }, + "DUP" } ] ] }, { "prim": - "contract", + "DIG", "args": - [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%Kill" ] } ] } ] } ], - "annots": - [ "%ChangeRequirement", - "%" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%", "%_" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%", "%_" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": - "pair", - "args": - [ { "prim": - "address" }, + [ { "int": + "19" } ] }, { "prim": - "address" } ] } ], - "annots": - [ "%", "%_" ] }, - { "prim": "RIGHT", - "args": - [ { "prim": - "pair", - "args": - [ { "prim": - "contract", - "args": - [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%destination" ] }, + "BALANCE" }, + { "prim": + "EXEC" }, + { "prim": + "DUP" }, { "prim": - "mutez", - "annots": - [ "%amount" ] } ], - "annots": - [ ":transaction" ] } ], - "annots": - [ "%", "%_" ] }, - { "prim": "PAIR" }, - { "prim": "EXEC" }, - { "prim": "IF_LEFT", - "args": - [ [ { "prim": - "RENAME", - "annots": - [ "@storage_slash_66" ] }, - { "prim": - "NIL", - "args": - [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, - { "prim": - "PAIR" } ], - [ { "prim": - "RENAME", - "annots": - [ "@storage_slash_67" ] }, - { "prim": - "DUP", - "annots": - [ "@storage" ] }, - [ { "prim": - "CDR" }, - { "prim": - "CAR", - "annots": - [ "%m_num_owners" ] } ], - [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@required" ] } ] ] }, + [ { "int": + "3" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "COMPARE" }, - { "prim": - "GT" }, - { "prim": - "IF", - "args": - [ [ { "prim": - "UNIT" }, + "DIG", + "args": + [ { "int": + "3" } ] }, { "prim": - "FAILWITH" } ], - [ { "prim": - "UNIT" } ] ] }, - { "prim": - "DROP" }, - { "prim": "DUP" }, - { "prim": - "CAR", - "annots": - [ "%m_required" ] }, - { "prim": + { "prim": + "CAR" }, + { "prim": "SWAP" }, - { "prim": + { "prim": "CDR" }, - { "prim": + { "prim": "DUP" }, - { "prim": - "CAR", - "annots": - [ "%m_num_owners" ] }, - { "prim": - "SWAP" }, - { "prim": + { "prim": "CDR" }, - { "prim": + { "prim": + "SWAP" }, + { "prim": + "CAR" }, + { "prim": "DUP" }, - { "prim": - "CAR", - "annots": - [ "%m_owners" ] }, - { "prim": + { "prim": + "CAR" }, + { "prim": "SWAP" }, - { "prim": - "CDR" }, - { "prim": + { "prim": "CDR" }, - { "prim": - "PUSH", - "args": - [ { "prim": - "map", - "args": - [ { "prim": - "bytes" }, { "prim": - "pair", - "args": - [ { "prim": - "nat", - "annots": - [ "%yetNeeded" ] }, + "CAR" } ] ] }, { "prim": - "set", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%ownersDone" ] } ], - "annots": - [ ":pending_state" ] } ] }, - [] ] }, - { "prim": - "PAIR", - "annots": - [ "%m_pending" ] }, - { "prim": "SWAP" }, - { "prim": - "PAIR", - "annots": - [ "%m_owners" ] }, - { "prim": + { "prim": + "PAIR" }, + { "prim": "SWAP" }, - { "prim": - "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": + { "prim": + "PAIR" }, + { "prim": + "PAIR" }, + { "prim": "SWAP" }, - { "prim": - "PAIR", - "annots": - [ "%m_required" ] }, - { "prim": - "CDR" }, - [ { "prim": + { "prim": + "PAIR" }, + { "prim": "DIP", "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "PAIR", - "annots": - [ "%m_required" ] }, - { "prim": - "NIL", - "args": + [ { "int": + "4" }, [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, - { "prim": - "PAIR" } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": - "DROP" } ] ] } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": - "RENAME", - "annots": - [ "@limit_slash_69" ] }, - [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", + "args": + [ { "int": + "3" } ] }, + { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@confirmAndCheck" ] } ] ] }, - { "prim": - "SWAP" } ], - [ { "prim": + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "6" } ] }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "18" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "18" } ] }, + { "prim": "DIP", "args": [ [ { "prim": + "DUP" } ] ] }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + "DIP", + "args": + [ { "int": + "17" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "17" } ] } ] ] }, { "prim": - "SWAP" } ] ] }, + "PAIR" }, + { "prim": + "SOME" }, { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@limit" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "LEFT", - "args": + [ { "int": + "3" }, [ { "prim": - "or", + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ { "prim": - "unit", - "annots": - [ "%ResetSpentToday" ] }, + [ { "int": + "3" } ] }, { "prim": - "contract", + "CAR" } ] ] } ] ] }, + { "prim": + "UPDATE" }, + { "prim": + "DIP", "args": - [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%Kill" ] } ] } ], - "annots": - [ "%SetDailyLimit", - "%" ] }, - { "prim": - "RIGHT", - "args": - [ { "prim": - "nat" } ], - "annots": - [ "%", - "%_" ] }, - { "prim": - "RIGHT", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%", - "%_" ] }, - { "prim": - "RIGHT", - "args": - [ { "prim": - "address" } ], - "annots": - [ "%", - "%_" ] }, - { "prim": - "RIGHT", - "args": - [ { "prim": - "pair", + [ [ { "prim": + "DIP", "args": + [ { "int": + "3" }, [ { "prim": - "address" }, + "DUP" } ] ] }, { "prim": - "address" } ] } ], - "annots": - [ "%", - "%_" ] }, - { "prim": - "RIGHT", - "args": - [ { "prim": - "pair", + "DIG", "args": - [ { "prim": - "contract", + [ { "int": + "3" } ] }, + { "prim": + "CDR" } ] ] }, + { "prim": + "PAIR" }, + { "prim": + "DIP", "args": + [ { "int": + "4" }, [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%destination" ] }, + "DROP" } ] ] }, { "prim": - "mutez", - "annots": - [ "%amount" ] } ], - "annots": - [ ":transaction" ] } ], - "annots": - [ "%", - "%_" ] }, - { "prim": - "PAIR" }, - { "prim": - "EXEC" }, - { "prim": - "IF_LEFT", - "args": + "DUG", + "args": + [ { "int": + "3" } ] }, + { "prim": + "DIP", + "args": [ [ { "prim": - "RENAME", - "annots": - [ "@storage_slash_71" ] }, + "DUP" } ] ] }, { "prim": - "NIL", + "SWAP" }, + { "prim": + "DIP", "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "3" }, [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, + "DUP" } ] ] }, { "prim": - "PAIR" } ], - [ { "prim": - "RENAME", - "annots": - [ "@storage_slash_72" ] }, + "DIG", + "args": + [ { "int": + "3" } ] }, { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_required" ] }, + "CAR" }, { "prim": "SWAP" }, { "prim": @@ -2998,170 +1937,213 @@ { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_num_owners" ] }, + "CDR" }, { "prim": "SWAP" }, { "prim": - "CDR" }, + "CAR" }, { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_owners" ] }, + "CAR" }, { "prim": "SWAP" }, { "prim": "CDR" }, { "prim": - "DUP" }, + "CDR" } ] ] }, { "prim": - "CAR", - "annots": - [ "%m_pending" ] }, + "PAIR" }, { "prim": "SWAP" }, { "prim": - "CDR" }, + "PAIR" }, + { "prim": + "PAIR" }, + { "prim": + "SWAP" }, + { "prim": + "PAIR" }, { "prim": - "CDR" }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "4" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", "args": - [ [ { "prim": + [ { "int": + "3" } ] }, + { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "3" }, + [ { "prim": "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "3" } ] }, { "prim": - "SWAP" } ] ] }, + "CDR" }, { "prim": - "SWAP" } ] ] }, + "CAR" }, { "prim": - "SWAP" } ] ] }, + "CAR" }, { "prim": - "SWAP" } ], + "CDR" }, { "prim": - "PAIR", - "annots": - [ "%m_daily_limit" ] }, + "CONTRACT", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, { "prim": - "SWAP" }, - { "prim": - "PAIR", + "nat" } ], "annots": - [ "%m_pending" ] }, + [ "%approve" ] }, { "prim": - "SWAP" }, + "pair", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, { "prim": - "PAIR", + "contract", + "args": + [ { "prim": + "nat" } ] } ], "annots": - [ "%m_owners" ] }, + [ "%getAllowance" ] } ] }, { "prim": - "SWAP" }, + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, { "prim": - "PAIR", + "contract", + "args": + [ { "prim": + "nat" } ] } ], "annots": - [ "%m_num_owners" ] }, + [ "%getBalance" ] }, { "prim": - "SWAP" }, + "pair", + "args": + [ { "prim": + "unit" }, { "prim": - "PAIR", + "contract", + "args": + [ { "prim": + "nat" } ] } ], "annots": - [ "%m_required" ] }, + [ "%getTotalSupply" ] } ] } ] }, { "prim": - "NIL", + "pair", + "args": + [ { "prim": + "pair", "args": [ { "prim": - "operation" } ], + "address" }, + { "prim": + "address" } ] }, + { "prim": + "nat" } ], "annots": - [ "@no_op" ] }, + [ "%transfer" ] } ] } ] }, { "prim": - "PAIR" } ] ] }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DROP" } ] ] } ], - [ { "prim": - "IF_LEFT", - "args": + "IF_NONE", + "args": [ [ { "prim": - "RENAME", - "annots": - [ "@__slash_73" ] }, + "PUSH", + "args": [ { "prim": + "string" }, + { "string": + "bad address for get_contract" } ] }, + { "prim": + "FAILWITH" } ], + [] ] }, + { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@confirmAndCheck" ] } ] ] }, - { "prim": - "SWAP" } ], + [ { "int": + "7" }, [ { "prim": - "DIP", + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": + [ { "int": + "7" } ] }, + { "prim": "DIP", "args": [ [ { "prim": + "SELF" }, + { "prim": + "ADDRESS" } ] ] }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "2" } ] } ] ] }, { "prim": - "SWAP" } ], + "PAIR" }, { "prim": - "PUSH", + "RIGHT", "args": [ { "prim": "or", "args": [ { "prim": - "pair", + "or", "args": [ { "prim": - "contract", + "pair", "args": [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%destination" ] }, + "address" }, { "prim": - "mutez", - "annots": - [ "%amount" ] } ], - "annots": - [ ":transaction", - "%Withdraw" ] }, + "nat" } ] }, { "prim": - "or", + "pair", "args": [ { "prim": "pair", @@ -3169,679 +2151,1056 @@ [ { "prim": "address" }, { "prim": - "address" } ], - "annots": - [ "%ChangeOwner" ] }, + "address" } ] }, { "prim": - "or", + "contract", "args": [ { "prim": - "address", - "annots": - [ "%AddOwner" ] }, + "nat" } ] } ] } ] }, { "prim": "or", "args": [ { "prim": - "address", - "annots": - [ "%RemoveOwner" ] }, - { "prim": - "or", + "pair", "args": [ { "prim": - "nat", - "annots": - [ "%ChangeRequirement" ] }, + "address" }, { "prim": - "or", + "contract", "args": [ { "prim": - "mutez", - "annots": - [ "%SetDailyLimit" ] }, + "nat" } ] } ] }, { "prim": - "or", + "pair", "args": [ { "prim": - "unit", - "annots": - [ "%ResetSpentToday" ] }, + "unit" }, { "prim": "contract", "args": [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%Kill" ] } ] } ] } ] } ] } ] } ] } ], - "annots": - [ ":wallet_operation" ] }, + "nat" } ] } ] } ] } ] } ] }, { "prim": - "Right", - "args": - [ { "prim": - "Right", + "DIP", "args": - [ { "prim": - "Right", + [ [ { "prim": + "DUP" }, + { "prim": + "PUSH", "args": [ { "prim": - "Right", + "mutez" }, + { "int": + "0" } ] } ] ] }, + { "prim": + "TRANSFER_TOKENS" }, + { "prim": + "DIP", "args": + [ { "int": + "5" }, [ { "prim": - "Right", + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ { "prim": - "Right", + [ { "int": + "5" } ] }, + { "prim": + "DIP", "args": - [ { "prim": - "Left", + [ [ { "prim": + "DIP", "args": + [ { "int": + "15" }, [ { "prim": - "Unit" } ] } ] } ] } ] } ] } ] } ] } ] }, + "DUP" } ] ] }, { "prim": - "PAIR" }, + "DIG", + "args": + [ { "int": + "15" } ] } ] ] }, { "prim": "EXEC" }, { "prim": - "IF_LEFT", + "DUP" }, + { "prim": + "CDR" }, + { "prim": + "DIP", "args": [ [ { "prim": - "RENAME", - "annots": - [ "@storage_slash_75" ] }, - { "prim": - "NIL", + "DIP", "args": + [ { "int": + "6" }, [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, - { "prim": - "PAIR" } ], - [ { "prim": - "RENAME", - "annots": - [ "@storage_slash_76" ] }, + "DUP" } ] ] }, { "prim": - "DUP" }, + "DIG", + "args": + [ { "int": + "6" } ] }, { "prim": - "CAR", - "annots": - [ "%m_required" ] }, + "DROP" } ] ] }, { "prim": - "SWAP" }, + "DIP", + "args": + [ { "int": + "7" }, + [ { "prim": + "DROP" } ] ] }, { "prim": - "CDR" }, + "DUG", + "args": + [ { "int": + "6" } ] }, { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_num_owners" ] }, - { "prim": - "SWAP" }, - { "prim": - "CDR" }, - { "prim": - "DUP" }, + "CAR" }, { "prim": - "CAR", - "annots": - [ "%m_owners" ] }, + "IF_NONE", + "args": + [ [ { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, { "prim": "SWAP" }, { "prim": - "CDR" }, - { "prim": - "DUP" }, - { "prim": - "CAR", - "annots": - [ "%m_pending" ] }, + "NIL", + "args": + [ { "prim": + "operation" } ] }, { "prim": "SWAP" }, { "prim": - "CDR" }, + "CONS" }, { "prim": - "DUP" }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "5" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "CAR", - "annots": - [ "%m_daily_limit" ] }, + "DIG", + "args": + [ { "int": + "5" } ] }, { "prim": - "SWAP" }, + "DROP" } ] ] }, { "prim": - "CDR" }, + "DIP", + "args": + [ { "int": + "6" }, + [ { "prim": + "DROP" } ] ] }, { "prim": - "CDR", - "annots": - [ "%m_last" ] }, + "DUG", + "args": + [ { "int": + "5" } ] }, { "prim": "PUSH", "args": [ { "prim": - "mutez" }, - { "int": - "0" } ] }, - { "prim": - "PAIR", - "annots": - [ "%m_spent_today", - "%m_last" ] }, - { "prim": - "SWAP" }, - { "prim": - "PAIR", - "annots": - [ "%m_daily_limit" ] }, + "unit" }, { "prim": - "SWAP" }, + "Unit" } ] } ], + [ { "prim": + "DIP", + "args": + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "PAIR", - "annots": - [ "%m_pending" ] }, + "DIG", + "args": + [ { "int": + "2" } ] }, { "prim": - "SWAP" }, + "DIP", + "args": + [ [ { "prim": + "DUP" }, { "prim": - "PAIR", - "annots": - [ "%m_owners" ] }, + "NIL", + "args": + [ { "prim": + "operation" } ] }, { "prim": "SWAP" }, { "prim": - "PAIR", - "annots": - [ "%m_num_owners" ] }, - { "prim": - "SWAP" }, + "CONS" } ] ] }, { "prim": - "PAIR", - "annots": - [ "%m_required" ] }, + "CONS" }, { "prim": - "NIL", + "DIP", "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "6" }, [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, + "DUP" } ] ] }, { "prim": - "PAIR" } ] ] }, + "DIG", + "args": + [ { "int": + "6" } ] }, + { "prim": + "DROP" } ] ] }, { "prim": "DIP", "args": - [ [ { "prim": - "DROP" } ] ] } ], + [ { "int": + "7" }, [ { "prim": - "IF_LEFT", + "DROP" } ] ] }, + { "prim": + "DUG", "args": - [ [ { "prim": - "RENAME", - "annots": - [ "@__slash_77" ] }, + [ { "int": + "6" } ] }, + { "prim": + "DROP" }, { "prim": "PUSH", "args": [ { "prim": - "mutez" }, - { "int": - "0" } ] }, + "unit" }, { "prim": - "AMOUNT" }, - { "prim": - "COMPARE" }, - { "prim": - "EQ" }, + "Unit" } ] } ] ] }, { "prim": - "IF", + "DIP", "args": [ [ { "prim": - "UNIT" }, + "DROP", + "args": + [ { "int": + "5" } ] } ] ] } ], + [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "add_liquidity: when intiating the liquidity pool the amount must be at least 1 XTZ." } ] }, { "prim": - "FAILWITH" } ], - [ [ { "prim": + "FAILWITH" } ] ] } ] ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "add_liquidity: Expected the amount sent to the contract to be greater than 0." } ] }, + { "prim": + "FAILWITH" } ] ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "add_liquidity: Expected maxTokens to be greater than 0." } ] }, + { "prim": "FAILWITH" } ] ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "add_liquidity: Expected the deadline to be greater than now." } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DROP" }, { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", + "args": [ { "int": "8" } ] } ] ] } ], + [ { "prim": "DUP" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] } ] ] }, + { "prim": "PAIR" } ] ] }, + { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, { "prim": "SENDER" }, + { "prim": "SWAP" }, { "prim": "COMPARE" }, + { "prim": "NEQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "SENDER" }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "9" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "9" } ] } ] ] }, + { "prim": "EXEC" }, + { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "SOME" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] } ] ] }, + { "prim": "UPDATE" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP" } ] ] }, + { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "CAR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "SOME" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "2" } ] }, + { "prim": "CAR" } ] ] }, + { "prim": "SENDER" }, + { "prim": "UPDATE" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "2" } ] }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": [ { "int": "2" } ] }, + { "prim": "DROP", + "args": [ { "int": "2" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "approve: the spender must not be the sender. The owner already has rights to all of the LQT" } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DROP" }, { "prim": "DUP" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", + "args": [ { "int": "5" } ] } ] ] } ] ] }, + { "prim": "DIP", + "args": [ [ { "prim": "DROP" } ] ] } ], + [ { "prim": "DUP" }, + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "DUP" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] } ] ] }, + { "prim": "PAIR" } ] ] }, + { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "2" } ] }, + { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] }, + { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "4" } ] }, + { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "5" } ] }, + { "prim": "CDR" }, { "prim": "CDR" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "DIP", + "args": + [ { "int": "7" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "7" } ] }, + { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CDR" }, { "prim": "NOW" }, + { "prim": "COMPARE" }, { "prim": "LT" }, + { "prim": "IF", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "mutez" }, + { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "COMPARE" }, + { "prim": "GT" }, + { "prim": "IF", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "2" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "COMPARE" }, + { "prim": "GT" }, + { "prim": "IF", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": + "nat" }, + { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "COMPARE" }, + { "prim": "GT" }, + { "prim": "IF", + "args": + [ [ { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "6" } ] }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, + "DUP" } ] ] }, { "prim": "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "NIL", + { "prim": + "PAIR" }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "DUP" }, + { "prim": + "PUSH", "args": [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, - { "prim": - "PAIR" } ] ] }, - { "prim": + "nat" }, + { "int": + "0" } ] }, + { "prim": + "SWAP" }, + { "prim": "DIP", "args": [ [ { "prim": - "DROP" } ] ] } ], - [ { "prim": - "IF_LEFT", + "DIP", "args": - [ [ { "prim": - "RENAME", - "annots": - [ "@dest_slash_79" ] }, + [ { "int": + "2" }, [ { "prim": - "DIP", + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@confirmAndCheck" ] } ] ] }, + [ { "int": + "2" } ] }, { "prim": - "SWAP" } ], - [ { "prim": - "DIP", + "CDR" }, + { "prim": + "CAR" } ] ] }, + { "prim": + "GET" }, + { "prim": + "IF_NONE", "args": [ [ { "prim": - "DIP", + "PUSH", "args": - [ [ { "prim": + [ { "prim": + "string" }, + { "string": + "check_approval: owner account does not exist." } ] }, + { "prim": + "FAILWITH" } ], + [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + [ { "int": + "2" } ] }, { "prim": - "SWAP" } ] ] }, + "SENDER" }, { "prim": - "SWAP" } ] ] }, + "COMPARE" }, { "prim": - "SWAP" } ] ] }, + "NEQ" }, { "prim": - "SWAP" } ], - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", + "IF", "args": [ [ { "prim": - "DUP", - "annots": - [ "@dest" ] } ] ] }, + "DUP" }, { "prim": - "SWAP" } ] ] }, + "CAR" }, { "prim": - "SWAP" } ], + "CAR" }, { "prim": - "RIGHT", - "args": - [ { "prim": - "unit" } ], - "annots": - [ "%", - "%Kill" ] }, + "SENDER" }, { "prim": - "RIGHT", - "args": - [ { "prim": - "mutez" } ], - "annots": - [ "%", - "%_" ] }, + "GET" }, { "prim": - "RIGHT", + "IF_NONE", "args": - [ { "prim": - "nat" } ], - "annots": - [ "%", - "%_" ] }, - { "prim": - "RIGHT", + [ [ { "prim": + "PUSH", "args": [ { "prim": - "address" } ], - "annots": - [ "%", - "%_" ] }, + "string" }, + { "string": + "check_approval: allowance for sender does not exist." } ] }, { "prim": - "RIGHT", - "args": + "FAILWITH" } ], [ { "prim": - "address" } ], - "annots": - [ "%", - "%_" ] }, + "DUP" }, { "prim": - "RIGHT", + "DIP", "args": - [ { "prim": - "pair", + [ [ { "prim": + "DIP", "args": + [ { "int": + "2" }, [ { "prim": - "address" }, + "DUP" } ] ] }, { "prim": - "address" } ] } ], - "annots": - [ "%", - "%_" ] }, + "DIG", + "args": + [ { "int": + "2" } ] }, { "prim": - "RIGHT", + "DROP" } ] ] }, + { "prim": + "DIP", "args": + [ { "int": + "3" }, [ { "prim": - "pair", + "DROP" } ] ] }, + { "prim": + "DUG", "args": - [ { "prim": - "contract", + [ { "int": + "2" } ] }, + { "prim": + "DROP" }, + { "prim": + "PUSH", "args": [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%destination" ] }, + "unit" }, { "prim": - "mutez", - "annots": - [ "%amount" ] } ], - "annots": - [ ":transaction" ] } ], - "annots": - [ "%", - "%_" ] }, + "Unit" } ] } ] ] } ], + [ { "prim": + "DUP" }, { "prim": - "PAIR" }, + "CAR" }, { "prim": - "EXEC" }, + "CDR" }, { "prim": - "IF_LEFT", + "DIP", "args": [ [ { "prim": - "RENAME", - "annots": - [ "@storage_slash_81" ] }, - { "prim": - "NIL", - "args": - [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, - { "prim": - "PAIR" } ], - [ { "prim": - "RENAME", - "annots": - [ "@storage_slash_82" ] }, - [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@dest" ] } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "BALANCE" }, + "DUP" } ] ] }, { "prim": - "UNIT" }, + "SWAP" }, { "prim": - "TRANSFER_TOKENS", - "annots": - [ "@trans_all" ] }, + "DROP" } ] ] }, { "prim": "SWAP" }, { "prim": - "NIL", - "args": - [ { "prim": - "operation" } ] }, - [ { "prim": - "DIP", + "DIP", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, + "DROP" } ] ] } ] ] }, { "prim": - "SWAP" } ], + "PUSH", + "args": [ { "prim": + "unit" }, + { "prim": + "Unit" } ] } ] ] }, + { "prim": "DIP", "args": [ [ { "prim": + "DROP" } ] ] } ] ] }, + { "prim": + "DROP" }, + { "prim": + "DUP" }, + { "prim": "DIP", "args": [ [ { "prim": + "DROP", + "args": + [ { "int": + "3" } ] } ] ] }, + { "prim": + "DUP" }, + { "prim": "DIP", "args": [ [ { "prim": - "DROP" } ] ] } ] ] } ] ] } ], - { "prim": - "CONS" }, - { "prim": - "PAIR" } ] ] }, - { "prim": "DIP", "args": - [ [ { "prim": - "DROP" } ] ] } ], + [ { "int": + "5" }, [ { "prim": - "RENAME", - "annots": - [ "@t_slash_84" ] }, - [ { "prim": - "DIP", + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": - "DIP", + [ { "int": + "5" } ] } ] ] }, + { "prim": + "COMPARE" }, + { "prim": + "GE" }, + { "prim": + "IF", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "DUP", - "annots": - [ "@storage" ] }, - { "prim": - "DUP", - "annots": - [ "@storage" ] }, + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SOURCE" }, + "DIG", + "args": + [ { "int": + "2" } ] }, { "prim": - "PAIR" }, + "CDR" }, { "prim": - "DUP" }, + "CAR" }, { "prim": - "CDR", - "annots": - [ "@storage" ] }, - [ { "prim": "CDR" }, { "prim": "CDR" }, { "prim": - "CAR", - "annots": - [ "%m_owners" ] } ], + "PUSH", + "args": + [ { "prim": + "nat" }, + { "int": + "0" } ] }, { "prim": "SWAP" }, { "prim": - "CAR", - "annots": - [ "@addr" ] }, + "COMPARE" }, { "prim": - "MEM" }, + "GT" }, { "prim": "IF", "args": [ [ { "prim": - "UNIT" } ], + "DIP", + "args": + [ { "int": + "5" }, [ { "prim": - "UNIT" }, - { "prim": - "FAILWITH" } ] ] }, + "DUP" } ] ] }, { "prim": - "DIP", + "DIG", "args": - [ [ { "prim": - "DROP" } ] ] }, + [ { "int": + "5" } ] }, { "prim": - "DROP" }, + "BALANCE" }, + { "prim": + "SWAP" }, + { "prim": + "MUL" }, { "prim": - "DUP", - "annots": - [ "@storage" ] }, - [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@t" ] } ] ] }, + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "2" } ] }, { "prim": - "SWAP" } ], + "CDR" }, { "prim": - "CDR", - "annots": - [ "%amount" ] }, + "CAR" }, { "prim": - "PAIR" }, + "CDR" }, { "prim": - "DUP" }, + "CDR" }, { "prim": - "CAR", - "annots": - [ "@value" ] }, - [ { "prim": "DIP", "args": [ [ { "prim": + "DIP", + "args": + [ { "int": + "20" }, + [ { "prim": "DUP" } ] ] }, { "prim": - "SWAP" } ], - { "prim": - "CDR", - "annots": - [ "@storage" ] }, + "DIG", + "args": + [ { "int": + "20" } ] } ] ] }, { "prim": - "DUP", - "annots": - [ "@storage" ] }, + "EXEC" } ] ] }, { "prim": - "DUP", - "annots": - [ "@storage" ] }, + "EDIV" }, { "prim": - "SOURCE" }, + "IF_NONE", + "args": + [ [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "DIV by 0" } ] }, { "prim": - "PAIR" }, + "FAILWITH" } ], + [] ] }, { "prim": - "DUP" }, + "CAR" }, { "prim": - "CDR", - "annots": - [ "@storage" ] }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "20" }, [ { "prim": - "CDR" }, + "DUP" } ] ] }, { "prim": - "CDR" }, + "DIG", + "args": + [ { "int": + "20" } ] } ] ] }, { "prim": - "CAR", - "annots": - [ "%m_owners" ] } ], + "EXEC" }, { "prim": - "SWAP" }, + "DUP" }, { "prim": - "CAR", - "annots": - [ "@addr" ] }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "5" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "5" } ] } ] ] }, { "prim": - "MEM" }, + "COMPARE" }, + { "prim": + "GE" }, { "prim": "IF", "args": [ [ { "prim": - "UNIT" } ], + "DIP", + "args": + [ { "int": + "6" }, [ { "prim": - "UNIT" }, + "DUP" } ] ] }, { "prim": - "FAILWITH" } ] ] }, + "DIG", + "args": + [ { "int": + "6" } ] }, { "prim": "DIP", "args": [ [ { "prim": - "DROP" } ] ] }, - { "prim": - "DROP" }, - { "prim": - "PUSH", + "DIP", "args": + [ { "int": + "3" }, [ { "prim": - "int" }, - { "int": - "86400" } ] }, - [ { "prim": - "DIP", + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + [ { "int": + "3" } ] }, { "prim": - "SWAP" } ], - [ { "prim": "CDR" }, { "prim": - "CDR" }, + "CAR" }, { "prim": "CDR" }, { "prim": + "CAR" } ] ] }, + { "prim": + "MUL" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "3" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "3" } ] }, + { "prim": "CDR" }, { "prim": + "CAR" }, + { "prim": "CDR" }, { "prim": - "CDR", - "annots": - [ "%m_last" ] } ], + "CDR" } ] ] }, { "prim": - "ADD" }, + "EDIV" }, + { "prim": + "IF_NONE", + "args": + [ [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "DIV by 0" } ] }, + { "prim": + "FAILWITH" } ], + [] ] }, + { "prim": + "CAR" }, + { "prim": + "DUP" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "5" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "NOW" }, + "DIG", + "args": + [ { "int": + "5" } ] } ] ] }, { "prim": "COMPARE" }, { "prim": @@ -3850,289 +3209,441 @@ "IF", "args": [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] }, + "DIP", + "args": + [ { "int": + "9" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "DUP" }, + "DIG", + "args": + [ { "int": + "9" } ] }, { "prim": - "CAR", - "annots": - [ "%m_required" ] }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" }, + "DIG", + "args": + [ { "int": + "4" } ] }, { "prim": - "CDR" }, + "CAR" } ] ] }, { "prim": - "DUP" }, + "PAIR" }, { "prim": - "CAR", - "annots": - [ "%m_num_owners" ] }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "17" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" }, + "DIG", + "args": + [ { "int": + "17" } ] } ] ] }, { "prim": - "CDR" }, + "EXEC" }, { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_owners" ] }, - { "prim": - "SWAP" }, + "CAR" }, { "prim": "CDR" }, { "prim": - "DUP" }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "8" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "CAR", - "annots": - [ "%m_pending" ] }, + "DIG", + "args": + [ { "int": + "8" } ] } ] ] }, { "prim": - "SWAP" }, + "COMPARE" }, { "prim": - "CDR" }, + "GE" }, { "prim": + "IF", + "args": + [ [ { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_daily_limit" ] }, - { "prim": - "SWAP" }, + "CAR" }, { "prim": "CDR" }, { "prim": - "CDR", - "annots": - [ "%m_last" ] }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "8" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "8" } ] } ] ] }, + { "prim": + "SUB" }, { "prim": "PUSH", "args": [ { "prim": - "mutez" }, - { "int": - "0" } ] }, + "string" }, + { "string": + "remove_liquidity: new_balance: int_to_nat: cannot convert a negative number to a nat." } ] }, { "prim": - "PAIR", - "annots": - [ "%m_spent_today", - "%m_last" ] }, + "PAIR" }, { "prim": - "SWAP" }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "19" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "PAIR", - "annots": - [ "%m_daily_limit" ] }, + "DIG", + "args": + [ { "int": + "19" } ] } ] ] }, { "prim": - "SWAP" }, + "EXEC" }, { "prim": - "PAIR", - "annots": - [ "%m_pending" ] }, + "DIP", + "args": + [ { "int": + "11" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" }, + "DIG", + "args": + [ { "int": + "11" } ] }, { "prim": - "PAIR", - "annots": - [ "%m_owners" ] }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, { "prim": "SWAP" }, { "prim": - "PAIR", - "annots": - [ "%m_num_owners" ] }, + "CAR" }, { "prim": - "SWAP" }, + "CAR" }, { "prim": - "PAIR", - "annots": - [ "@storage", - "%m_required" ] }, + "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, { "prim": - "DUP" }, + "PAIR" }, { "prim": - "CAR", - "annots": - [ "%m_required" ] }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, { "prim": "SWAP" }, { "prim": - "CDR" }, + "CDR" } ] ] }, { "prim": - "DUP" }, + "PAIR" }, { "prim": - "CAR", - "annots": - [ "%m_num_owners" ] }, + "SOME" }, { "prim": - "SWAP" }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "CDR" }, + "DIG", + "args": + [ { "int": + "6" } ] }, { "prim": - "DUP" }, + "CAR" } ] ] } ] ] }, { "prim": - "CAR", - "annots": - [ "%m_owners" ] }, + "UPDATE" }, { "prim": - "SWAP" }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "CDR" }, + "DIG", + "args": + [ { "int": + "6" } ] }, { "prim": - "DUP" }, + "CDR" } ] ] }, { "prim": - "CAR", - "annots": - [ "%m_pending" ] }, + "PAIR" }, { "prim": - "SWAP" }, + "DIP", + "args": + [ { "int": + "7" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", + "args": + [ { "int": + "6" } ] }, + { "prim": + "DIP", + "args": + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "6" } ] }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" }, { "prim": "CDR" }, { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "9" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "9" } ] } ] ] }, + { "prim": + "SUB" }, + { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "remove_liquidity: total_liquidity: int_to_nat: cannot convert a negative number to a nat." } ] }, + { "prim": + "PAIR" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "20" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "20" } ] } ] ] }, + { "prim": + "EXEC" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "6" } ] }, + { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_daily_limit" ] }, + "CAR" }, { "prim": "SWAP" }, { "prim": "CDR" }, { "prim": - "CAR", - "annots": - [ "%m_spent_today" ] }, + "DUP" }, { "prim": - "NOW" }, + "CDR" }, { "prim": "SWAP" }, { "prim": - "PAIR", - "annots": - [ "%m_spent_today", - "%m_last" ] }, + "CAR" }, { "prim": - "SWAP" }, + "DUP" }, { "prim": - "PAIR", - "annots": - [ "%m_daily_limit" ] }, + "CAR" }, { "prim": "SWAP" }, { "prim": - "PAIR", - "annots": - [ "%m_pending" ] }, + "CDR" }, + { "prim": + "CAR" } ] ] }, { "prim": "SWAP" }, { "prim": - "PAIR", - "annots": - [ "%m_owners" ] }, + "PAIR" }, { "prim": "SWAP" }, { "prim": - "PAIR", - "annots": - [ "%m_num_owners" ] }, + "PAIR" }, + { "prim": + "PAIR" }, { "prim": "SWAP" }, { "prim": - "PAIR", - "annots": - [ "%m_required" ] } ], + "PAIR" }, + { "prim": + "DIP", + "args": + [ { "int": + "7" }, [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + "DROP" } ] ] }, { "prim": - "RENAME", - "annots": - [ "@storage" ] }, + "DUG", + "args": + [ { "int": + "6" } ] }, { "prim": - "DUP", - "annots": - [ "@storage" ] }, + "DIP", + "args": + [ { "int": + "6" }, [ { "prim": - "CDR" }, + "DUP" } ] ] }, { "prim": - "CDR" }, + "DIG", + "args": + [ { "int": + "6" } ] }, { "prim": "CDR" }, { "prim": + "CAR" }, + { "prim": "CDR" }, { "prim": - "CAR", - "annots": - [ "%m_daily_limit" ] } ], - [ { "prim": - "DIP", - "args": - [ [ { "prim": + "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@value" ] } ] ] }, + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "2" } ] } ] ] }, { "prim": - "SWAP" } ] ] }, + "SUB" }, { "prim": - "SWAP" } ], + "PUSH", + "args": [ { "prim": + "string" }, + { "string": + "remove_liquidity: token_pool: int_to_nat: cannot convert a negative number to a nat." } ] }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], + [ { "int": + "20" }, [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CAR", - "annots": - [ "%m_spent_today" ] } ], - { "prim": - "ADD" }, + "DUP" } ] ] }, { "prim": - "COMPARE" }, + "DIG", + "args": + [ { "int": + "20" } ] } ] ] }, { "prim": - "LE" }, + "EXEC" }, { "prim": - "IF", + "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] }, + "DIP", + "args": + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "6" } ] }, { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_required" ] }, + "CAR" }, { "prim": "SWAP" }, { "prim": @@ -4140,401 +3651,2225 @@ { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_num_owners" ] }, + "CDR" }, { "prim": "SWAP" }, { "prim": - "CDR" }, + "CAR" }, { "prim": "DUP" }, { "prim": - "CAR", - "annots": - [ "%m_owners" ] }, + "CAR" }, { "prim": "SWAP" }, { "prim": "CDR" }, { "prim": - "DUP" }, + "CDR" } ] ] }, { "prim": - "CAR", - "annots": - [ "%m_pending" ] }, + "PAIR" }, { "prim": "SWAP" }, { "prim": - "CDR" }, - { "prim": - "DUP" }, + "PAIR" }, { "prim": - "CAR", - "annots": - [ "%m_daily_limit" ] }, + "PAIR" }, { "prim": "SWAP" }, { "prim": - "CDR" }, + "PAIR" }, { "prim": - "CDR", - "annots": - [ "%m_last" ] }, - [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "7" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", "args": - [ [ { "prim": + [ { "int": + "6" } ] }, + { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "11" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": + [ { "int": + "11" } ] }, + { "prim": + "SENDER" }, + { "prim": + "SWAP" }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "4" } ] }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@value" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, + [ { "int": + "9" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "DIG", + "args": + [ { "int": + "9" } ] } ] ] }, { "prim": - "SWAP" } ] ] }, + "SUB" }, { "prim": - "SWAP" } ] ] }, + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "remove_liquidity: approve: int_to_nat: cannot convert a negative number to a nat." } ] }, { "prim": - "SWAP" } ] ] }, + "PAIR" }, { "prim": - "SWAP" } ], - [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", + [ { "int": + "20" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": + [ { "int": + "20" } ] } ] ] }, + { "prim": + "EXEC" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + [ { "int": + "6" } ] } ] ] }, { "prim": - "SWAP" } ] ] }, + "PAIR" } ] ] }, { "prim": - "SWAP" } ] ] }, + "PAIR" }, { "prim": - "SWAP" } ] ] }, + "DUP" }, { "prim": - "SWAP" } ] ] }, + "CAR" }, { "prim": - "SWAP" } ] ] }, + "CAR" }, { "prim": - "SWAP" } ] ] }, + "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" } ], - [ { "prim": - "CDR" }, + "SWAP" }, { "prim": - "CDR" }, + "CAR" }, { "prim": "CDR" }, { "prim": - "CDR" }, + "DIP", + "args": + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "CDR" }, + "DIG", + "args": + [ { "int": + "2" } ] }, { "prim": - "CAR", - "annots": - [ "%m_spent_today" ] } ], + "CDR" }, { "prim": - "ADD" }, + "CDR" }, { "prim": - "PAIR", - "annots": - [ "%m_spent_today", - "%m_last" ] }, + "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, { "prim": "SWAP" }, { "prim": - "PAIR", - "annots": - [ "%m_daily_limit" ] }, + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" }, + "DIG", + "args": + [ { "int": + "2" } ] } ] ] }, { "prim": - "PAIR", - "annots": - [ "%m_pending" ] }, + "COMPARE" }, { "prim": - "SWAP" }, + "NEQ" }, { "prim": - "PAIR", - "annots": - [ "%m_owners" ] }, + "IF", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "SWAP" }, + "DIG", + "args": + [ { "int": + "2" } ] }, { "prim": - "PAIR", - "annots": - [ "%m_num_owners" ] }, + "DIP", + "args": + [ [ { "prim": + "DUP" }, { "prim": - "SWAP" }, + "CAR" } ] ] }, { "prim": - "PAIR", - "annots": - [ "%m_required" ] }, + "PAIR" }, { "prim": - "PUSH", + "DIP", + "args": + [ [ { "prim": + "DIP", "args": + [ { "int": + "23" }, [ { "prim": - "bool" }, + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "23" } ] } ] ] }, { "prim": - "True" } ] }, + "EXEC" }, { "prim": - "PAIR" } ], + "DIP", + "args": + [ { "int": + "2" }, [ { "prim": - "DUP", - "annots": - [ "@storage" ] }, + "DUP" } ] ] }, { "prim": - "PUSH", + "DIG", + "args": + [ { "int": + "2" } ] }, + { "prim": + "DIP", "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "4" }, [ { "prim": - "bool" }, + "DUP" } ] ] }, { "prim": - "False" } ] }, + "DIG", + "args": + [ { "int": + "4" } ] }, { "prim": - "PAIR" } ] ] }, + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "SOME" }, { "prim": "DIP", "args": [ [ { "prim": - "DROP" }, + "DUP" }, { "prim": - "DROP" }, + "CAR" }, { "prim": - "DROP" }, + "CAR" } ] ] } ] ] }, { "prim": - "DROP" } ] ] }, + "UPDATE" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, { "prim": "DUP" }, { "prim": - "CDR", - "annots": - [ "@storage" ] }, - [ { "prim": + "CDR" }, + { "prim": + "SWAP" }, + { "prim": + "CAR" }, + { "prim": + "CDR" } ] ] }, + { "prim": + "PAIR" }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ], + "DROP" } ] ] }, { "prim": - "CAR", - "annots": - [ "@under" ] }, + "DIP", + "args": + [ { "int": + "3" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "IF", + "DIG", "args": - [ [ [ { "prim": + [ { "int": + "3" } ] }, + { "prim": "DIP", "args": [ [ { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "CAR" }, + { "prim": "DIP", "args": [ [ { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "CDR" } ] ] }, + { "prim": + "PAIR" }, + { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@t" ] } ] ] }, + "DUP" }, { "prim": - "SWAP" } ] ] }, + "CDR" } ] ] }, { "prim": - "SWAP" } ] ] }, + "PAIR" }, { "prim": - "SWAP" } ], + "SOME" }, { "prim": - "CAR", - "annots": - [ "%destination" ] }, - [ { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": + "DUP" } ] ] }, + { "prim": + "SWAP" }, + { "prim": + "CAR" } ] ] } ] ] }, + { "prim": + "UPDATE" }, + { "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@t" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, + "DUP" } ] ] }, { "prim": - "SWAP" } ] ] }, + "SWAP" }, { "prim": - "SWAP" } ] ] }, + "CDR" } ] ] }, { "prim": - "SWAP" } ], + "PAIR" }, { "prim": - "CDR", - "annots": - [ "%amount" ] }, + "SWAP" }, { "prim": - "UNIT" }, + "DROP" }, { "prim": - "TRANSFER_TOKENS", - "annots": - [ "@op" ] }, - [ { "prim": "DIP", "args": [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ], + "DROP" } ] ] }, { "prim": - "NIL", + "PUSH", "args": [ { "prim": - "operation" } ] }, + "unit" }, + { "prim": + "Unit" } ] } ], [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", + "PUSH", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@op" ] } ] ] }, + [ { "prim": + "unit" }, { "prim": - "SWAP" } ] ] }, + "Unit" } ] } ] ] }, + { "prim": + "DROP" }, + { "prim": + "DUP" }, { "prim": - "SWAP" } ], - [ { "prim": "DIP", "args": [ [ { "prim": - "DIP", + "DROP", "args": - [ [ { "prim": + [ { "int": + "4" } ] }, + { "prim": "DIP", "args": - [ [ { "prim": - "DROP" } ] ] } ] ] } ] ] } ], + [ { "int": + "6" }, + [ { "prim": + "DUP" } ] ] }, { "prim": - "CONS" }, + "DIG", + "args": + [ { "int": + "6" } ] }, + { "prim": + "DROP" } ] ] }, { "prim": - "PAIR" } ], - [ [ { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "7" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", "args": - [ [ { "prim": + [ { "int": + "6" } ] }, + { "prim": "DIP", "args": - [ [ { "prim": - "DIP", + [ { "int": + "10" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "10" } ] }, + { "prim": + "CONTRACT", + "args": + [ { "prim": + "unit" } ] }, + { "prim": + "IF_NONE", + "args": + [ [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "bad address for get_contract" } ] }, + { "prim": + "FAILWITH" } ], + [] ] }, + { "prim": + "DIP", + "args": + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "4" } ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, + { "prim": + "UNIT" }, + { "prim": + "TRANSFER_TOKENS" }, + { "prim": + "DIP", + "args": + [ { "int": + "8" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "8" } ] }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" }, + { "prim": + "CONTRACT", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "nat" } ], + "annots": + [ "%approve" ] }, + { "prim": + "pair", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ], + "annots": + [ "%getAllowance" ] } ] }, + { "prim": + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ], + "annots": + [ "%getBalance" ] }, + { "prim": + "pair", + "args": + [ { "prim": + "unit" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ], + "annots": + [ "%getTotalSupply" ] } ] } ] }, + { "prim": + "pair", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, + { "prim": + "nat" } ], + "annots": + [ "%transfer" ] } ] } ] }, + { "prim": + "IF_NONE", + "args": + [ [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "bad address for get_contract" } ] }, + { "prim": + "FAILWITH" } ], + [] ] }, + { "prim": + "SELF" }, + { "prim": + "ADDRESS" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "13" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "13" } ] } ] ] }, + { "prim": + "PAIR" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "5" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "5" } ] } ] ] }, + { "prim": + "PAIR" }, + { "prim": + "RIGHT", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "nat" } ] }, + { "prim": + "pair", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ] } ] }, + { "prim": + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ] }, + { "prim": + "pair", + "args": + [ { "prim": + "unit" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ] } ] } ] } ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + { "prim": + "PUSH", + "args": + [ { "prim": + "mutez" }, + { "int": + "0" } ] } ] ] }, + { "prim": + "TRANSFER_TOKENS" }, + { "prim": + "DIP", + "args": + [ { "int": + "10" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "10" } ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "22" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "22" } ] } ] ] }, + { "prim": + "EXEC" }, + { "prim": + "DUP" }, + { "prim": + "CDR" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "11" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "11" } ] }, + { "prim": + "DROP" } ] ] }, + { "prim": + "DIP", + "args": + [ { "int": + "12" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", + "args": + [ { "int": + "11" } ] }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "IF_NONE", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "3" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "3" } ] }, + { "prim": + "NIL", + "args": + [ { "prim": + "operation" } ] }, + { "prim": + "SWAP" }, + { "prim": + "CONS" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "10" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "10" } ] }, + { "prim": + "DROP" } ] ] }, + { "prim": + "DIP", + "args": + [ { "int": + "11" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", + "args": + [ { "int": + "10" } ] }, + { "prim": + "PUSH", + "args": + [ { "prim": + "unit" }, + { "prim": + "Unit" } ] } ], + [ { "prim": + "DIP", + "args": + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "4" } ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "2" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "2" } ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + { "prim": + "NIL", + "args": + [ { "prim": + "operation" } ] }, + { "prim": + "SWAP" }, + { "prim": + "CONS" } ] ] }, + { "prim": + "CONS" } ] ] }, + { "prim": + "CONS" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "11" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "11" } ] }, + { "prim": + "DROP" } ] ] }, + { "prim": + "DIP", + "args": + [ { "int": + "12" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": + "DUG", + "args": + [ { "int": + "11" } ] }, + { "prim": + "DROP" }, + { "prim": + "PUSH", + "args": + [ { "prim": + "unit" }, + { "prim": + "Unit" } ] } ] ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DROP", + "args": + [ { "int": + "6" } ] } ] ] } ], + [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "remove_liquidity: Expected owner balance to be greater than or equal to burn_lqt." } ] }, + { "prim": + "FAILWITH" } ] ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DROP" } ] ] } ], + [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "remove_liquidity: Expected tokens_withdrawn to be greater than or equal to min_tokens_withdrawn." } ] }, + { "prim": + "FAILWITH" } ] ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DROP" } ] ] } ], + [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "remove_liquidity: Expected xtz_withdrawn to be greater than or equal to min_xtz_withdrawn." } ] }, + { "prim": + "FAILWITH" } ] ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DROP" } ] ] } ], + [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "remove_liquidity: Expected total_liquidity to be greater than zero." } ] }, + { "prim": + "FAILWITH" } ] ] } ], + [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "remove_liquidity: sender tried to burn more than their allowance." } ] }, + { "prim": + "FAILWITH" } ] ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DROP" } ] ] } ], + [ { "prim": + "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "remove_liquidity: Expected lqt_burned to be greater than zero." } ] }, + { "prim": + "FAILWITH" } ] ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "remove_liquidity: Expected mint_tokens to be greater than zero." } ] }, + { "prim": + "FAILWITH" } ] ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "remove_liquidity: Expected min_xtz_withdrawn to be greater than zero." } ] }, + { "prim": "FAILWITH" } ] ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "remove_liquidity: Expected now to be less than the deadline." } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DROP" }, { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", + "args": [ { "int": "10" } ] } ] ] } ], + [ { "prim": "DUP" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] } ] ] }, + { "prim": "PAIR" } ] ] }, + { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] }, + { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "NOW" }, { "prim": "COMPARE" }, + { "prim": "LT" }, + { "prim": "IF", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "2" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "997" } ] }, + { "prim": "SWAP" }, + { "prim": "MUL" }, + { "prim": "BALANCE" }, + { "prim": "SWAP" }, + { "prim": "MUL" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "1000" } ] }, + { "prim": "SWAP" }, + { "prim": "MUL" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "2" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": + "nat" }, + { "int": + "997" } ] }, + { "prim": "SWAP" }, + { "prim": "MUL" } ] ] }, + { "prim": "ADD" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "15" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "15" } ] } ] ] }, + { "prim": "EXEC" } ] ] }, + { "prim": "EDIV" }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "DIV by 0" } ] }, + { "prim": "FAILWITH" } ], + [] ] }, { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "15" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "15" } ] } ] ] }, + { "prim": "EXEC" }, + { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] }, + { "prim": "COMPARE" }, + { "prim": "GE" }, + { "prim": "IF", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "2" } ] }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "3" } ] } ] ] }, + { "prim": "ADD" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "2" } ] }, + { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "SWAP" }, + { "prim": "CDR" }, + { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "SWAP" }, + { "prim": "CAR" }, + { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "SWAP" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "PAIR" }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": + [ { "int": "2" } ] }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] }, + { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CONTRACT", + "args": + [ { "prim": "unit" } ] }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "bad address for get_contract" } ] }, + { "prim": + "FAILWITH" } ], + [] ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "UNIT" }, + { "prim": "TRANSFER_TOKENS" }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CONTRACT", + "args": + [ { "prim": "or", + "args": + [ { "prim": "or", + "args": + [ { "prim": + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "nat" } ], + "annots": + [ "%approve" ] }, + { "prim": + "pair", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ], + "annots": + [ "%getAllowance" ] } ] }, + { "prim": + "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ], + "annots": + [ "%getBalance" ] }, + { "prim": + "pair", + "args": + [ { "prim": + "unit" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ], + "annots": + [ "%getTotalSupply" ] } ] } ] }, + { "prim": + "pair", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, + { "prim": + "nat" } ], + "annots": + [ "%transfer" ] } ] } ] }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "bad address for get_contract" } ] }, + { "prim": + "FAILWITH" } ], + [] ] }, + { "prim": "DIP", + "args": + [ { "int": "7" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "7" } ] }, + { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "SELF" }, + { "prim": "ADDRESS" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "6" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "6" } ] } ] ] }, + { "prim": "PAIR" }, + { "prim": "RIGHT", + "args": + [ { "prim": "or", + "args": + [ { "prim": "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "nat" } ] }, + { "prim": + "pair", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ] } ] }, + { "prim": "or", + "args": + [ { "prim": + "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ] }, + { "prim": + "pair", + "args": + [ { "prim": + "unit" }, + { "prim": + "contract", + "args": + [ { "prim": + "nat" } ] } ] } ] } ] } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "PUSH", + "args": + [ { "prim": + "mutez" }, + { "int": "0" } ] } ] ] }, + { "prim": "TRANSFER_TOKENS" }, + { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "2" } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "NIL", + "args": + [ { "prim": + "operation" } ] }, + { "prim": "SWAP" }, + { "prim": "CONS" } ] ] }, + { "prim": "CONS" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "5" } ] }, + { "prim": "DROP" } ] ] }, + { "prim": "DIP", + "args": + [ { "int": "6" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": + [ { "int": "5" } ] }, + { "prim": "DROP", + "args": + [ { "int": "4" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "token_to_xtz: Expected xtz_bought to be greater than or equal to min_xtz_bought." } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP" } ] ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "token_to_xtz: Expected now to be less than the deadline." } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DROP" }, { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", + "args": [ { "int": "6" } ] } ] ] } ] ] }, + { "prim": "DIP", + "args": [ [ { "prim": "DROP" } ] ] } ] ] }, + { "prim": "DIP", "args": [ [ { "prim": "DROP" } ] ] } ], + [ { "prim": "DUP" }, + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "DUP" }, { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] } ] ] }, + { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, { "prim": "CDR" }, + { "prim": "DUP" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "SENDER" }, { "prim": "GET" }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], + [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "4" } ] }, + { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "IF", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "0" } ] }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "4" } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "3" } ] }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] }, + { "prim": "GET" }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "DROP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "DROP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP" } ] ] }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ] ] }, + { "prim": "DROP" }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "4" } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "CAR" }, + { "prim": "CDR" } ] ] }, + { "prim": "ADD" }, + { "prim": "SOME" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "3" } ] }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] } ] ] }, + { "prim": "UPDATE" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "3" } ] }, + { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "SWAP" }, + { "prim": "CDR" }, + { "prim": "CAR" } ] ] }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": [ { "int": "3" } ] }, + { "prim": "DROP" }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "0" } ] }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "4" } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "3" } ] }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] }, + { "prim": "GET" }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "2" } ] }, + { "prim": "CAR" }, + { "prim": "CDR" } ] ] }, + { "prim": "SUB" }, + { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "vote: int_to_nat: cannot convert a negative number to a nat." } ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "13" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "13" } ] } ] ] }, + { "prim": "EXEC" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "DROP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": + "DROP" } ] ] }, + { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "COMPARE" }, + { "prim": "GT" }, + { "prim": "IF", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "5" } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, + { "prim": + "SWAP" }, + { "prim": + "SOME" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "4" } ] }, + { "prim": + "CDR" }, + { "prim": + "CDR" } ] ] } ] ] }, + { "prim": "UPDATE" }, + { "prim": "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "4" } ] }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "SWAP" }, + { "prim": + "CDR" }, + { "prim": + "CAR" } ] ] }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": "DUG", + "args": + [ { "int": "4" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": + "unit" }, + { "prim": + "Unit" } ] } ], + [ { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "5" } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "14" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "14" } ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "4" } ] }, + { "prim": + "CDR" }, + { "prim": + "CDR" } ] ] } ] ] }, + { "prim": "UPDATE" }, + { "prim": "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ { "int": + "4" }, + [ { "prim": + "DUP" } ] ] }, + { "prim": + "DIG", + "args": + [ { "int": + "4" } ] }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "SWAP" }, + { "prim": + "CDR" }, + { "prim": + "CAR" } ] ] }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": + "DROP" } ] ] }, + { "prim": "DUG", + "args": + [ { "int": "4" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": + "unit" }, + { "prim": + "Unit" } ] } ] ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP" } ] ] } ] ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP" } ] ] } ] ] }, + { "prim": "DROP" }, + { "prim": "DIP", + "args": + [ { "int": "2" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "2" } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "9" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "9" } ] } ] ] }, + { "prim": "EXEC" }, { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], + [ { "prim": "DUP" }, + { "prim": "NIL", + "args": + [ { "prim": "operation" } ] }, + { "prim": "SWAP" }, + { "prim": "CONS" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "3" } ] }, + { "prim": "DROP" } ] ] }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": [ { "int": "3" } ] }, + { "prim": "DROP" }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ] ] }, + { "prim": "DROP" }, { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] }, + { "prim": "DROP" } ] ] }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": [ { "int": "3" } ] }, + { "prim": "DROP", + "args": [ { "int": "2" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ] ] }, + { "prim": "DROP" }, { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", + "args": [ { "int": "6" } ] } ] ] } ], + [ { "prim": "DUP" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] } ] ] }, + { "prim": "PAIR" } ] ] }, + { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CDR" }, { "prim": "CDR" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "DIP", + "args": [ { "int": "2" }, [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", "args": [ { "int": "2" } ] }, + { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "NOW" }, { "prim": "COMPARE" }, + { "prim": "LT" }, + { "prim": "IF", + "args": + [ [ { "prim": "AMOUNT" }, + { "prim": "BALANCE" }, { "prim": "SUB" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "14" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "14" } ] } ] ] }, + { "prim": "EXEC" }, + { "prim": "DIP", + "args": + [ { "int": "15" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "15" } ] }, + { "prim": "AMOUNT" }, { "prim": "EXEC" }, + { "prim": "DUP" }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, { "int": "997" } ] }, + { "prim": "SWAP" }, { "prim": "MUL" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "3" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "3" } ] }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" } ] ] }, + { "prim": "MUL" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "1000" } ] }, + { "prim": "SWAP" }, + { "prim": "MUL" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "997" } ] }, + { "prim": "SWAP" }, + { "prim": "MUL" } ] ] }, + { "prim": "ADD" } ] ] }, + { "prim": "EDIV" }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": "DIV by 0" } ] }, + { "prim": "FAILWITH" } ], [] ] }, + { "prim": "CAR" }, { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "5" } ] }, + { "prim": "CAR" }, + { "prim": "CDR" } ] ] }, + { "prim": "COMPARE" }, { "prim": "GE" }, + { "prim": "IF", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "4" } ] }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SUB" }, + { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "xtz_to_token: token_pool: int_to_nat: cannot convert a negative number to a nat." } ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "12" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "12" } ] } ] ] }, + { "prim": "EXEC" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "4" } ] }, + { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "SWAP" }, + { "prim": "CDR" }, + { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "SWAP" }, + { "prim": "CAR" }, + { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "SWAP" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "PAIR" }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": [ { "int": "4" } ] }, + { "prim": "DIP", + "args": + [ { "int": "4" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": [ { "int": "4" } ] }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CONTRACT", + "args": + [ { "prim": "or", + "args": + [ { "prim": "or", + "args": + [ { "prim": "or", + "args": + [ { "prim": + "pair", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@confirmAndCheck" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, + "address" }, { "prim": - "SWAP" } ], - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", + "nat" } ], "annots": - [ "@t" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "LEFT", - "args": - [ { "prim": - "or", + [ "%approve" ] }, + { "prim": + "pair", "args": [ { "prim": "pair", @@ -4542,194 +5877,189 @@ [ { "prim": "address" }, { "prim": - "address" } ], - "annots": - [ "%ChangeOwner" ] }, - { "prim": - "or", - "args": - [ { "prim": - "address", - "annots": - [ "%AddOwner" ] }, + "address" } ] }, { "prim": - "or", + "contract", "args": [ { "prim": - "address", + "nat" } ] } ], "annots": - [ "%RemoveOwner" ] }, - { "prim": - "or", + [ "%getAllowance" ] } ] }, + { "prim": "or", + "args": + [ { "prim": + "pair", "args": [ { "prim": - "nat", - "annots": - [ "%ChangeRequirement" ] }, + "address" }, { "prim": - "or", + "contract", "args": [ { "prim": - "mutez", + "nat" } ] } ], "annots": - [ "%SetDailyLimit" ] }, - { "prim": - "or", + [ "%getBalance" ] }, + { "prim": + "pair", "args": [ { "prim": - "unit", - "annots": - [ "%ResetSpentToday" ] }, + "unit" }, { "prim": "contract", "args": [ { "prim": - "unit" } ], - "annots": - [ ":UnitContract", - "%Kill" ] } ] } ] } ] } ] } ] } ] } ], - "annots": - [ "%Withdraw", - "%" ] }, - { "prim": - "PAIR" }, - { "prim": - "EXEC" }, - { "prim": - "IF_LEFT", - "args": - [ [ { "prim": - "RENAME", + "nat" } ] } ], "annots": - [ "@storage_slash_90" ] }, - { "prim": - "NIL", + [ "%getTotalSupply" ] } ] } ] }, + { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "address" } ] }, + { "prim": "nat" } ], + "annots": + [ "%transfer" ] } ] } ] }, + { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "bad address for get_contract" } ] }, + { "prim": "FAILWITH" } ], + [] ] }, { "prim": "SELF" }, + { "prim": "ADDRESS" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "6" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "6" } ] }, + { "prim": "CAR" }, + { "prim": "CAR" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "PAIR" }, + { "prim": "RIGHT", + "args": + [ { "prim": "or", + "args": + [ { "prim": "or", + "args": + [ { "prim": "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "nat" } ] }, + { "prim": "pair", + "args": + [ { "prim": + "pair", "args": [ { "prim": - "operation" } ], - "annots": - [ "@no_op" ] }, + "address" }, { "prim": - "PAIR" } ], - [ { "prim": - "RENAME", - "annots": - [ "@storage_slash_91" ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", + "address" } ] }, + { "prim": + "contract", "args": - [ [ { "prim": - "DUP", - "annots": - [ "@t" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "CAR", - "annots": - [ "%destination" ] }, [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@t" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "CDR", - "annots": - [ "%amount" ] }, - { "prim": - "UNIT" }, - { "prim": - "TRANSFER_TOKENS", - "annots": - [ "@op" ] }, - { "prim": - "SWAP" }, - { "prim": - "NIL", + "nat" } ] } ] } ] }, + { "prim": "or", + "args": + [ { "prim": "pair", + "args": + [ { "prim": + "address" }, + { "prim": + "contract", "args": [ { "prim": - "operation" } ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", + "nat" } ] } ] }, + { "prim": "pair", + "args": + [ { "prim": + "unit" }, + { "prim": + "contract", "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DROP" } ] ] } ] ] } ] ] } ], - { "prim": - "CONS" }, - { "prim": - "PAIR" } ] ] } ] ] }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DROP" }, - { "prim": - "DROP" }, - { "prim": - "DROP" }, - { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": "DROP" }, { "prim": "DROP" }, - { "prim": "DROP" } ] ] } ] ] } ], - "storage": { "int": "1000" }, "input": { "prim": "Unit" }, - "amount": "50000" } \ No newline at end of file + "nat" } ] } ] } ] } ] } ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + { "prim": "PUSH", + "args": + [ { "prim": "mutez" }, + { "int": "0" } ] } ] ] }, + { "prim": "TRANSFER_TOKENS" }, + { "prim": "DUP" }, + { "prim": "NIL", + "args": + [ { "prim": "operation" } ] }, + { "prim": "SWAP" }, + { "prim": "CONS" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ { "int": "5" }, + [ { "prim": "DUP" } ] ] }, + { "prim": "DIG", + "args": + [ { "int": "5" } ] }, + { "prim": "DROP" } ] ] }, + { "prim": "DIP", + "args": + [ { "int": "6" }, + [ { "prim": "DROP" } ] ] }, + { "prim": "DUG", + "args": [ { "int": "5" } ] }, + { "prim": "DROP", + "args": [ { "int": "2" } ] }, + { "prim": "PUSH", + "args": + [ { "prim": "unit" }, + { "prim": "Unit" } ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "xtz_to_token: Expected tokens_bought to be greater than or equal to min_tokens_bought." } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", + "args": [ { "int": "3" } ] } ] ] } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "xtz_to_token: Expected now to be less than the deadline." } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DROP" }, { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DROP", + "args": [ { "int": "5" } ] } ] ] } ] ] }, + { "prim": "DIP", "args": [ [ { "prim": "DROP" } ] ] } ] ] }, + { "prim": "DIP", + "args": [ [ { "prim": "DROP", "args": [ { "int": "10" } ] } ] ] } ] ] } ] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/exchange.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/exchange.michelson new file mode 100644 index 00000000..05ded035 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/exchange.michelson @@ -0,0 +1,1515 @@ +parameter + (or (or (or (pair %addLiquidity (pair address nat) (pair nat timestamp)) + (pair %approve (pair address nat) nat)) + (or (pair %removeLiquidity + (pair (pair address address) (pair nat mutez)) + (pair nat timestamp)) + (pair %tokenToXtz (pair (pair address address) (pair nat mutez)) timestamp))) + (or (pair %vote key_hash bool) (pair %xtzToToken (pair address nat) timestamp))) ; + storage + (pair (big_map %accounts + address + (pair (pair (map %allowances address nat) (nat %balance)) (option %vote key_hash))) + (pair %s + (pair (pair (option %current_baker (pair key_hash nat)) (address %token_address)) + (pair (nat %token_pool) (nat %total_liquidity))) + (map %votes key_hash nat))) ; + code { LAMBDA + mutez + nat + { DUP ; + PUSH mutez 1 ; + SWAP ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + DIP { DROP } } ; + LAMBDA nat mutez { DUP ; PUSH mutez 1 ; SWAP ; MUL ; DIP { DROP } } ; + EMPTY_MAP address nat ; + DUP ; + NONE key_hash ; + DUP ; + DIP { PAIR } ; + SWAP ; + NONE nat ; + SWAP ; + LAMBDA + (pair string int) + nat + { DUP ; + CDR ; + DUP ; + PUSH nat 0 ; + SWAP ; + PUSH int 0 ; + SWAP ; + COMPARE ; + GE ; + IF { DIP { DUP } ; SWAP ; ABS ; DIP { DROP } ; PUSH unit Unit } + { DIP 2 { DUP } ; DIG 2 ; CAR ; FAILWITH } ; + DROP ; + DUP ; + DIP { DROP 3 } } ; + SWAP ; + LAMBDA + (pair (pair (option key_hash) (map address nat)) + (pair address + (big_map + address + (pair (pair (map %allowances address nat) (nat %balance)) (option %vote key_hash))))) + (pair (pair (map %allowances address nat) (nat %balance)) (option %vote key_hash)) + { DUP ; + CAR ; + SWAP ; + CDR ; + DIP { DUP ; CDR ; SWAP ; CAR } ; + DUP ; + CAR ; + DIP { DUP ; CDR } ; + GET ; + IF_NONE + { DIP 2 { DUP } ; + DIG 2 ; + PUSH nat 0 ; + SWAP ; + PAIR ; + DIP { DIP { DUP } ; SWAP } ; + PAIR } + { DUP ; DIP { DROP } } ; + DIP { DROP 3 } } ; + SWAP ; + APPLY ; + LAMBDA + (pair (big_map %accounts + address + (pair (pair (map %allowances address nat) (nat %balance)) (option %vote key_hash))) + (pair %s + (pair (pair (option %current_baker (pair key_hash nat)) (address %token_address)) + (pair (nat %token_pool) (nat %total_liquidity))) + (map %votes key_hash nat))) + (pair (option operation) + (pair (big_map %accounts + address + (pair (pair (map %allowances address nat) (nat %balance)) (option %vote key_hash))) + (pair %s + (pair (pair (option %current_baker (pair key_hash nat)) (address %token_address)) + (pair (nat %token_pool) (nat %total_liquidity))) + (map %votes key_hash nat)))) + { DUP ; + NONE (pair key_hash nat) ; + SWAP ; + CDR ; + CDR ; + ITER { DUP ; + CAR ; + DIP { DUP } ; + SWAP ; + CDR ; + DIP 3 { DUP } ; + DIG 3 ; + IF_NONE + { DIP { DUP } ; + SWAP ; + DIP { DUP } ; + PAIR ; + SOME ; + DIP { DIP 3 { DUP } ; DIG 3 ; DROP } ; + DIP 4 { DROP } ; + DUG 3 ; + PUSH unit Unit } + { DIP { DUP } ; + SWAP ; + DIP { DUP ; CDR } ; + COMPARE ; + GT ; + IF { DIP 2 { DUP } ; + DIG 2 ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + SOME ; + DIP { DIP 4 { DUP } ; DIG 4 ; DROP } ; + DIP 5 { DROP } ; + DUG 4 ; + PUSH unit Unit } + { PUSH unit Unit } ; + DIP { DROP } } ; + DROP 4 } ; + DUP ; + DIP { DIP { DUP } ; + SWAP ; + DUP ; + CAR ; + SWAP ; + CDR ; + DUP ; + CDR ; + SWAP ; + CAR ; + DUP ; + CDR ; + SWAP ; + CAR ; + CDR } ; + PAIR ; + PAIR ; + PAIR ; + SWAP ; + PAIR ; + SWAP ; + DIP { DIP { DROP } } ; + NONE operation ; + DIP 2 { DUP } ; + DIG 2 ; + CDR ; + CAR ; + CAR ; + CAR ; + IF_NONE + { PUSH unit Unit } + { DUP ; + CAR ; + SOME ; + SET_DELEGATE ; + DUP ; + SOME ; + DIP { DIP 2 { DUP } ; DIG 2 ; DROP } ; + DIP 3 { DROP } ; + DUG 2 ; + DROP 2 ; + PUSH unit Unit } ; + DROP ; + DUP ; + DIP { DIP 2 { DUP } ; DIG 2 } ; + PAIR ; + DIP { DROP 3 } } ; + DIP 8 { DUP } ; + DIG 8 ; + CDR ; + DIP 9 { DUP } ; + DIG 9 ; + CAR ; + IF_LEFT + { DUP ; + IF_LEFT + { DUP ; + IF_LEFT + { DUP ; + DUP ; + CAR ; + CAR ; + DIP { DUP ; CAR ; CDR } ; + PAIR ; + DIP { DUP ; CDR ; CAR ; DIP { DUP ; CDR ; CDR } ; PAIR } ; + PAIR ; + DIP { DIP 4 { DUP } ; DIG 4 } ; + PAIR ; + DUP ; + CAR ; + CAR ; + CAR ; + DIP { DUP } ; + SWAP ; + CAR ; + CAR ; + CDR ; + DIP 2 { DUP } ; + DIG 2 ; + CAR ; + CDR ; + CAR ; + DIP 3 { DUP } ; + DIG 3 ; + CDR ; + NIL operation ; + DIP 5 { DUP } ; + DIG 5 ; + CAR ; + CDR ; + CDR ; + NOW ; + COMPARE ; + LT ; + IF { DIP 2 { DUP } ; + DIG 2 ; + PUSH nat 0 ; + SWAP ; + COMPARE ; + GT ; + IF { PUSH mutez 0 ; + AMOUNT ; + COMPARE ; + GT ; + IF { DIP { DUP } ; + SWAP ; + CDR ; + CAR ; + CDR ; + CDR ; + PUSH nat 0 ; + SWAP ; + COMPARE ; + GT ; + IF { DIP 3 { DUP } ; + DIG 3 ; + PUSH nat 0 ; + SWAP ; + COMPARE ; + GT ; + IF { AMOUNT ; + BALANCE ; + SUB ; + DIP { DIP 18 { DUP } ; DIG 18 } ; + EXEC ; + DIP 19 { DUP } ; + DIG 19 ; + AMOUNT ; + EXEC ; + DUP ; + DIP { DIP 3 { DUP } ; DIG 3 ; CDR ; CAR ; CDR ; CAR } ; + MUL ; + DIP { DIP { DUP } ; SWAP } ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + DIP { DUP } ; + SWAP ; + DIP { DIP 4 { DUP } ; DIG 4 ; CDR ; CAR ; CDR ; CDR } ; + MUL ; + DIP { DIP 2 { DUP } ; DIG 2 } ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + DIP 6 { DUP } ; + DIG 6 ; + DIP { DIP { DUP } ; SWAP } ; + COMPARE ; + GE ; + IF { DUP ; + DIP { DIP 7 { DUP } ; DIG 7 } ; + COMPARE ; + GE ; + IF { DIP 8 { DUP } ; + DIG 8 ; + DIP { DIP 5 { DUP } ; DIG 5 ; CAR } ; + PAIR ; + DIP { DIP 16 { DUP } ; DIG 16 } ; + EXEC ; + DUP ; + CAR ; + CDR ; + DIP { DIP { DUP } ; SWAP } ; + ADD ; + DIP 10 { DUP } ; + DIG 10 ; + DIP { DIP { DUP } ; + SWAP ; + CAR ; + CAR ; + DIP { DUP } ; + PAIR ; + DIP { DIP { DUP } ; SWAP ; CDR } ; + PAIR ; + SOME ; + DIP { DIP 7 { DUP } ; DIG 7 ; CAR } } ; + UPDATE ; + DIP { DIP 7 { DUP } ; DIG 7 ; CDR } ; + PAIR ; + DIP 8 { DROP } ; + DUG 7 ; + DIP 7 { DUP } ; + DIG 7 ; + CDR ; + CAR ; + CDR ; + CDR ; + DIP { DIP 2 { DUP } ; DIG 2 } ; + ADD ; + DIP { DIP 7 { DUP } ; + DIG 7 ; + DUP ; + CAR ; + SWAP ; + CDR ; + DUP ; + CDR ; + SWAP ; + CAR ; + DUP ; + CAR ; + SWAP ; + CDR ; + CAR } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + PAIR ; + SWAP ; + PAIR ; + DIP 8 { DROP } ; + DUG 7 ; + DIP 7 { DUP } ; + DIG 7 ; + CDR ; + CAR ; + CDR ; + CAR ; + DIP { DIP 3 { DUP } ; DIG 3 } ; + ADD ; + DIP { DIP 7 { DUP } ; + DIG 7 ; + DUP ; + CAR ; + SWAP ; + CDR ; + DUP ; + CDR ; + SWAP ; + CAR ; + DUP ; + CAR ; + SWAP ; + CDR ; + CDR } ; + PAIR ; + SWAP ; + PAIR ; + PAIR ; + SWAP ; + PAIR ; + DIP 8 { DROP } ; + DUG 7 ; + DIP 7 { DUP } ; + DIG 7 ; + CDR ; + CAR ; + CAR ; + CDR ; + CONTRACT + (or (or (or (pair %approve address nat) + (pair %getAllowance (pair address address) (contract nat))) + (or (pair %getBalance address (contract nat)) + (pair %getTotalSupply unit (contract nat)))) + (pair %transfer (pair address address) nat)) ; + IF_NONE { PUSH string "bad address for get_contract" ; FAILWITH } {} ; + DIP 11 { DUP } ; + DIG 11 ; + DIP { SELF ; ADDRESS } ; + PAIR ; + DIP { DIP 4 { DUP } ; DIG 4 } ; + PAIR ; + RIGHT + (or (or (pair address nat) (pair (pair address address) (contract nat))) + (or (pair address (contract nat)) (pair unit (contract nat)))) ; + DIP { DUP ; PUSH mutez 0 } ; + TRANSFER_TOKENS ; + DIP 9 { DUP } ; + DIG 9 ; + DIP { DIP 19 { DUP } ; DIG 19 } ; + EXEC ; + DUP ; + CDR ; + DIP { DIP 10 { DUP } ; DIG 10 ; DROP } ; + DIP 11 { DROP } ; + DUG 10 ; + DUP ; + CAR ; + IF_NONE + { DIP { DUP } ; + SWAP ; + NIL operation ; + SWAP ; + CONS ; + DIP { DIP 9 { DUP } ; DIG 9 ; DROP } ; + DIP 10 { DROP } ; + DUG 9 ; + PUSH unit Unit } + { DIP 2 { DUP } ; + DIG 2 ; + DIP { DUP ; NIL operation ; SWAP ; CONS } ; + CONS ; + DIP { DIP 10 { DUP } ; DIG 10 ; DROP } ; + DIP 11 { DROP } ; + DUG 10 ; + DROP ; + PUSH unit Unit } ; + DIP { DROP 5 } } + { PUSH string "add_liquidity: lqt_minted must be greater than min_lqt_created." ; + FAILWITH } } + { PUSH string + "add_liquidity: max_tokens_deposited must be greater than or equal to tokens_deposited." ; + FAILWITH } ; + DIP { DROP 4 } } + { PUSH string "add_liquidity: min_lqt_created must be greater than zero." ; + FAILWITH } } + { PUSH mutez 1000000 ; + AMOUNT ; + COMPARE ; + GE ; + IF { DIP 2 { DUP } ; + DIG 2 ; + DIP 19 { DUP } ; + DIG 19 ; + BALANCE ; + EXEC ; + DUP ; + DIP { DIP 3 { DUP } ; + DIG 3 ; + DUP ; + CAR ; + SWAP ; + CDR ; + DUP ; + CDR ; + SWAP ; + CAR ; + DUP ; + CAR ; + SWAP ; + CDR ; + CAR } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + PAIR ; + SWAP ; + PAIR ; + DIP 4 { DROP } ; + DUG 3 ; + DIP 6 { DUP } ; + DIG 6 ; + DIP { DIP 18 { DUP } ; + DIG 18 ; + DIP { DUP } ; + PAIR ; + DIP { DIP 17 { DUP } ; DIG 17 } ; + PAIR ; + SOME ; + DIP { DIP 3 { DUP } ; DIG 3 ; CAR } } ; + UPDATE ; + DIP { DIP 3 { DUP } ; DIG 3 ; CDR } ; + PAIR ; + DIP 4 { DROP } ; + DUG 3 ; + DIP { DUP } ; + SWAP ; + DIP { DIP 3 { DUP } ; + DIG 3 ; + DUP ; + CAR ; + SWAP ; + CDR ; + DUP ; + CDR ; + SWAP ; + CAR ; + DUP ; + CAR ; + SWAP ; + CDR ; + CDR } ; + PAIR ; + SWAP ; + PAIR ; + PAIR ; + SWAP ; + PAIR ; + DIP 4 { DROP } ; + DUG 3 ; + DIP 3 { DUP } ; + DIG 3 ; + CDR ; + CAR ; + CAR ; + CDR ; + CONTRACT + (or (or (or (pair %approve address nat) + (pair %getAllowance (pair address address) (contract nat))) + (or (pair %getBalance address (contract nat)) + (pair %getTotalSupply unit (contract nat)))) + (pair %transfer (pair address address) nat)) ; + IF_NONE { PUSH string "bad address for get_contract" ; FAILWITH } {} ; + DIP 7 { DUP } ; + DIG 7 ; + DIP { SELF ; ADDRESS } ; + PAIR ; + DIP { DIP 2 { DUP } ; DIG 2 } ; + PAIR ; + RIGHT + (or (or (pair address nat) (pair (pair address address) (contract nat))) + (or (pair address (contract nat)) (pair unit (contract nat)))) ; + DIP { DUP ; PUSH mutez 0 } ; + TRANSFER_TOKENS ; + DIP 5 { DUP } ; + DIG 5 ; + DIP { DIP 15 { DUP } ; DIG 15 } ; + EXEC ; + DUP ; + CDR ; + DIP { DIP 6 { DUP } ; DIG 6 ; DROP } ; + DIP 7 { DROP } ; + DUG 6 ; + DUP ; + CAR ; + IF_NONE + { DIP { DUP } ; + SWAP ; + NIL operation ; + SWAP ; + CONS ; + DIP { DIP 5 { DUP } ; DIG 5 ; DROP } ; + DIP 6 { DROP } ; + DUG 5 ; + PUSH unit Unit } + { DIP 2 { DUP } ; + DIG 2 ; + DIP { DUP ; NIL operation ; SWAP ; CONS } ; + CONS ; + DIP { DIP 6 { DUP } ; DIG 6 ; DROP } ; + DIP 7 { DROP } ; + DUG 6 ; + DROP ; + PUSH unit Unit } ; + DIP { DROP 5 } } + { PUSH string + "add_liquidity: when intiating the liquidity pool the amount must be at least 1 XTZ." ; + FAILWITH } } } + { PUSH string + "add_liquidity: Expected the amount sent to the contract to be greater than 0." ; + FAILWITH } } + { PUSH string "add_liquidity: Expected maxTokens to be greater than 0." ; + FAILWITH } } + { PUSH string "add_liquidity: Expected the deadline to be greater than now." ; + FAILWITH } ; + DROP ; + DUP ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + DIP { DROP 8 } } + { DUP ; + DUP ; + CAR ; + CAR ; + DIP { DUP ; CAR ; CDR } ; + PAIR ; + DIP { DUP ; CDR ; DIP { DIP 4 { DUP } ; DIG 4 } ; PAIR } ; + PAIR ; + DUP ; + CAR ; + CAR ; + DIP { DUP } ; + SWAP ; + CDR ; + CDR ; + DIP { DUP } ; + SWAP ; + SENDER ; + SWAP ; + COMPARE ; + NEQ ; + IF { DUP ; + CAR ; + SENDER ; + PAIR ; + DIP { DIP 9 { DUP } ; DIG 9 } ; + EXEC ; + DUP ; + CAR ; + CAR ; + DIP 3 { DUP } ; + DIG 3 ; + DIP { DIP 4 { DUP } ; DIG 4 ; CAR ; CDR ; SOME ; DIP { DUP } } ; + UPDATE ; + DIP { DROP } ; + DUP ; + DIP { DIP { DUP } ; SWAP ; CAR ; CDR } ; + PAIR ; + DIP { DIP { DUP } ; SWAP ; CDR } ; + PAIR ; + SOME ; + DIP { DIP 2 { DUP } ; DIG 2 ; CAR } ; + SENDER ; + UPDATE ; + DIP { DIP 2 { DUP } ; DIG 2 ; CDR } ; + PAIR ; + DIP 3 { DROP } ; + DUG 2 ; + DROP 2 ; + PUSH unit Unit } + { PUSH string + "approve: the spender must not be the sender. The owner already has rights to all of the LQT" ; + FAILWITH } ; + DROP ; + DUP ; + NIL operation ; + PAIR ; + DIP { DROP 5 } } ; + DIP { DROP } } + { DUP ; + IF_LEFT + { DUP ; + DUP ; + CAR ; + CAR ; + CAR ; + DIP { DUP ; CAR ; CAR ; CDR } ; + PAIR ; + DIP { DUP ; CAR ; CDR ; CAR ; DIP { DUP ; CAR ; CDR ; CDR } ; PAIR } ; + PAIR ; + DIP { DUP ; + CDR ; + CAR ; + DIP { DUP ; CDR ; CDR } ; + PAIR ; + DIP { DIP 4 { DUP } ; DIG 4 } ; + PAIR } ; + PAIR ; + DUP ; + CAR ; + CAR ; + CAR ; + DIP { DUP } ; + SWAP ; + CAR ; + CAR ; + CDR ; + DIP 2 { DUP } ; + DIG 2 ; + CAR ; + CDR ; + CAR ; + DIP 3 { DUP } ; + DIG 3 ; + CAR ; + CDR ; + CDR ; + DIP 4 { DUP } ; + DIG 4 ; + CDR ; + CAR ; + CAR ; + DIP 5 { DUP } ; + DIG 5 ; + CDR ; + CDR ; + NIL operation ; + DIP 7 { DUP } ; + DIG 7 ; + CDR ; + CAR ; + CDR ; + NOW ; + COMPARE ; + LT ; + IF { DIP 3 { DUP } ; + DIG 3 ; + PUSH mutez 0 ; + SWAP ; + COMPARE ; + GT ; + IF { DIP 2 { DUP } ; + DIG 2 ; + PUSH nat 0 ; + SWAP ; + COMPARE ; + GT ; + IF { DIP 4 { DUP } ; + DIG 4 ; + PUSH nat 0 ; + SWAP ; + COMPARE ; + GT ; + IF { DIP 6 { DUP } ; + DIG 6 ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + DUP ; + CAR ; + DUP ; + PUSH nat 0 ; + SWAP ; + DIP { DIP 2 { DUP } ; DIG 2 ; CDR ; CAR } ; + GET ; + IF_NONE + { PUSH string "check_approval: owner account does not exist." ; FAILWITH } + { DIP 2 { DUP } ; + DIG 2 ; + SENDER ; + COMPARE ; + NEQ ; + IF { DUP ; + CAR ; + CAR ; + SENDER ; + GET ; + IF_NONE + { PUSH string "check_approval: allowance for sender does not exist." ; + FAILWITH } + { DUP ; + DIP { DIP 2 { DUP } ; DIG 2 ; DROP } ; + DIP 3 { DROP } ; + DUG 2 ; + DROP ; + PUSH unit Unit } } + { DUP ; + CAR ; + CDR ; + DIP { DIP { DUP } ; SWAP ; DROP } ; + SWAP ; + DIP { DIP { DROP } } ; + PUSH unit Unit } ; + DIP { DROP } } ; + DROP ; + DUP ; + DIP { DROP 3 } ; + DUP ; + DIP { DIP 5 { DUP } ; DIG 5 } ; + COMPARE ; + GE ; + IF { DIP 2 { DUP } ; + DIG 2 ; + CDR ; + CAR ; + CDR ; + CDR ; + PUSH nat 0 ; + SWAP ; + COMPARE ; + GT ; + IF { DIP 5 { DUP } ; + DIG 5 ; + BALANCE ; + SWAP ; + MUL ; + DIP { DIP 2 { DUP } ; + DIG 2 ; + CDR ; + CAR ; + CDR ; + CDR ; + DIP { DIP 20 { DUP } ; DIG 20 } ; + EXEC } ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + DIP { DIP 20 { DUP } ; DIG 20 } ; + EXEC ; + DUP ; + DIP { DIP 5 { DUP } ; DIG 5 } ; + COMPARE ; + GE ; + IF { DIP 6 { DUP } ; + DIG 6 ; + DIP { DIP 3 { DUP } ; DIG 3 ; CDR ; CAR ; CDR ; CAR } ; + MUL ; + DIP { DIP 3 { DUP } ; DIG 3 ; CDR ; CAR ; CDR ; CDR } ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + DUP ; + DIP { DIP 5 { DUP } ; DIG 5 } ; + COMPARE ; + GE ; + IF { DIP 9 { DUP } ; + DIG 9 ; + DIP { DIP 4 { DUP } ; DIG 4 ; CAR } ; + PAIR ; + DIP { DIP 17 { DUP } ; DIG 17 } ; + EXEC ; + DUP ; + CAR ; + CDR ; + DIP { DIP 8 { DUP } ; DIG 8 } ; + COMPARE ; + GE ; + IF { DUP ; + CAR ; + CDR ; + DIP { DIP 8 { DUP } ; DIG 8 } ; + SUB ; + PUSH string + "remove_liquidity: new_balance: int_to_nat: cannot convert a negative number to a nat." ; + PAIR ; + DIP { DIP 19 { DUP } ; DIG 19 } ; + EXEC ; + DIP 11 { DUP } ; + DIG 11 ; + DIP { DIP { DUP } ; + SWAP ; + CAR ; + CAR ; + DIP { DUP } ; + PAIR ; + DIP { DIP { DUP } ; SWAP ; CDR } ; + PAIR ; + SOME ; + DIP { DIP 6 { DUP } ; DIG 6 ; CAR } } ; + UPDATE ; + DIP { DIP 6 { DUP } ; DIG 6 ; CDR } ; + PAIR ; + DIP 7 { DROP } ; + DUG 6 ; + DIP 6 { DUP } ; + DIG 6 ; + CDR ; + CAR ; + CDR ; + CDR ; + DIP { DIP 9 { DUP } ; DIG 9 } ; + SUB ; + PUSH string + "remove_liquidity: total_liquidity: int_to_nat: cannot convert a negative number to a nat." ; + PAIR ; + DIP { DIP 20 { DUP } ; DIG 20 } ; + EXEC ; + DIP { DIP 6 { DUP } ; + DIG 6 ; + DUP ; + CAR ; + SWAP ; + CDR ; + DUP ; + CDR ; + SWAP ; + CAR ; + DUP ; + CAR ; + SWAP ; + CDR ; + CAR } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + PAIR ; + SWAP ; + PAIR ; + DIP 7 { DROP } ; + DUG 6 ; + DIP 6 { DUP } ; + DIG 6 ; + CDR ; + CAR ; + CDR ; + CAR ; + DIP { DIP 2 { DUP } ; DIG 2 } ; + SUB ; + PUSH string + "remove_liquidity: token_pool: int_to_nat: cannot convert a negative number to a nat." ; + PAIR ; + DIP { DIP 20 { DUP } ; DIG 20 } ; + EXEC ; + DIP { DIP 6 { DUP } ; + DIG 6 ; + DUP ; + CAR ; + SWAP ; + CDR ; + DUP ; + CDR ; + SWAP ; + CAR ; + DUP ; + CAR ; + SWAP ; + CDR ; + CDR } ; + PAIR ; + SWAP ; + PAIR ; + PAIR ; + SWAP ; + PAIR ; + DIP 7 { DROP } ; + DUG 6 ; + DIP 11 { DUP } ; + DIG 11 ; + SENDER ; + SWAP ; + PAIR ; + DIP { DIP 4 { DUP } ; + DIG 4 ; + DIP { DIP 9 { DUP } ; DIG 9 } ; + SUB ; + PUSH string + "remove_liquidity: approve: int_to_nat: cannot convert a negative number to a nat." ; + PAIR ; + DIP { DIP 20 { DUP } ; DIG 20 } ; + EXEC ; + DIP { DIP 6 { DUP } ; DIG 6 } ; + PAIR } ; + PAIR ; + DUP ; + CAR ; + CAR ; + DIP { DUP } ; + SWAP ; + CAR ; + CDR ; + DIP 2 { DUP } ; + DIG 2 ; + CDR ; + CDR ; + DIP { DUP } ; + SWAP ; + DIP { DIP 2 { DUP } ; DIG 2 } ; + COMPARE ; + NEQ ; + IF { DIP 2 { DUP } ; + DIG 2 ; + DIP { DUP ; CAR } ; + PAIR ; + DIP { DIP 23 { DUP } ; DIG 23 } ; + EXEC ; + DIP 2 { DUP } ; + DIG 2 ; + DIP { DIP 4 { DUP } ; DIG 4 ; CDR ; CAR ; SOME ; DIP { DUP ; CAR ; CAR } } ; + UPDATE ; + DIP { DUP ; DUP ; CDR ; SWAP ; CAR ; CDR } ; + PAIR ; + PAIR ; + DIP { DROP } ; + DIP 3 { DUP } ; + DIG 3 ; + DIP { DUP ; + CAR ; + CAR ; + DIP { DUP ; CAR ; CDR } ; + PAIR ; + DIP { DUP ; CDR } ; + PAIR ; + SOME ; + DIP { DIP { DUP } ; SWAP ; CAR } } ; + UPDATE ; + DIP { DIP { DUP } ; SWAP ; CDR } ; + PAIR ; + SWAP ; + DROP ; + DIP { DROP } ; + PUSH unit Unit } + { PUSH unit Unit } ; + DROP ; + DUP ; + DIP { DROP 4 ; DIP 6 { DUP } ; DIG 6 ; DROP } ; + DIP 7 { DROP } ; + DUG 6 ; + DIP 10 { DUP } ; + DIG 10 ; + CONTRACT unit ; + IF_NONE { PUSH string "bad address for get_contract" ; FAILWITH } {} ; + DIP 4 { DUP } ; + DIG 4 ; + DIP { DUP } ; + UNIT ; + TRANSFER_TOKENS ; + DIP 8 { DUP } ; + DIG 8 ; + CDR ; + CAR ; + CAR ; + CDR ; + CONTRACT + (or (or (or (pair %approve address nat) + (pair %getAllowance (pair address address) (contract nat))) + (or (pair %getBalance address (contract nat)) + (pair %getTotalSupply unit (contract nat)))) + (pair %transfer (pair address address) nat)) ; + IF_NONE { PUSH string "bad address for get_contract" ; FAILWITH } {} ; + SELF ; + ADDRESS ; + DIP { DIP 13 { DUP } ; DIG 13 } ; + PAIR ; + DIP { DIP 5 { DUP } ; DIG 5 } ; + PAIR ; + RIGHT + (or (or (pair address nat) (pair (pair address address) (contract nat))) + (or (pair address (contract nat)) (pair unit (contract nat)))) ; + DIP { DUP ; PUSH mutez 0 } ; + TRANSFER_TOKENS ; + DIP 10 { DUP } ; + DIG 10 ; + DIP { DIP 22 { DUP } ; DIG 22 } ; + EXEC ; + DUP ; + CDR ; + DIP { DIP 11 { DUP } ; DIG 11 ; DROP } ; + DIP 12 { DROP } ; + DUG 11 ; + DUP ; + CAR ; + IF_NONE + { DIP 3 { DUP } ; + DIG 3 ; + NIL operation ; + SWAP ; + CONS ; + DIP { DIP 10 { DUP } ; DIG 10 ; DROP } ; + DIP 11 { DROP } ; + DUG 10 ; + PUSH unit Unit } + { DIP 4 { DUP } ; + DIG 4 ; + DIP { DIP 2 { DUP } ; + DIG 2 ; + DIP { DUP ; NIL operation ; SWAP ; CONS } ; + CONS } ; + CONS ; + DIP { DIP 11 { DUP } ; DIG 11 ; DROP } ; + DIP 12 { DROP } ; + DUG 11 ; + DROP ; + PUSH unit Unit } ; + DIP { DROP 6 } } + { PUSH string + "remove_liquidity: Expected owner balance to be greater than or equal to burn_lqt." ; + FAILWITH } ; + DIP { DROP } } + { PUSH string + "remove_liquidity: Expected tokens_withdrawn to be greater than or equal to min_tokens_withdrawn." ; + FAILWITH } ; + DIP { DROP } } + { PUSH string + "remove_liquidity: Expected xtz_withdrawn to be greater than or equal to min_xtz_withdrawn." ; + FAILWITH } ; + DIP { DROP } } + { PUSH string "remove_liquidity: Expected total_liquidity to be greater than zero." ; + FAILWITH } } + { PUSH string "remove_liquidity: sender tried to burn more than their allowance." ; + FAILWITH } ; + DIP { DROP } } + { PUSH string "remove_liquidity: Expected lqt_burned to be greater than zero." ; + FAILWITH } } + { PUSH string "remove_liquidity: Expected mint_tokens to be greater than zero." ; + FAILWITH } } + { PUSH string + "remove_liquidity: Expected min_xtz_withdrawn to be greater than zero." ; + FAILWITH } } + { PUSH string "remove_liquidity: Expected now to be less than the deadline." ; + FAILWITH } ; + DROP ; + DUP ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + DIP { DROP 10 } } + { DUP ; + DUP ; + CAR ; + CAR ; + CAR ; + DIP { DUP ; CAR ; CAR ; CDR } ; + PAIR ; + DIP { DUP ; CAR ; CDR ; CAR ; DIP { DUP ; CAR ; CDR ; CDR } ; PAIR } ; + PAIR ; + DIP { DUP ; CDR ; DIP { DIP 4 { DUP } ; DIG 4 } ; PAIR } ; + PAIR ; + DUP ; + CAR ; + CDR ; + CAR ; + DIP { DUP } ; + SWAP ; + CDR ; + CDR ; + NIL operation ; + DIP 3 { DUP } ; + DIG 3 ; + CDR ; + CAR ; + NOW ; + COMPARE ; + LT ; + IF { DIP 2 { DUP } ; + DIG 2 ; + PUSH nat 997 ; + SWAP ; + MUL ; + BALANCE ; + SWAP ; + MUL ; + DIP { DIP { DUP } ; + SWAP ; + CDR ; + CAR ; + CDR ; + CAR ; + PUSH nat 1000 ; + SWAP ; + MUL ; + DIP { DIP 2 { DUP } ; DIG 2 ; PUSH nat 997 ; SWAP ; MUL } ; + ADD ; + DIP { DIP 15 { DUP } ; DIG 15 } ; + EXEC } ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + DIP { DIP 15 { DUP } ; DIG 15 } ; + EXEC ; + DUP ; + DIP { DIP 4 { DUP } ; DIG 4 ; CAR ; CDR ; CDR } ; + COMPARE ; + GE ; + IF { DIP 2 { DUP } ; + DIG 2 ; + CDR ; + CAR ; + CDR ; + CAR ; + DIP { DIP 3 { DUP } ; DIG 3 } ; + ADD ; + DIP { DIP 2 { DUP } ; + DIG 2 ; + DUP ; + CAR ; + SWAP ; + CDR ; + DUP ; + CDR ; + SWAP ; + CAR ; + DUP ; + CAR ; + SWAP ; + CDR ; + CDR } ; + PAIR ; + SWAP ; + PAIR ; + PAIR ; + SWAP ; + PAIR ; + DIP 3 { DROP } ; + DUG 2 ; + DIP 4 { DUP } ; + DIG 4 ; + CAR ; + CAR ; + CDR ; + CONTRACT unit ; + IF_NONE { PUSH string "bad address for get_contract" ; FAILWITH } {} ; + DIP { DUP } ; + SWAP ; + DIP { DUP } ; + UNIT ; + TRANSFER_TOKENS ; + DIP 4 { DUP } ; + DIG 4 ; + CDR ; + CAR ; + CAR ; + CDR ; + CONTRACT + (or (or (or (pair %approve address nat) + (pair %getAllowance (pair address address) (contract nat))) + (or (pair %getBalance address (contract nat)) + (pair %getTotalSupply unit (contract nat)))) + (pair %transfer (pair address address) nat)) ; + IF_NONE { PUSH string "bad address for get_contract" ; FAILWITH } {} ; + DIP 7 { DUP } ; + DIG 7 ; + CAR ; + CAR ; + CAR ; + DIP { SELF ; ADDRESS } ; + PAIR ; + DIP { DIP 6 { DUP } ; DIG 6 } ; + PAIR ; + RIGHT + (or (or (pair address nat) (pair (pair address address) (contract nat))) + (or (pair address (contract nat)) (pair unit (contract nat)))) ; + DIP { DUP ; PUSH mutez 0 } ; + TRANSFER_TOKENS ; + DIP 2 { DUP } ; + DIG 2 ; + DIP { DUP ; NIL operation ; SWAP ; CONS } ; + CONS ; + DIP { DIP 5 { DUP } ; DIG 5 ; DROP } ; + DIP 6 { DROP } ; + DUG 5 ; + DROP 4 ; + PUSH unit Unit } + { PUSH string + "token_to_xtz: Expected xtz_bought to be greater than or equal to min_xtz_bought." ; + FAILWITH } ; + DIP { DROP } } + { PUSH string "token_to_xtz: Expected now to be less than the deadline." ; + FAILWITH } ; + DROP ; + DUP ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + DIP { DROP 6 } } ; + DIP { DROP } } ; + DIP { DROP } } + { DUP ; + IF_LEFT + { DUP ; + DUP ; + CAR ; + DIP { DUP ; CDR } ; + PAIR ; + DIP { DIP 3 { DUP } ; DIG 3 } ; + PAIR ; + DUP ; + CAR ; + CAR ; + DIP { DUP } ; + SWAP ; + CDR ; + DUP ; + NIL operation ; + SWAP ; + CAR ; + SENDER ; + GET ; + IF_NONE + { PUSH unit Unit } + { DIP 4 { DUP } ; + DIG 4 ; + CAR ; + CDR ; + IF { PUSH nat 0 ; + DIP 4 { DUP } ; + DIG 4 ; + DIP { DIP 3 { DUP } ; DIG 3 ; CDR ; CDR } ; + GET ; + IF_NONE + { PUSH unit Unit } + { DUP ; + DIP { DIP { DUP } ; SWAP ; DROP } ; + SWAP ; + DROP ; + DIP { DROP } ; + PUSH unit Unit } ; + DROP ; + DIP 4 { DUP } ; + DIG 4 ; + DIP { DUP ; + DIP { DIP { DUP } ; SWAP ; CAR ; CDR } ; + ADD ; + SOME ; + DIP { DIP 3 { DUP } ; DIG 3 ; CDR ; CDR } } ; + UPDATE ; + DIP { DIP 3 { DUP } ; DIG 3 ; DUP ; CAR ; SWAP ; CDR ; CAR } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + DIP 4 { DROP } ; + DUG 3 ; + DROP ; + PUSH unit Unit } + { PUSH nat 0 ; + DIP 4 { DUP } ; + DIG 4 ; + DIP { DIP 3 { DUP } ; DIG 3 ; CDR ; CDR } ; + GET ; + IF_NONE + { PUSH unit Unit } + { DUP ; + DIP { DIP 2 { DUP } ; DIG 2 ; CAR ; CDR } ; + SUB ; + PUSH string "vote: int_to_nat: cannot convert a negative number to a nat." ; + PAIR ; + DIP { DIP 13 { DUP } ; DIG 13 } ; + EXEC ; + DIP { DIP { DUP } ; SWAP ; DROP } ; + SWAP ; + DIP { DIP { DROP } ; DUP } ; + SWAP ; + PUSH nat 0 ; + SWAP ; + COMPARE ; + GT ; + IF { DIP 5 { DUP } ; + DIG 5 ; + DIP { DIP { DUP } ; + SWAP ; + SOME ; + DIP { DIP 4 { DUP } ; DIG 4 ; CDR ; CDR } } ; + UPDATE ; + DIP { DIP 4 { DUP } ; DIG 4 ; DUP ; CAR ; SWAP ; CDR ; CAR } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + DIP 5 { DROP } ; + DUG 4 ; + PUSH unit Unit } + { DIP 5 { DUP } ; + DIG 5 ; + DIP { DIP 14 { DUP } ; + DIG 14 ; + DIP { DIP 4 { DUP } ; DIG 4 ; CDR ; CDR } } ; + UPDATE ; + DIP { DIP 4 { DUP } ; DIG 4 ; DUP ; CAR ; SWAP ; CDR ; CAR } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + DIP 5 { DROP } ; + DUG 4 ; + PUSH unit Unit } ; + DIP { DROP } } ; + DIP { DROP } } ; + DROP ; + DIP 2 { DUP } ; + DIG 2 ; + DIP { DIP 9 { DUP } ; DIG 9 } ; + EXEC ; + DUP ; + CAR ; + IF_NONE + { PUSH unit Unit } + { DUP ; + NIL operation ; + SWAP ; + CONS ; + DIP { DIP 3 { DUP } ; DIG 3 ; DROP } ; + DIP 4 { DROP } ; + DUG 3 ; + DROP ; + PUSH unit Unit } ; + DROP ; + DUP ; + CDR ; + DIP { DIP 3 { DUP } ; DIG 3 ; DROP } ; + DIP 4 { DROP } ; + DUG 3 ; + DROP 2 ; + PUSH unit Unit } ; + DROP ; + DUP ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + DIP { DROP 6 } } + { DUP ; + DUP ; + CAR ; + CAR ; + DIP { DUP ; CAR ; CDR } ; + PAIR ; + DIP { DUP ; CDR ; DIP { DIP 3 { DUP } ; DIG 3 } ; PAIR } ; + PAIR ; + DUP ; + CDR ; + CDR ; + NIL operation ; + DIP 2 { DUP } ; + DIG 2 ; + CDR ; + CAR ; + NOW ; + COMPARE ; + LT ; + IF { AMOUNT ; + BALANCE ; + SUB ; + DIP { DIP 14 { DUP } ; DIG 14 } ; + EXEC ; + DIP 15 { DUP } ; + DIG 15 ; + AMOUNT ; + EXEC ; + DUP ; + PUSH nat 997 ; + SWAP ; + MUL ; + DIP { DIP 3 { DUP } ; DIG 3 ; CDR ; CAR ; CDR ; CAR } ; + MUL ; + DIP { DIP { DUP } ; + SWAP ; + PUSH nat 1000 ; + SWAP ; + MUL ; + DIP { DUP ; PUSH nat 997 ; SWAP ; MUL } ; + ADD } ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + DUP ; + DIP { DIP 5 { DUP } ; DIG 5 ; CAR ; CDR } ; + COMPARE ; + GE ; + IF { DIP 4 { DUP } ; + DIG 4 ; + CDR ; + CAR ; + CDR ; + CAR ; + DIP { DUP } ; + SUB ; + PUSH string + "xtz_to_token: token_pool: int_to_nat: cannot convert a negative number to a nat." ; + PAIR ; + DIP { DIP 12 { DUP } ; DIG 12 } ; + EXEC ; + DIP { DIP 4 { DUP } ; + DIG 4 ; + DUP ; + CAR ; + SWAP ; + CDR ; + DUP ; + CDR ; + SWAP ; + CAR ; + DUP ; + CAR ; + SWAP ; + CDR ; + CDR } ; + PAIR ; + SWAP ; + PAIR ; + PAIR ; + SWAP ; + PAIR ; + DIP 5 { DROP } ; + DUG 4 ; + DIP 4 { DUP } ; + DIG 4 ; + CDR ; + CAR ; + CAR ; + CDR ; + CONTRACT + (or (or (or (pair %approve address nat) + (pair %getAllowance (pair address address) (contract nat))) + (or (pair %getBalance address (contract nat)) + (pair %getTotalSupply unit (contract nat)))) + (pair %transfer (pair address address) nat)) ; + IF_NONE { PUSH string "bad address for get_contract" ; FAILWITH } {} ; + SELF ; + ADDRESS ; + DIP { DIP 6 { DUP } ; DIG 6 ; CAR ; CAR } ; + PAIR ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + RIGHT + (or (or (pair address nat) (pair (pair address address) (contract nat))) + (or (pair address (contract nat)) (pair unit (contract nat)))) ; + DIP { DUP ; PUSH mutez 0 } ; + TRANSFER_TOKENS ; + DUP ; + NIL operation ; + SWAP ; + CONS ; + DIP { DIP 5 { DUP } ; DIG 5 ; DROP } ; + DIP 6 { DROP } ; + DUG 5 ; + DROP 2 ; + PUSH unit Unit } + { PUSH string + "xtz_to_token: Expected tokens_bought to be greater than or equal to min_tokens_bought." ; + FAILWITH } ; + DIP { DROP 3 } } + { PUSH string "xtz_to_token: Expected now to be less than the deadline." ; + FAILWITH } ; + DROP ; + DUP ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + DIP { DROP 5 } } ; + DIP { DROP } } ; + DIP { DROP 10 } } \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/token.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/token.micheline new file mode 100644 index 00000000..ebb991c8 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/token.micheline @@ -0,0 +1,2715 @@ +[{ + "prim": "parameter", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }], + "annots": ["%approve"] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "address" + }] + }, { + "prim": "contract", + "args": [{ + "prim": "nat" + }] + }], + "annots": ["%getAllowance"] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "contract", + "args": [{ + "prim": "nat" + }] + }], + "annots": ["%getBalance"] + }, { + "prim": "pair", + "args": [{ + "prim": "unit" + }, { + "prim": "contract", + "args": [{ + "prim": "nat" + }] + }], + "annots": ["%getTotalSupply"] + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "address" + }] + }, { + "prim": "nat" + }], + "annots": ["%transfer"] + }] + }] +}, { + "prim": "storage", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "big_map", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }], + "annots": ["%allowances"] + }, { + "prim": "nat", + "annots": ["%balance"] + }] + }], + "annots": ["%accounts"] + }, { + "prim": "nat", + "annots": ["%total_supply"] + }] + }] +}, { + "prim": "code", + "args": [ + [{ + "prim": "LAMBDA", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "string" + }, { + "prim": "address" + }] + }, { + "prim": "big_map", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }], + "annots": ["%allowances"] + }, { + "prim": "nat", + "annots": ["%balance"] + }] + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }], + "annots": ["%allowances"] + }, { + "prim": "nat", + "annots": ["%balance"] + }] + }, + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": ": owner does not exist in accounts" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONCAT" + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "LAMBDA", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "string" + }, { + "prim": "address" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }], + "annots": ["%allowances"] + }, { + "prim": "nat", + "annots": ["%balance"] + }] + }] + }, { + "prim": "nat" + }, + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "SENDER" + }, { + "prim": "SWAP" + }, { + "prim": "COMPARE" + }, { + "prim": "NEQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "SENDER" + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": ": owner does not have an allowance" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONCAT" + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DROP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "3" + }] + }] + ] + }] + ] + }, { + "prim": "LAMBDA", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "string" + }, { + "prim": "int" + }] + }, { + "prim": "nat" + }, + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "DUP" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "SWAP" + }, { + "prim": "PUSH", + "args": [{ + "prim": "int" + }, { + "int": "0" + }] + }, { + "prim": "SWAP" + }, { + "prim": "COMPARE" + }, { + "prim": "GE" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "ABS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }], + [{ + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": ": int_to_nat: cannot convert a negative number to a nat." + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONCAT" + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "3" + }] + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }, { + "prim": "AMOUNT" + }, { + "prim": "COMPARE" + }, { + "prim": "NEQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "This contract do not accept token" + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }, { + "prim": "CAR" + }, { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "SENDER" + }, { + "prim": "COMPARE" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }], + [{ + "prim": "SENDER" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "approve" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "10" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "10" + }] + }] + ] + }, { + "prim": "EXEC" + }, { + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SENDER" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "DROP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "3" + }] + }] + ] + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "2" + }] + }] + ] + }], + [{ + "prim": "DUP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "get_allowance" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "8" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "8" + }] + }] + ] + }, { + "prim": "EXEC" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "get_allowance" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "8" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "8" + }] + }] + ] + }, { + "prim": "EXEC" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "3" + }] + }, { + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "2" + }] + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }], + [{ + "prim": "DUP" + }, { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "get_account" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "8" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "8" + }] + }] + ] + }, { + "prim": "EXEC" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "2" + }] + }, { + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "2" + }] + }] + ] + }], + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }, { + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }], + [{ + "prim": "DUP" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }] + ] + }, { + "prim": "COMPARE" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }], + [{ + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "CAR" + }, { + "prim": "DUP" + }, { + "prim": "PUSH", + "args": [{ + "prim": "bool" + }, { + "prim": "False" + }] + }, { + "prim": "SWAP" + }, { + "prim": "SENDER" + }, { + "prim": "COMPARE" + }, { + "prim": "NEQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "is_allowed: the owner does not own any tokens." + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "SENDER" + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DROP" + }, { + "prim": "PUSH", + "args": [{ + "prim": "bool" + }, { + "prim": "False" + }] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }], + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }, { + "prim": "CAR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "COMPARE" + }, { + "prim": "GE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "DROP" + }] + ] + }, { + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "DUG", + "args": [{ + "int": "2" + }] + }, { + "prim": "DROP" + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }], + [{ + "prim": "DROP" + }, { + "prim": "PUSH", + "args": [{ + "prim": "bool" + }, { + "prim": "True" + }] + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "3" + }] + }] + ] + }, { + "prim": "IF", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "Sender not allowed to spend token from owner" + }] + }, { + "prim": "FAILWITH" + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "transfer" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "10" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "10" + }] + }] + ] + }, { + "prim": "EXEC" + }, { + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "COMPARE" + }, { + "prim": "GT" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "transfer: owner balance is too low" + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "transfer" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "10" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "10" + }] + }] + ] + }, { + "prim": "EXEC" + }, { + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "COMPARE" + }, { + "prim": "GT" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "transfer: allowance is too low" + }] + }, { + "prim": "FAILWITH" + }], + [{ + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }] + ] + }, { + "prim": "SUB" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "transfer: balance cannot be negative" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "10" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "10" + }] + }] + ] + }, { + "prim": "EXEC" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [{ + "int": "5" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "5" + }] + }, { + "prim": "SENDER" + }, { + "prim": "SWAP" + }, { + "prim": "COMPARE" + }, { + "prim": "NEQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }] + ] + }, { + "prim": "SUB" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "transfer" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "10" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "10" + }] + }] + ] + }, { + "prim": "EXEC" + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SENDER" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }], + [{ + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DIP", + "args": [{ + "int": "5" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "5" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "2" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "DUG", + "args": [{ + "int": "2" + }] + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [{ + "int": "5" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "5" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }], + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DROP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "DIP", + "args": [{ + "int": "5" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "5" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "SOME" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "3" + }] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "DUG", + "args": [{ + "int": "3" + }] + }, { + "prim": "DROP", + "args": [{ + "int": "3" + }] + }, { + "prim": "PUSH", + "args": [{ + "prim": "unit" + }, { + "prim": "Unit" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "5" + }] + }] + ] + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "2" + }] + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP", + "args": [{ + "int": "5" + }] + }] + ] + }] + ] +}] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/token.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/token.michelson new file mode 100644 index 00000000..33924f40 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/camlcase-dex-202001/token.michelson @@ -0,0 +1,437 @@ +parameter + (or (or (or (pair %approve address nat) + (pair %getAllowance (pair address address) (contract nat))) + (or (pair %getBalance address (contract nat)) + (pair %getTotalSupply unit (contract nat)))) + (pair %transfer (pair address address) nat)) ; +storage + (pair (big_map %accounts address (pair (map %allowances address nat) (nat %balance))) + (nat %total_supply)) ; +code { LAMBDA + (pair (pair string address) + (big_map address (pair (map %allowances address nat) (nat %balance)))) + (pair (map %allowances address nat) (nat %balance)) + { DUP ; + CAR ; + CDR ; + DIP { DUP ; CDR } ; + GET ; + IF_NONE + { DUP ; + CAR ; + CAR ; + PUSH string ": owner does not exist in accounts" ; + SWAP ; + CONCAT ; + FAILWITH } + { DUP ; DIP { DROP } } ; + DIP { DROP } } ; + LAMBDA + (pair (pair string address) (pair (map %allowances address nat) (nat %balance))) + nat + { DUP ; + CDR ; + PUSH nat 0 ; + DIP 2 { DUP } ; + DIG 2 ; + CAR ; + CDR ; + SENDER ; + SWAP ; + COMPARE ; + NEQ ; + IF { DIP { DUP } ; + SWAP ; + CAR ; + SENDER ; + GET ; + IF_NONE + { DIP 2 { DUP } ; + DIG 2 ; + CAR ; + CAR ; + PUSH string ": owner does not have an allowance" ; + SWAP ; + CONCAT ; + FAILWITH } + { DUP ; + DIP { DIP { DUP } ; SWAP ; DROP } ; + SWAP ; + DROP ; + DIP { DROP } ; + PUSH unit Unit } } + { DIP { DUP } ; SWAP ; CDR ; DIP { DROP } ; PUSH unit Unit } ; + DROP ; + DUP ; + DIP { DROP 3 } } ; + LAMBDA + (pair string int) + nat + { DUP ; + CDR ; + DUP ; + PUSH nat 0 ; + SWAP ; + PUSH int 0 ; + SWAP ; + COMPARE ; + GE ; + IF { DIP { DUP } ; SWAP ; ABS ; DIP { DROP } ; PUSH unit Unit } + { DIP 2 { DUP } ; + DIG 2 ; + CAR ; + PUSH string ": int_to_nat: cannot convert a negative number to a nat." ; + SWAP ; + CONCAT ; + FAILWITH } ; + DROP ; + DUP ; + DIP { DROP 3 } } ; + DIP 3 { DUP } ; + DIG 3 ; + CDR ; + PUSH mutez 0 ; + AMOUNT ; + COMPARE ; + NEQ ; + IF { PUSH string "This contract do not accept token" ; FAILWITH } + { PUSH unit Unit } ; + DROP ; + DIP 4 { DUP } ; + DIG 4 ; + CAR ; + IF_LEFT + { DUP ; + IF_LEFT + { DUP ; + IF_LEFT + { DUP ; + DUP ; + CAR ; + DIP { DUP ; CDR } ; + PAIR ; + DIP { DIP 4 { DUP } ; DIG 4 } ; + PAIR ; + DUP ; + CAR ; + CAR ; + DIP { DUP } ; + SWAP ; + CDR ; + DIP { DUP } ; + SWAP ; + SENDER ; + COMPARE ; + EQ ; + IF { PUSH unit Unit } + { SENDER ; + PUSH string "approve" ; + PAIR ; + DIP { DUP ; CAR } ; + PAIR ; + DIP { DIP 10 { DUP } ; DIG 10 } ; + EXEC ; + DIP 2 { DUP } ; + DIG 2 ; + DIP { DIP 3 { DUP } ; DIG 3 ; CAR ; CDR ; SOME ; DIP { DUP ; CAR } } ; + UPDATE ; + DIP { DUP ; CDR } ; + PAIR ; + DIP { DROP } ; + DUP ; + SOME ; + DIP { DIP { DUP } ; SWAP ; CAR } ; + SENDER ; + UPDATE ; + DIP { DIP { DUP } ; SWAP ; CDR } ; + PAIR ; + SWAP ; + DROP ; + DIP { DROP } ; + PUSH unit Unit } ; + DROP ; + DUP ; + DIP { DROP 3 } ; + NIL operation ; + PAIR ; + DIP { DROP 2 } } + { DUP ; + DUP ; + CAR ; + CAR ; + DIP { DUP ; CAR ; CDR } ; + PAIR ; + DIP { DUP ; CDR ; DIP { DIP 4 { DUP } ; DIG 4 } ; PAIR } ; + PAIR ; + DUP ; + CAR ; + CAR ; + PUSH string "get_allowance" ; + PAIR ; + DIP { DUP ; CDR ; CDR ; CAR } ; + PAIR ; + DIP { DIP 8 { DUP } ; DIG 8 } ; + EXEC ; + DIP { DUP } ; + SWAP ; + CAR ; + CDR ; + PUSH string "get_allowance" ; + PAIR ; + DIP { DUP } ; + PAIR ; + DIP { DIP 8 { DUP } ; DIG 8 } ; + EXEC ; + DUP ; + DIP { DIP 2 { DUP } ; DIG 2 ; CDR ; CAR ; PUSH mutez 0 } ; + TRANSFER_TOKENS ; + NIL operation ; + SWAP ; + CONS ; + DIP { DROP 3 ; DIP 4 { DUP } ; DIG 4 } ; + PAIR ; + DIP { DROP 2 } } ; + DIP { DROP } } + { DUP ; + IF_LEFT + { DUP ; + DUP ; + CAR ; + DIP { DUP ; CDR } ; + PAIR ; + DIP { DIP 4 { DUP } ; DIG 4 } ; + PAIR ; + DUP ; + CAR ; + CAR ; + PUSH string "get_account" ; + PAIR ; + DIP { DUP ; CDR ; CAR } ; + PAIR ; + DIP { DIP 8 { DUP } ; DIG 8 } ; + EXEC ; + DUP ; + CDR ; + DIP { DIP { DUP } ; SWAP ; CAR ; CDR ; PUSH mutez 0 } ; + TRANSFER_TOKENS ; + NIL operation ; + SWAP ; + CONS ; + DIP { DROP 2 ; DIP 4 { DUP } ; DIG 4 } ; + PAIR ; + DIP { DROP 2 } } + { DUP ; + CDR ; + DIP { DIP 3 { DUP } ; DIG 3 } ; + PAIR ; + DUP ; + CDR ; + CDR ; + DIP { DUP ; CAR ; PUSH mutez 0 } ; + TRANSFER_TOKENS ; + NIL operation ; + SWAP ; + CONS ; + DIP { DROP ; DIP 3 { DUP } ; DIG 3 } ; + PAIR ; + DIP { DROP } } ; + DIP { DROP } } ; + DIP { DROP } } + { DUP ; + DUP ; + CAR ; + CAR ; + DIP { DUP ; CAR ; CDR } ; + PAIR ; + DIP { DUP ; CDR ; DIP { DIP 2 { DUP } ; DIG 2 } ; PAIR } ; + PAIR ; + DUP ; + CAR ; + CAR ; + DIP { DUP } ; + SWAP ; + CAR ; + CDR ; + DIP 2 { DUP } ; + DIG 2 ; + CDR ; + CAR ; + DIP 3 { DUP } ; + DIG 3 ; + CDR ; + CDR ; + DIP 3 { DUP } ; + DIG 3 ; + DIP { DIP 2 { DUP } ; DIG 2 } ; + COMPARE ; + EQ ; + IF { PUSH unit Unit } + { DIP 3 { DUP } ; + DIG 3 ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + DIP { DUP } ; + PAIR ; + DUP ; + CAR ; + CAR ; + DUP ; + PUSH bool False ; + SWAP ; + SENDER ; + COMPARE ; + NEQ ; + IF { DIP { DUP } ; + SWAP ; + DIP { DIP 2 { DUP } ; DIG 2 ; CDR ; CAR } ; + GET ; + IF_NONE + { PUSH string "is_allowed: the owner does not own any tokens." ; FAILWITH } + { DUP ; + CAR ; + SENDER ; + GET ; + IF_NONE + { DIP { DUP } ; + SWAP ; + DROP ; + PUSH bool False ; + SWAP ; + DIP { DIP { DROP } } ; + PUSH unit Unit } + { DUP ; + DIP { DIP 4 { DUP } ; DIG 4 ; CAR ; CDR } ; + COMPARE ; + GE ; + DIP { DIP 2 { DUP } ; DIG 2 ; DROP } ; + DIP 3 { DROP } ; + DUG 2 ; + DROP ; + PUSH unit Unit } ; + DIP { DROP } } } + { DROP ; PUSH bool True ; PUSH unit Unit } ; + DROP ; + DUP ; + DIP { DROP 3 } ; + IF { PUSH unit Unit } + { PUSH string "Sender not allowed to spend token from owner" ; FAILWITH } ; + DROP ; + DIP 3 { DUP } ; + DIG 3 ; + PUSH string "transfer" ; + PAIR ; + DIP { DUP ; CAR } ; + PAIR ; + DIP { DIP 10 { DUP } ; DIG 10 } ; + EXEC ; + DIP 2 { DUP } ; + DIG 2 ; + DIP { DUP ; CDR } ; + COMPARE ; + GT ; + IF { PUSH string "transfer: owner balance is too low" ; FAILWITH } + { PUSH unit Unit } ; + DROP ; + DIP 4 { DUP } ; + DIG 4 ; + PUSH string "transfer" ; + PAIR ; + DIP { DUP } ; + PAIR ; + DIP { DIP 10 { DUP } ; DIG 10 } ; + EXEC ; + DIP 3 { DUP } ; + DIG 3 ; + DIP { DUP } ; + COMPARE ; + GT ; + IF { PUSH string "transfer: allowance is too low" ; FAILWITH } + { PUSH unit Unit } ; + DROP ; + DIP { DUP } ; + SWAP ; + CDR ; + DIP { DIP 3 { DUP } ; DIG 3 } ; + SUB ; + PUSH string "transfer: balance cannot be negative" ; + PAIR ; + DIP { DIP 10 { DUP } ; DIG 10 } ; + EXEC ; + DIP { DIP { DUP } ; SWAP ; CAR } ; + SWAP ; + PAIR ; + SWAP ; + DIP { DIP { DROP } } ; + DIP 5 { DUP } ; + DIG 5 ; + SENDER ; + SWAP ; + COMPARE ; + NEQ ; + IF { DUP ; + DIP { DIP 3 { DUP } ; DIG 3 } ; + SUB ; + PUSH string "transfer" ; + PAIR ; + DIP { DIP 10 { DUP } ; DIG 10 } ; + EXEC ; + SOME ; + DIP { DIP { DUP } ; SWAP ; CAR } ; + SENDER ; + UPDATE ; + DIP { DIP { DUP } ; SWAP ; CDR } ; + PAIR ; + SWAP ; + DIP { DIP { DROP } } ; + PUSH unit Unit } + { PUSH unit Unit } ; + DROP ; + DIP 5 { DUP } ; + DIG 5 ; + DIP { DIP { DUP } ; SWAP ; SOME ; DIP { DIP 2 { DUP } ; DIG 2 ; CAR } } ; + UPDATE ; + DIP { DIP 2 { DUP } ; DIG 2 ; CDR } ; + PAIR ; + DIP 3 { DROP } ; + DUG 2 ; + PUSH nat 0 ; + EMPTY_MAP address nat ; + PAIR ; + DIP 5 { DUP } ; + DIG 5 ; + DIP { DIP 3 { DUP } ; DIG 3 ; CAR } ; + GET ; + IF_NONE + { PUSH unit Unit } + { DUP ; + DIP { DIP { DUP } ; SWAP ; DROP } ; + SWAP ; + DROP ; + DIP { DROP } ; + PUSH unit Unit } ; + DROP ; + DUP ; + CDR ; + DIP { DIP 4 { DUP } ; DIG 4 } ; + ADD ; + DIP { DUP ; CAR } ; + SWAP ; + PAIR ; + DIP { DROP } ; + DIP 5 { DUP } ; + DIG 5 ; + DIP { DUP ; SOME ; DIP { DIP 3 { DUP } ; DIG 3 ; CAR } } ; + UPDATE ; + DIP { DIP 3 { DUP } ; DIG 3 ; CDR } ; + PAIR ; + DIP 4 { DROP } ; + DUG 3 ; + DROP 3 ; + PUSH unit Unit } ; + DROP ; + DUP ; + DIP { DROP 5 } ; + NIL operation ; + PAIR ; + DIP { DROP 2 } } ; + DIP { DROP 5 } } \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/_readme.txt new file mode 100644 index 00000000..8a748cea --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/_readme.txt @@ -0,0 +1 @@ +Cryptonomic contracts \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tezos-proxy-redirect.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tezos-proxy-redirect.hex new file mode 100644 index 00000000..b332ab42 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tezos-proxy-redirect.hex @@ -0,0 +1 @@ +00000190020000018b0500036e05010865046e00000006256f776e65720765046e0000000c2564657374696e6174696f6e046800000006257374616d70000000083a73746f72616765050202000001440321051f02000000160417000000104073746f726167655f736c6173685f310416000000144064657374696e6174696f6e5f736c6173685f320200000017051f020000000e0421000000084073746f72616765034c041600000006256f776e6572034803190325072c02000000990200000017051f020000000e0421000000084073746f72616765034c0321041600000006256f776e6572034c0317041700000006257374616d700200000024051f020000001b051f020000001204210000000c4064657374696e6174696f6e034c034c0442000000132564657374696e6174696f6e20257374616d70034c04420000000f4073746f7261676520256f776e6572053d036d0342020000002d074303680100000022596f7520646f206e6f74206f776e20746869732070726f787920636f6e74726163740327051f020000000403200320 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tezos-proxy-redirect.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tezos-proxy-redirect.micheline new file mode 100644 index 00000000..15fd9123 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tezos-proxy-redirect.micheline @@ -0,0 +1,239 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"address" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"address", + "annots":[ + "%owner" + ] + }, + { + "prim":"pair", + "args":[ + { + "prim":"address", + "annots":[ + "%destination" + ] + }, + { + "prim":"string", + "annots":[ + "%stamp" + ] + } + ] + } + ], + "annots":[ + ":storage" + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR", + "annots":[ + "@storage_slash_1" + ] + } + ] + ] + }, + { + "prim":"CAR", + "annots":[ + "@destination_slash_2" + ] + }, + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP", + "annots":[ + "@storage" + ] + } + ] + ] + }, + { + "prim":"SWAP" + } + ], + { + "prim":"CAR", + "annots":[ + "%owner" + ] + }, + { + "prim":"SENDER" + }, + { + "prim":"COMPARE" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP", + "annots":[ + "@storage" + ] + } + ] + ] + }, + { + "prim":"SWAP" + } + ], + { + "prim":"DUP" + }, + { + "prim":"CAR", + "annots":[ + "%owner" + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR", + "annots":[ + "%stamp" + ] + }, + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP", + "annots":[ + "@destination" + ] + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ], + { + "prim":"PAIR", + "annots":[ + "%destination", + "%stamp" + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR", + "annots":[ + "@storage", + "%owner" + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"You do not own this proxy contract" + } + ] + }, + { + "prim":"FAILWITH" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"DROP" + } + ] + ] + } + ] + ] + } +] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tezos-proxy-redirect.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tezos-proxy-redirect.michelson new file mode 100644 index 00000000..8f41e391 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tezos-proxy-redirect.michelson @@ -0,0 +1,29 @@ +# Title: Tezos Proxy Redirect +# Author: Teckhua Chiang +# Company: Cryptonomic Inc. + +parameter address; +storage + (pair :storage (address %owner) (pair (address %destination) (string %stamp))); +code { DUP ; + DIP { CDR @storage_slash_1 } ; + CAR @destination_slash_2 ; + DUUP @storage ; + CAR %owner ; + SENDER ; + COMPARE ; + EQ ; + IF { DUUP @storage ; + DUP ; + CAR %owner ; + SWAP ; + CDR ; + CDR %stamp ; + DUUUP @destination ; + PAIR %destination %stamp ; + SWAP ; + PAIR @storage %owner ; + NIL operation ; + PAIR } + { PUSH string "You do not own this proxy contract" ; FAILWITH } ; + DIP { DROP ; DROP } }; \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-1.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-1.hex new file mode 100644 index 00000000..73b81516 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-1.hex @@ -0,0 +1 @@ +0000014b020000014605000368050108650860036e036800000007257265636f7264046800000006257374616d70000000083a73746f726167650502020000010e0321051f02000000160417000000104073746f726167655f736c6173685f3104160000000d406d61726b5f736c6173685f320200000017051f020000000e0421000000084073746f72616765034c041700000006257374616d700200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c041600000007257265636f7264020000001d051f0200000014051f020000000b042100000005406d61726b034c034c0448000000074073656e646572051f020000000203460200000020051f0200000019051f0200000012051f020000000b051f02000000040320032003500442000000174073746f7261676520257265636f726420257374616d70053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-1.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-1.micheline new file mode 100644 index 00000000..06d101fb --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-1.micheline @@ -0,0 +1,62 @@ +[ { "prim": "parameter", "args": [ { "prim": "string" } ] }, + { "prim": "storage", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "map", + "args": + [ { "prim": "address" }, + { "prim": "string" } ], + "annots": [ "%record" ] }, + { "prim": "string", "annots": [ "%stamp" ] } ], + "annots": [ ":storage" ] } ] }, + { "prim": "code", + "args": + [ [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CDR", + "annots": [ "@storage_slash_1" ] } ] ] }, + { "prim": "CAR", "annots": [ "@mark_slash_2" ] }, + [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP", + "annots": [ "@storage" ] } ] ] }, + { "prim": "SWAP" } ], + { "prim": "CDR", "annots": [ "%stamp" ] }, + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP", + "annots": [ "@storage" ] } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + { "prim": "CAR", "annots": [ "%record" ] }, + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP", + "annots": [ "@mark" ] } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + { "prim": "SENDER", "annots": [ "@sender" ] }, + { "prim": "DIP", + "args": [ [ { "prim": "SOME" } ] ] }, + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DROP" }, + { "prim": "DROP" } ] ] } ] ] } ] ] } ] ] } ], + { "prim": "UPDATE" }, + { "prim": "PAIR", + "annots": [ "@storage", "%record", "%stamp" ] }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-1.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-1.michelson new file mode 100644 index 00000000..09e4f78f --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-1.michelson @@ -0,0 +1,21 @@ +# Title: Tezos Tutorial Contract 1 +# Author: Teckhua Chiang +# Company: Cryptonomic Inc. + +parameter string; +storage (pair :storage (map %record address string) (string %stamp)); +code { DUP ; + DIP { CDR @storage_slash_1 } ; + CAR @mark_slash_2 ; + DUUP @storage ; + CDR %stamp ; + DUUUP @storage ; + CAR %record ; + DUUUP @mark ; + SENDER @sender ; + DIP { SOME } ; + DIIIIP { DROP ; DROP } ; + UPDATE ; + PAIR @storage %record %stamp ; + NIL operation ; + PAIR }; \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-2.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-2.hex new file mode 100644 index 00000000..a665a055 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-2.hex @@ -0,0 +1 @@ +00000111020000010c05000765035b035b05010865045b000000042573756d046800000006257374616d70000000083a73746f72616765050202000000d70321051f02000000160417000000104073746f726167655f736c6173685f31041600000019405f616464656e64315f616464656e64325f736c6173685f32034c041700000006257374616d70020000000b051f02000000020321034c04170000000840616464656e64320200000014051f020000000b051f02000000020321034c034c0200000017051f0200000010051f0200000009051f0200000002032004160000000840616464656e64310412000000044073756d0442000000144073746f72616765202573756d20257374616d70053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-2.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-2.micheline new file mode 100644 index 00000000..b555ca01 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-2.micheline @@ -0,0 +1,46 @@ +[ { "prim": "parameter", + "args": + [ { "prim": "pair", + "args": [ { "prim": "int" }, { "prim": "int" } ] } ] }, + { "prim": "storage", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "int", "annots": [ "%sum" ] }, + { "prim": "string", "annots": [ "%stamp" ] } ], + "annots": [ ":storage" ] } ] }, + { "prim": "code", + "args": + [ [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CDR", + "annots": [ "@storage_slash_1" ] } ] ] }, + { "prim": "CAR", + "annots": [ "@_addend1_addend2_slash_2" ] }, + { "prim": "SWAP" }, + { "prim": "CDR", "annots": [ "%stamp" ] }, + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + { "prim": "CDR", "annots": [ "@addend2" ] }, + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DROP" } ] ] } ] ] } ] ] } ], + { "prim": "CAR", "annots": [ "@addend1" ] }, + { "prim": "ADD", "annots": [ "@sum" ] }, + { "prim": "PAIR", + "annots": [ "@storage", "%sum", "%stamp" ] }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-2.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-2.michelson new file mode 100644 index 00000000..836e514f --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/cryptonomic/tutorial-contract-2.michelson @@ -0,0 +1,20 @@ +# Title: Tezos Tutorial Contract 2 +# Author: Teckhua Chiang +# Company: Cryptonomic Inc. + +parameter (pair int int); +storage (pair :storage (int %sum) (string %stamp)); +code { DUP ; + DIP { CDR @storage_slash_1 } ; + CAR @_addend1_addend2_slash_2 ; + SWAP ; + CDR %stamp ; + DUUP ; + CDR @addend2 ; + DUUUP ; + DIIIP { DROP } ; + CAR @addend1 ; + ADD @sum ; + PAIR @storage %sum %stamp ; + NIL operation ; + PAIR }; \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/misc/ManagedOracle.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/misc/ManagedOracle.micheline new file mode 100644 index 00000000..8bddfcdc --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/misc/ManagedOracle.micheline @@ -0,0 +1,549 @@ +[{ + "prim": "parameter", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "map", + "args": [{ + "prim": "string", + "annots": [":assetcode"] + }, { + "prim": "pair", + "args": [{ + "prim": "signature" + }, { + "prim": "pair", + "args": [{ + "prim": "timestamp", + "annots": ["%start"] + }, { + "prim": "pair", + "args": [{ + "prim": "timestamp", + "annots": ["%end"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%open"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%high"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%low"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%close"] + }, { + "prim": "nat", + "annots": ["%volume"] + }] + }] + }] + }] + }] + }] + }] + }], + "annots": ["%update"] + }, { + "prim": "signature", + "annots": ["%revoke"] + }] + }, { + "prim": "contract", + "args": [{ + "prim": "big_map", + "args": [{ + "prim": "string", + "annots": [":assetcode"] + }, { + "prim": "pair", + "args": [{ + "prim": "timestamp", + "annots": ["%start"] + }, { + "prim": "pair", + "args": [{ + "prim": "timestamp", + "annots": ["%end"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%open"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%high"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%low"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%close"] + }, { + "prim": "nat", + "annots": ["%volume"] + }] + }] + }] + }] + }] + }] + }] + }], + "annots": ["%request"] + }] + }] +}, { + "prim": "storage", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "option", + "args": [{ + "prim": "key" + }] + }, { + "prim": "big_map", + "args": [{ + "prim": "string", + "annots": [":assetcode"] + }, { + "prim": "pair", + "args": [{ + "prim": "timestamp", + "annots": ["%start"] + }, { + "prim": "pair", + "args": [{ + "prim": "timestamp", + "annots": ["%end"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%open"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%high"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%low"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%close"] + }, { + "prim": "nat", + "annots": ["%volume"] + }] + }] + }] + }] + }] + }] + }], + "annots": ["%values"] + }] + }] +}, { + "prim": "code", + "args": [ + [ + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ] + ] + ] + }, { + "prim": "ITER", + "args": [ + [{ + "prim": "DUP" + }, + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "SWAP" + }, + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "PACK" + }] + ] + }, + [{ + "prim": "DIP", + "args": [{ + "int": "3" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "4" + }] + }], + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ], + [] + ] + }], { + "prim": "CHECK_SIGNATURE" + }, + [{ + "prim": "IF", + "args": [ + [], + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ] + ] + }], { + "prim": "DUP" + }, + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], + [{ + "prim": "DIP", + "args": [{ + "int": "4" + }, + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "5" + }] + }], { + "prim": "SWAP" + }, { + "prim": "GET" + }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ], + [] + ] + }], + [{ + "prim": "CDR" + }, { + "prim": "CAR", + "annots": ["@old_time"] + }], { + "prim": "SWAP" + }, + [{ + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR", + "annots": ["@new_time"] + }], + [ + [{ + "prim": "COMPARE" + }, { + "prim": "GT" + }], { + "prim": "IF", + "args": [ + [], + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ] + ] + } + ], + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "SOME" + }] + ] + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "UPDATE" + }] + ] + } + ] + ] + }], + [{ + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ] + ] + ] + }, { + "prim": "PUSH", + "args": [{ + "prim": "option", + "args": [{ + "prim": "key" + }] + }, { + "prim": "None" + }] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "PACK" + }, { + "prim": "SWAP" + }, { + "prim": "DIG", + "args": [{ + "int": "2" + }] + }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ], + [] + ] + }], { + "prim": "CHECK_SIGNATURE" + }, + [{ + "prim": "IF", + "args": [ + [], + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ] + ] + }] + ] + ] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }], + [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }], { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "mutez" + }, { + "int": "0" + }] + }, { + "prim": "SWAP" + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + } + ] + ] + }, { + "prim": "PAIR" + } + ] + ] +}] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/misc/ManagedOracle.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/misc/ManagedOracle.michelson new file mode 100644 index 00000000..50b04ad7 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/misc/ManagedOracle.michelson @@ -0,0 +1,51 @@ +parameter + ( + or + (or + (map %update (string :assetcode) (pair signature (pair (timestamp %start) (pair (timestamp %end) (pair (nat %open) (pair (nat %high) (pair (nat %low) (pair (nat %close) (nat %volume))))))))) + (signature %revoke) + ) + (contract %request (big_map (string :assetcode) (pair (timestamp %start) (pair (timestamp %end) (pair (nat %open) (pair (nat %high) (pair (nat %low) (pair (nat %close) (nat %volume))))))))) + ); + storage + ( + pair (option key) (big_map %values (string :assetcode) (pair (timestamp %start) (pair (timestamp %end) (pair (nat %open) (pair (nat %high) (pair (nat %low) (pair (nat %close) (nat %volume)))))))) + ); + code + { + UNPAIR ; + IF_LEFT + { + IF_LEFT + { + DIP { UNPAIR } ; + ITER + { + DUP ; + UNPAIR ; SWAP ; UNPAIR ; DIP { SWAP ; PAIR ; PACK } ; + DUP 4; ASSERT_SOME ; + CHECK_SIGNATURE ; ASSERT ; + DUP ; UNPAIR; DUP 5; SWAP ; GET ; ASSERT_SOME ; + CDAR @old_time ; SWAP ; CDDAR @new_time ; + ASSERT_CMPGT ; + UNPAIR ; DIP { CDR ; SOME } ; + DIG 2 ; DIP { UPDATE } + } + } + { + DIP { UNPAIR } ; + PUSH (option key) None; DUP ; + DIP + { + PACK ; SWAP ; DIG 2 ; ASSERT_SOME ; CHECK_SIGNATURE ; ASSERT ; + } + } ; + PAIR ; NIL operation + } + { + DUP 2 ; CDR ; PUSH mutez 0 ; SWAP ; TRANSFER_TOKENS ; + NIL operation; SWAP ; CONS + } ; + PAIR + } + \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/_readme.txt new file mode 100644 index 00000000..fcc7378c --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/_readme.txt @@ -0,0 +1,3 @@ +Sample multi-sig contract retrieved in April 2020. + +https://github.com/murbard/smart-contracts/blob/master/multisig/michelson/multisig.tzip diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/multisig.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/multisig.hex new file mode 100644 index 00000000..de43019c --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/multisig.hex @@ -0,0 +1 @@ +00000361020000035c05000765086504620000000825636f756e74657208640865046a0000000725616d6f756e74065a036c000000052564657374000000093a7472616e7366657207640663035d000000092564656c6567617465086504620000000a257468726573686f6c64065f035c00000005256b6579730000000c256368616e67655f6b657973000000073a616374696f6e000000083a7061796c6f6164065f056303670000000525736967730501076504620000000f2573746f7265645f636f756e746572076504620000000a257468726573686f6c64065f035c00000005256b657973050202000002760200000012020000000d03210316051f02000000020317034c0321051f0200000002034c051f020000005a0200000012020000000d03210316051f02000000020317032103490354037503420342030c051f020000002c020000001e0200000019032104160000000840636f756e746572051f02000000020317051f0200000002034c034c02000000250200000020032104160000000f4073746f7265645f636f756e746572051f02000000020317051f0200000002034c020000001e020000000403190325072c020000000002000000090200000004034f0327051f0200000002034c02000000290200000024032104160000000a407468726573686f6c64051f020000000b041700000005406b657973051f02000000ac084303620000000000064076616c6964034c05520200000093051f0200000002034c034c072d0200000071020000006c072f0200000004034c0320020000005c034c051f0200000053034c020000001e051f0200000017051f0200000010020000000b051f02000000020321034c03180200000015072c020000000002000000090200000004034f03270743036200010412000000064076616c696402000000090200000004034f0327034c020000001e020000000403190332072c020000000002000000090200000004034f032703200320051f02000000310200000012020000000d03210316051f0200000002031707430362000104120000000c406e65775f636f756e7465720342053d036d034c072e020000001d0200000012020000000d03210316051f02000000020317034f034d031b0200000021072e0200000004034e031b0200000011051f0200000004034c0316034c0342034c0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/multisig.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/multisig.micheline new file mode 100644 index 00000000..d75e4c2c --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/multisig.micheline @@ -0,0 +1,470 @@ +[{ + "prim": "parameter", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%counter"] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "mutez", + "annots": ["%amount"] + }, { + "prim": "contract", + "args": [{ + "prim": "unit" + }], + "annots": ["%dest"] + }], + "annots": [":transfer"] + }, { + "prim": "or", + "args": [{ + "prim": "option", + "args": [{ + "prim": "key_hash" + }], + "annots": ["%delegate"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%threshold"] + }, { + "prim": "list", + "args": [{ + "prim": "key" + }], + "annots": ["%keys"] + }], + "annots": ["%change_keys"] + }] + }], + "annots": [":action"] + }], + "annots": [":payload"] + }, { + "prim": "list", + "args": [{ + "prim": "option", + "args": [{ + "prim": "signature" + }] + }], + "annots": ["%sigs"] + }] + }] +}, { + "prim": "storage", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%stored_counter"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": ["%threshold"] + }, { + "prim": "list", + "args": [{ + "prim": "key" + }], + "annots": ["%keys"] + }] + }] + }] +}, { + "prim": "code", + "args": [ + [ + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "DUP" + }, { + "prim": "SELF" + }, { + "prim": "ADDRESS" + }, { + "prim": "CHAIN_ID" + }, { + "prim": "PAIR" + }, { + "prim": "PAIR" + }, { + "prim": "PACK" + }, { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR", + "annots": ["@counter"] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + } + ] + ] + }, { + "prim": "SWAP" + } + ] + ] + }, + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR", + "annots": ["@stored_counter"] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, + [ + [{ + "prim": "COMPARE" + }, { + "prim": "EQ" + }], { + "prim": "IF", + "args": [ + [], + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ] + ] + } + ], { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR", + "annots": ["@threshold"] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR", + "annots": ["@keys"] + }] + ] + }] + ], { + "prim": "DIP", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }], + "annots": ["@valid"] + }, { + "prim": "SWAP" + }, { + "prim": "ITER", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "IF_CONS", + "args": [ + [ + [{ + "prim": "IF_NONE", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "DROP" + }], + [{ + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + ] + }] + ] + }], { + "prim": "CHECK_SIGNATURE" + }, + [{ + "prim": "IF", + "args": [ + [], + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ] + ] + }], { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "1" + }] + }, { + "prim": "ADD", + "annots": ["@valid"] + } + ] + ] + }] + ] + }] + ], + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ] + ] + }, { + "prim": "SWAP" + }] + ] + }] + ] + }, + [ + [{ + "prim": "COMPARE" + }, { + "prim": "LE" + }], { + "prim": "IF", + "args": [ + [], + [ + [{ + "prim": "UNIT" + }, { + "prim": "FAILWITH" + }] + ] + ] + } + ], { + "prim": "DROP" + }, { + "prim": "DROP" + }, { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "1" + }] + }, { + "prim": "ADD", + "annots": ["@new_counter"] + }, { + "prim": "PAIR" + } + ] + ] + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "IF_LEFT", + "args": [ + [ + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "UNIT" + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "CONS" + } + ], + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "SET_DELEGATE" + }, { + "prim": "CONS" + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "SWAP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }] + ] + }] + ] + }, { + "prim": "PAIR" + } + ] + ] +}] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/multisig.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/multisig.michelson new file mode 100644 index 00000000..a597dbf5 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/murbard-multisig/multisig.michelson @@ -0,0 +1,84 @@ +parameter (pair + (pair :payload + (nat %counter) # counter, used to prevent replay attacks + (or :action # payload to sign, represents the requested action + (pair :transfer # transfer tokens + (mutez %amount) # amount to transfer + (contract %dest unit)) # destination to transfer to + (or + (option %delegate key_hash) # change the delegate to this address + (pair %change_keys # change the keys controlling the multisig + (nat %threshold) # new threshold + (list %keys key))))) # new list of keys + (list %sigs (option signature))); # signatures + +storage (pair (nat %stored_counter) (pair (nat %threshold) (list %keys key))) ; + +code + { + UNPAIR ; SWAP ; DUP ; DIP { SWAP } ; + DIP + { + UNPAIR ; + # pair the payload with the current contract address, to ensure signatures + # can't be replayed accross different contracts if a key is reused. + DUP ; SELF ; ADDRESS ; CHAIN_ID ; PAIR ; PAIR ; + PACK ; # form the binary payload that we expect to be signed + DIP { UNPAIR @counter ; DIP { SWAP } } ; SWAP + } ; + + # Check that the counters match + UNPAIR @stored_counter; DIP { SWAP }; + ASSERT_CMPEQ ; + + # Compute the number of valid signatures + DIP { SWAP } ; UNPAIR @threshold @keys; + DIP + { + # Running count of valid signatures + PUSH @valid nat 0; SWAP ; + ITER + { + DIP { SWAP } ; SWAP ; + IF_CONS + { + IF_SOME + { SWAP ; + DIP + { + SWAP ; DIIP { DUUP } ; + # Checks signatures, fails if invalid + CHECK_SIGNATURE ; ASSERT ; + PUSH nat 1 ; ADD @valid } } + { SWAP ; DROP } + } + { + # There were fewer signatures in the list + # than keys. Not all signatures must be present, but + # they should be marked as absent using the option type. + FAIL + } ; + SWAP + } + } ; + # Assert that the threshold is less than or equal to the + # number of valid signatures. + ASSERT_CMPLE ; + DROP ; DROP ; + + # Increment counter and place in storage + DIP { UNPAIR ; PUSH nat 1 ; ADD @new_counter ; PAIR} ; + + # We have now handled the signature verification part, + # produce the operation requested by the signers. + NIL operation ; SWAP ; + IF_LEFT + { # Transfer tokens + UNPAIR ; UNIT ; TRANSFER_TOKENS ; CONS } + { IF_LEFT { + # Change delegate + SET_DELEGATE ; CONS } + { + # Change set of signatures + DIP { SWAP ; CAR } ; SWAP ; PAIR ; SWAP }} ; + PAIR } \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/_readme.txt new file mode 100644 index 00000000..91bf7d99 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/_readme.txt @@ -0,0 +1,3 @@ +Protocol 005 scriptless KT1 migration contract, retrieved on 2019, Sep 13. + +https://blog.nomadic-labs.com/babylon-update-instructions-for-delegation-wallet-developers.html diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/manager.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/manager.hex new file mode 100644 index 00000000..d96212e0 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/manager.hex @@ -0,0 +1 @@ +000000c602000000c105000764085e036c055f036d0000000325646f046c000000082564656661756c740501035d050202000000950200000012020000000d03210316051f02000000020317072e020000006a0743036a00000313020000001e020000000403190325072c020000000002000000090200000004034f0327020000000b051f02000000020321034c031e03540348020000001e020000000403190325072c020000000002000000090200000004034f0327034f0326034202000000080320053d036d0342 diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/manager.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/manager.micheline new file mode 100644 index 00000000..56f3ab17 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/manager.micheline @@ -0,0 +1,50 @@ +[ { "prim": "parameter", + "args": + [ { "prim": "or", + "args": + [ { "prim": "lambda", + "args": + [ { "prim": "unit" }, + { "prim": "list", + "args": [ { "prim": "operation" } ] } ], + "annots": [ "%do" ] }, + { "prim": "unit", "annots": [ "%default" ] } ] } ] }, + { "prim": "storage", "args": [ { "prim": "key_hash" } ] }, + { "prim": "code", + "args": + [ [ [ [ { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "CDR" } ] ] } ] ], + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "mutez" }, + { "int": "0" } ] }, + { "prim": "AMOUNT" }, + [ [ { "prim": "COMPARE" }, + { "prim": "EQ" } ], + { "prim": "IF", + "args": + [ [], + [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + { "prim": "IMPLICIT_ACCOUNT" }, + { "prim": "ADDRESS" }, + { "prim": "SENDER" }, + [ [ { "prim": "COMPARE" }, + { "prim": "EQ" } ], + { "prim": "IF", + "args": + [ [], + [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ] ] } ], + { "prim": "UNIT" }, { "prim": "EXEC" }, + { "prim": "PAIR" } ], + [ { "prim": "DROP" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] ] } ] diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/manager.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/manager.michelson new file mode 100644 index 00000000..7a43dd6e --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-manager/manager.michelson @@ -0,0 +1,31 @@ +parameter + (or + (lambda %do unit (list operation)) + (unit %default)); +storage key_hash; +code + { UNPAIR ; + IF_LEFT + { # 'do' entrypoint + # Assert no token was sent: + # to send tokens, the default entry point should be used + PUSH mutez 0 ; + AMOUNT ; + ASSERT_CMPEQ ; + # Assert that the sender is the manager + DUUP ; + IMPLICIT_ACCOUNT ; + ADDRESS ; + SENDER ; + ASSERT_CMPEQ ; + # Execute the lambda argument + UNIT ; + EXEC ; + PAIR ; + } + { # 'default' entrypoint + DROP ; + NIL operation ; + PAIR ; + } + }; \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/_readme.txt new file mode 100644 index 00000000..2dec2e21 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/_readme.txt @@ -0,0 +1,3 @@ +Protocol 005 sample contracts with new opcodes, retrieved on 2019, Sep 14. + +https://gitlab.com/nomadic-labs/tezos/tree/zeronet/src/bin_client/test/contracts/opcodes diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/chain_id.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/chain_id.hex new file mode 100644 index 00000000..8012c4a4 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/chain_id.hex @@ -0,0 +1 @@ +00000020020000001b0500036c0501036c0502020000000c037503200316053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/chain_id.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/chain_id.micheline new file mode 100644 index 00000000..7224544b --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/chain_id.micheline @@ -0,0 +1,8 @@ +[ { "prim": "parameter", "args": [ { "prim": "unit" } ] }, + { "prim": "storage", "args": [ { "prim": "unit" } ] }, + { "prim": "code", "args": [ [ + { "prim": "CHAIN_ID" }, + { "prim": "DROP" }, + { "prim": "CAR" }, + { "prim": "NIL", "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/chain_id.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/chain_id.michelson new file mode 100644 index 00000000..783d13fa --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/chain_id.michelson @@ -0,0 +1,3 @@ +parameter unit; +storage unit; +code { CHAIN_ID; DROP; CAR; NIL operation; PAIR } diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dign.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dign.michelson new file mode 100644 index 00000000..ec8a339d --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dign.michelson @@ -0,0 +1,3 @@ +parameter (pair (pair (pair (pair nat nat) nat) nat) nat); +storage nat; +code {CAR; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; DIG 4 ; DIP { DROP ; DROP ; DROP ; DROP } ; NIL operation; PAIR}; diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dipn.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dipn.micheline new file mode 100644 index 00000000..4f8a4bee --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dipn.micheline @@ -0,0 +1,126 @@ +[{ + "prim": "parameter", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "nat" + }] + }, { + "prim": "nat" + }] + }, { + "prim": "nat" + }] + }, { + "prim": "nat" + }] + }] +}, { + "prim": "storage", + "args": [{ + "prim": "nat" + }] +}, { + "prim": "code", + "args": [ + [{ + "prim": "CAR" + }, + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], { + "prim": "DIP", + "args": [{ + "int": "5" + }, + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "6" + }] + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "DROP" + }, { + "prim": "DROP" + }, { + "prim": "DROP" + }, { + "prim": "DROP" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + } + ] + ] +}] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dipn.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dipn.michelson new file mode 100644 index 00000000..bc707945 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dipn.michelson @@ -0,0 +1,3 @@ +parameter (pair (pair (pair (pair nat nat) nat) nat) nat); +storage nat; +code { CAR; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; DIP 5 { PUSH nat 6 } ; DROP ; DROP ; DROP ; DROP ; DROP ; NIL operation; PAIR }; diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dropn.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dropn.micheline new file mode 100644 index 00000000..50f00066 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dropn.micheline @@ -0,0 +1,61 @@ +[{ "prim": "parameter", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "nat" + }] + }, { + "prim": "nat" + }] + }, { + "prim": "nat" + }] + }, { + "prim": "nat" + }] + }] +}, +{ "prim": "storage", "args": [{ "prim": "nat" }] }, +{ + "prim": "code", + "args": [ + [{ "prim": "CAR" }, + [ [{ "prim": "DUP" }, { "prim": "CAR" }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], + [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }] + ], + [ [{ "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [{ "prim": "CDR" }] ] }] ], + [ [{ "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [{ "prim": "CDR" }] ] }] ], + { "prim": "DROP", "args": [{ "int": "4" }] }, + { "prim": "NIL", "args": [{ "prim": "operation" }] }, + { "prim": "PAIR" } + ] + ] +}] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dropn.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dropn.michelson new file mode 100644 index 00000000..d45aefc9 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dropn.michelson @@ -0,0 +1,3 @@ +parameter (pair (pair (pair (pair nat nat) nat) nat) nat); +storage nat; +code {CAR; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; DROP 4 ; NIL operation; PAIR }; diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dugn.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dugn.michelson new file mode 100644 index 00000000..521c052f --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/dugn.michelson @@ -0,0 +1,3 @@ +parameter (pair (pair (pair (pair nat nat) nat) nat) nat); +storage nat; +code {CAR; UNPAIR ; UNPAIR ; UNPAIR ; UNPAIR ; DUG 4 ; DROP ; DROP ; DROP ; DROP ; NIL operation; PAIR}; diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/pexec_2.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/pexec_2.michelson new file mode 100644 index 00000000..d64f7442 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/pexec_2.michelson @@ -0,0 +1,11 @@ +parameter int; +storage (list int); +code { + UNPAIR @p @s ; # p :: s + LAMBDA (pair int (pair int int)) int + { UNPAIR ; DIP { UNPAIR } ; ADD ; MUL }; # l :: p :: s + SWAP ; APPLY ; # l :: s + PUSH int 3 ; APPLY ; # l :: s + SWAP ; MAP { DIP { DUP } ; EXEC } ; # s :: l + DIP { DROP } ; # s + NIL operation; PAIR }; diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/self.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/self.michelson new file mode 100644 index 00000000..d96457fd --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/p005-opcodes/self.michelson @@ -0,0 +1,3 @@ +parameter unit ; +storage address ; +code { DROP ; SELF ; ADDRESS ; NIL operation ; PAIR } diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/_readme.txt new file mode 100644 index 00000000..d30fbe7e --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/_readme.txt @@ -0,0 +1 @@ +Sample contracts from the smartpy.io online editor, retrieved in July 2019. \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/mini-kitties.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/mini-kitties.hex new file mode 100644 index 00000000..6252cafd --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/mini-kitties.hex @@ -0,0 +1 @@ +00001db30200001dae05000764076407640764086507650765046a0000000c25626f72726f775072696365045b00000008256b697474794964045b0000000825706172656e7431045b0000000825706172656e7432000000062562726565640865076507650765076507650765046b000000082561756374696f6e046a0000000c25626f72726f775072696365045b0000000b2567656e65726174696f6e046b00000009256861746368696e670459000000062569734e6577045b00000008256b697474794964046e00000006256f776e6572046a0000000625707269636500000006256275696c640865045b00000008256b697474794964046a00000006257072696365000000042562757908650765046a0000000c25626f72726f775072696365045b00000008256b697474794964046a0000000625707269636500000005256c656e6408650765046a0000000c25626f72726f775072696365045b00000008256b697474794964046a00000006257072696365000000052573656c6c05010765046e000000082563726561746f720860035b0765076507650765076507650765046b000000082561756374696f6e046a0000000c25626f72726f775072696365045b0000000b2567656e65726174696f6e046b00000009256861746368696e670459000000062569734e6577045b00000008256b697474794964046e00000006256f776e6572046a0000000625707269636500000008256b69747469657305020200001b8f03210317034c0316072e02000018b3072e02000014bd072e0200000ccf072e0200000bab03420321020000000403160317020000000b051f02000000020321034c02000000060316031603170319033c072c0200000000020000003b07430368010000003057726f6e67436f6e646974696f6e3a20706172616d732e706172656e743120213d20706172616d732e706172656e743203270340020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c020000000603160316031703290200000015072f02000000090200000004034f03270200000000020000000e031603160316031603160316031603190337072c0200000000020000005507430368010000004a57726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e706172656e74315d2e61756374696f6e203c2073702e63757272656e7454696d6503270340020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c020000000603160316031703290200000015072f02000000090200000004034f03270200000000020000000a0316031603160316031703190337072c0200000000020000005607430368010000004b57726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e706172656e74315d2e6861746368696e67203c2073702e63757272656e7454696d6503270348020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c02000000040316031703290200000015072f02000000090200000004034f032702000000000200000004031603170319033c072c02000001fb0321020000000403170317020000000b051f02000000020321034c02000000040316031703290200000015072f02000000090200000004034f03270200000000020000000e03160316031603160316031603170743036a000003190337072c0200000000020000005107430368010000004657726f6e67436f6e646974696f6e3a2074657a283029203c2073656c662e646174612e6b6974746965735b706172616d732e706172656e74325d2e626f72726f7750726963650327032102000000080316031603160316020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c02000000040316031703290200000015072f02000000090200000004034f03270200000000020000000e031603160316031603160316031703190337072c0200000000020000005d07430368010000005257726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e706172656e74325d2e626f72726f775072696365203c20706172616d732e626f72726f7750726963650327032102000000080316031603160316031303190325072c0200000000020000003a07430368010000002f57726f6e67436f6e646974696f6e3a2073702e616d6f756e74203d3d20706172616d732e626f72726f775072696365032702000000000340020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c02000000040316031703290200000015072f02000000090200000004034f03270200000000020000000e031603160316031603160316031603190337072c0200000000020000005507430368010000004a57726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e706172656e74325d2e61756374696f6e203c2073702e63757272656e7454696d6503270340020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c02000000040316031703290200000015072f02000000090200000004034f03270200000000020000000a0316031603160316031703190337072c0200000000020000005607430368010000004b57726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e706172656e74325d2e6861746368696e67203c2073702e63757272656e7454696d65032703210317032103170200000014051f020000000b051f02000000020321034c034c020000000603160316031703420321051f02000000170200000012020000000d03210316051f020000000203170200000012020000000d03210316051f0200000002031703290200000015072f02000000090200000004034f0327020000000003400743035b00a4010312034c02000000c70321051f02000000a8041600000003402525020000009a0321051f020000007b041600000003402525020000006d0321051f020000004e04160000000340252502000000400321051f0200000021041600000003402525020000001304160000000340252504420000000425402025041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c04420000000525402025400346034c0350034c03160342034c0316034203210317032103170200000014051f020000000b051f02000000020321034c034c02000000040316031703420321051f02000000170200000012020000000d03210316051f020000000203170200000012020000000d03210316051f0200000002031703290200000015072f02000000090200000004034f0327020000000003400743035b00a4010312034c02000000c70321051f02000000a8041600000003402525020000009a0321051f020000007b041600000003402525020000006d0321051f020000004e04160000000340252502000000400321051f0200000021041600000003402525020000001304160000000340252504420000000425402025041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c04420000000525402025400346034c0350034c03160342034c0316034203210317032103170200000014051f020000000b051f02000000020321034c034c020000000803160316031603170743036a00000348020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c0200000008031603160316031707430359030303400743035b00a40103120200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c034c03170200000053051f020000004a051f0200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c034c034c034c020000000603160316031703290200000015072f02000000090200000004034f03270200000000020000000c031603160316031603160317020000004a051f0200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c034c034c0317020000005c051f0200000053051f020000004a051f0200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c034c034c034c034c02000000040316031703290200000015072f02000000090200000004034f03270200000000020000000c031603160316031603160317034203210200000012020000000d03210316051f0200000002031703190332072c02000000020317020000000203160743035b000103120743036a00000743036b01000000013003420342034203420342034203420346034c0350034c03160342034c0320053d036d0342020000011803420348020000000b051f02000000020321034c02000000040317031603190325072c0200000000020000003907430368010000002e57726f6e67436f6e646974696f6e3a2073656c662e646174612e63726561746f72203d3d2073702e73656e64657203270321020000000a03160316031603160317072c0200000000020000002d07430368010000002257726f6e67436f6e646974696f6e3a20706172616d732e6b697474792e69734e6577032703210317032103170200000014051f020000000b051f02000000020321034c034c02000000080316031603160317020000001d051f0200000014051f020000000b051f02000000020321034c034c034c03160346034c0350034c03160342034c0320053d036d034202000007e203420321020000000403170317020000000b051f02000000020321034c02000000040316031603290200000015072f02000000090200000004034f0327020000000003170743036a000003190337072c0200000000020000004b07430368010000004057726f6e67436f6e646974696f6e3a2074657a283029203c2073656c662e646174612e6b6974746965735b706172616d732e6b6974747949645d2e707269636503270321020000000403160317020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c02000000040316031603290200000015072f02000000090200000004034f03270200000000031703190332072c0200000000020000005207430368010000004757726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e6b6974747949645d2e7072696365203c3d20706172616d732e707269636503270321020000000403160317031303190325072c0200000000020000003407430368010000002957726f6e67436f6e646974696f6e3a2073702e616d6f756e74203d3d20706172616d732e7072696365032703210317032103170200000014051f020000000b051f02000000020321034c034c02000000040316031603420321051f02000000170200000012020000000d03210316051f020000000203170200000012020000000d03210316051f0200000002031703290200000015072f02000000090200000004034f032702000000000348034c02000000400321051f0200000021041600000003402525020000001304160000000340252504420000000425402025041700000003402525034c04420000000525402025400346034c0350034c03160342034c031603420321020000000403170317020000000b051f02000000020321034c02000000040316031603290200000015072f02000000090200000004034f0327020000000002000000080316031603160317072c02000002fd03210317032103170200000014051f020000000b051f02000000020321034c034c02000000040316031603420321051f02000000170200000012020000000d03210316051f020000000203170200000012020000000d03210316051f0200000002031703290200000015072f02000000090200000004034f03270200000000074303590303034c020000009a0321051f020000007b041600000003402525020000006d0321051f020000004e04160000000340252502000000400321051f0200000021041600000003402525020000001304160000000340252504420000000425402025041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c04420000000525402025400346034c0350034c03160342034c0316034203210317032103170200000014051f020000000b051f02000000020321034c034c02000000040316031603420321051f02000000170200000012020000000d03210316051f020000000203170200000012020000000d03210316051f0200000002031703290200000015072f02000000090200000004034f0327020000000003400743035b000a0312034c02000001230321051f020000010404160000000340252502000000f60321051f02000000d704160000000340252502000000c90321051f02000000aa041600000003402525020000009c0321051f020000007d041600000003402525020000006f0321051f020000005004160000000340252502000000420321051f02000000230416000000034025250200000015041700000003402525034c04420000000425202540041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c04420000000525402025400346034c0350034c03160342034c0316034202000000000321020000000403170317020000000b051f02000000020321034c02000000040316031603290200000015072f02000000090200000004034f03270200000000020000000e0316031603160316031603160316034003190332072c0200000000020000005607430368010000004b57726f6e67436f6e646974696f6e3a2073702e63757272656e7454696d65203c3d2073656c662e646174612e6b6974746965735b706172616d732e6b6974747949645d2e61756374696f6e03270321020000000403170317020000000b051f02000000020321034c02000000040316031603290200000015072f02000000090200000004034f03270200000000020000000e0316031603160316031603160316034003190332072c02000000ce03210317032103170200000014051f020000000b051f02000000020321034c034c02000000040316031603420321051f02000000170200000012020000000d03210316051f020000000203170200000012020000000d03210316051f0200000002031703290200000015072f02000000090200000004034f032702000000000200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c031603170743036a00010312034c031603420346034c0350034c03160342034c0316034202000000000317053d036d034202000003ea034203210200000004031603170743036a000003190332072c0200000000020000003107430368010000002657726f6e67436f6e646974696f6e3a2074657a283029203c3d20706172616d732e707269636503270340020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c020000000603160316031703290200000015072f02000000090200000004034f03270200000000020000000e031603160316031603160316031603190337072c0200000000020000005507430368010000004a57726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e6b6974747949645d2e61756374696f6e203c2073702e63757272656e7454696d6503270340020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c020000000603160316031703290200000015072f02000000090200000004034f03270200000000020000000a0316031603160316031703190337072c0200000000020000005607430368010000004b57726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e6b6974747949645d2e6861746368696e67203c2073702e63757272656e7454696d65032703210317032103170200000014051f020000000b051f02000000020321034c034c020000000603160316031703420321051f02000000170200000012020000000d03210316051f020000000203170200000012020000000d03210316051f0200000002031703290200000015072f02000000090200000004034f032702000000000200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c020000000403160317034c02000001210321051f020000010204160000000340252502000000f40321051f02000000d504160000000340252502000000c70321051f02000000a8041600000003402525020000009a0321051f020000007b041600000003402525020000006d0321051f020000004e04160000000340252502000000400321051f0200000021041600000003402525020000001304160000000340252504420000000425402025041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c0442000000052540202540041700000003402525034c04420000000525402025400346034c0350034c03160342034c0320053d036d034202000002c8034203210200000004031603170743036a000003190332072c0200000000020000003107430368010000002657726f6e67436f6e646974696f6e3a2074657a283029203c3d20706172616d732e707269636503270340020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c020000000603160316031703290200000015072f02000000090200000004034f03270200000000020000000e031603160316031603160316031603190337072c0200000000020000005507430368010000004a57726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e6b6974747949645d2e61756374696f6e203c2073702e63757272656e7454696d6503270340020000000b051f02000000020321034c0200000004031703170200000014051f020000000b051f02000000020321034c034c020000000603160316031703290200000015072f02000000090200000004034f03270200000000020000000a0316031603160316031703190337072c0200000000020000005607430368010000004b57726f6e67436f6e646974696f6e3a2073656c662e646174612e6b6974746965735b706172616d732e6b6974747949645d2e6861746368696e67203c2073702e63757272656e7454696d65032703210317032103170200000014051f020000000b051f02000000020321034c034c020000000603160316031703420321051f02000000170200000012020000000d03210316051f020000000203170200000012020000000d03210316051f0200000002031703290200000015072f02000000090200000004034f032702000000000200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c020000000403160317034c031603420346034c0350034c03160342034c0320053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/mini-kitties.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/mini-kitties.micheline new file mode 100644 index 00000000..dfd744ff --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/mini-kitties.micheline @@ -0,0 +1,3780 @@ +[{ + "prim": "parameter", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "mutez", + "annots": ["%borrowPrice"] }, + { + "prim": "int", + "annots": ["%kittyId"] } + ] }, + { + "prim": "int", + "annots": ["%parent1"] } + ] }, + { + "prim": "int", + "annots": ["%parent2"] } + ], + "annots": ["%breed"] }, + { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "timestamp", + "annots": ["%auction"] }, + { + "prim": "mutez", + "annots": ["%borrowPrice"] } + ] }, + { + "prim": "int", + "annots": ["%generation"] } + ] }, + { + "prim": "timestamp", + "annots": ["%hatching"] } + ] }, + { + "prim": "bool", + "annots": ["%isNew"] } + ] }, + { + "prim": "int", + "annots": ["%kittyId"] } + ] }, + { + "prim": "address", + "annots": ["%owner"] } + ] }, + { + "prim": "mutez", + "annots": ["%price"] } + ], + "annots": ["%build"] } + ] }, + { + "prim": "pair", + "args": [{ + "prim": "int", + "annots": ["%kittyId"] }, + { + "prim": "mutez", + "annots": ["%price"] } + ], + "annots": ["%buy"] } + ] }, + { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "mutez", + "annots": ["%borrowPrice"] }, + { + "prim": "int", + "annots": ["%kittyId"] } + ] }, + { + "prim": "mutez", + "annots": ["%price"] } + ], + "annots": ["%lend"] } + ] }, + { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "mutez", + "annots": ["%borrowPrice"] }, + { + "prim": "int", + "annots": ["%kittyId"] } + ] }, + { + "prim": "mutez", + "annots": ["%price"] } + ], + "annots": ["%sell"] } + ] }] }, +{ + "prim": "storage", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address", + "annots": ["%creator"] }, + { + "prim": "map", + "args": [{ + "prim": "int" }, + { + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "timestamp", + "annots": ["%auction"] }, + { + "prim": "mutez", + "annots": ["%borrowPrice"] } + ] }, + { + "prim": "int", + "annots": ["%generation"] } + ] }, + { + "prim": "timestamp", + "annots": ["%hatching"] } + ] }, + { + "prim": "bool", + "annots": ["%isNew"] } + ] }, + { + "prim": "int", + "annots": ["%kittyId"] } + ] }, + { + "prim": "address", + "annots": ["%owner"] } + ] }, + { + "prim": "mutez", + "annots": ["%price"] } + ] } + ], + "annots": ["%kitties"] } + ] }] }, +{ + "prim": "code", + "args": [ + [{ + "prim": "DUP" }, { + "prim": "CDR" }, + { + "prim": "SWAP" }, { + "prim": "CAR" }, + { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "PAIR" }, + { + "prim": "DUP" }, + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "NEQ" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: params.parent1 != params.parent2" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "NOW" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.parent1].auction < sp.currentTime" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "NOW" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.parent1].hatching < sp.currentTime" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "SENDER" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "NEQ" }, + { + "prim": "IF", + "args": [ + [{ + "prim": "DUP" }, + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "PUSH", + "args": [{ + "prim": "mutez" }, + { + "int": "0" } + ] }, + { + "prim": "COMPARE" }, + { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: tez(0) < self.data.kitties[params.parent2].borrowPrice" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.parent2].borrowPrice < params.borrowPrice" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "AMOUNT" }, + { + "prim": "COMPARE" }, + { + "prim": "EQ" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: sp.amount == params.borrowPrice" } + ] }, + { + "prim": "FAILWITH" } + ] + ] } + ], + [] + ] }, + { + "prim": "NOW" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.parent2].auction < sp.currentTime" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "NOW" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.parent2].hatching < sp.currentTime" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ] + ] + ] }, + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + { + "prim": "NOW" }, + { + "prim": "PUSH", + "args": [{ + "prim": "int" }, + { + "int": "100" } + ] }, + { + "prim": "ADD" }, + { + "prim": "SWAP" }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "CAR", + "annots": ["@%%"] }, + { + "prim": "PAIR", + "annots": ["%@", + "%" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ], + { + "prim": "SOME" }, + { + "prim": "SWAP" }, + { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ] + ] + ] }, + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + { + "prim": "NOW" }, + { + "prim": "PUSH", + "args": [{ + "prim": "int" }, + { + "int": "100" } + ] }, + { + "prim": "ADD" }, + { + "prim": "SWAP" }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "CAR", + "annots": ["@%%"] }, + { + "prim": "PAIR", + "annots": ["%@", + "%" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ], + { + "prim": "SOME" }, + { + "prim": "SWAP" }, + { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "PUSH", + "args": [{ + "prim": "mutez" }, + { + "int": "0" } + ] }, + { + "prim": "SENDER" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "PUSH", + "args": [{ + "prim": "bool" }, + { + "prim": "False" } + ] }, + { + "prim": "NOW" }, + { + "prim": "PUSH", + "args": [{ + "prim": "int" }, + { + "int": "100" } + ] }, + { + "prim": "ADD" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ], + { + "prim": "COMPARE" }, + { + "prim": "LE" }, + { + "prim": "IF", + "args": [ + [{ + "prim": "CDR" }], + [{ + "prim": "CAR" }] + ] }, + { + "prim": "PUSH", + "args": [{ + "prim": "int" }, + { + "int": "1" } + ] }, + { + "prim": "ADD" }, + { + "prim": "PUSH", + "args": [{ + "prim": "mutez" }, + { + "int": "0" } + ] }, + { + "prim": "PUSH", + "args": [{ + "prim": "timestamp" }, + { + "string": "0" } + ] }, + { + "prim": "PAIR" }, + { + "prim": "PAIR" }, + { + "prim": "PAIR" }, + { + "prim": "PAIR" }, + { + "prim": "PAIR" }, + { + "prim": "PAIR" }, + { + "prim": "PAIR" }, + { + "prim": "SOME" }, + { + "prim": "SWAP" }, + { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SWAP" }, + { + "prim": "DROP" }, + { + "prim": "NIL", + "args": [{ + "prim": "operation" }] }, + { + "prim": "PAIR" } + ], + [{ + "prim": "PAIR" }, + { + "prim": "SENDER" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CAR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "EQ" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.creator == sp.sender" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: params.kitty.isNew" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + { + "prim": "CAR" }, + { + "prim": "SOME" }, + { + "prim": "SWAP" }, + { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SWAP" }, + { + "prim": "DROP" }, + { + "prim": "NIL", + "args": [{ + "prim": "operation" }] }, + { + "prim": "PAIR" } + ] + ] }], + [{ + "prim": "PAIR" }, + { + "prim": "DUP" }, + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + { + "prim": "CDR" }, + { + "prim": "PUSH", + "args": [{ + "prim": "mutez" }, + { + "int": "0" } + ] }, + { + "prim": "COMPARE" }, + { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: tez(0) < self.data.kitties[params.kittyId].price" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + { + "prim": "CDR" }, + { + "prim": "COMPARE" }, + { + "prim": "LE" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.kittyId].price <= params.price" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "AMOUNT" }, + { + "prim": "COMPARE" }, + { + "prim": "EQ" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: sp.amount == params.price" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ] + ] + ] }, + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + { + "prim": "SENDER" }, + { + "prim": "SWAP" }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "CAR", + "annots": ["@%%"] }, + { + "prim": "PAIR", + "annots": ["%@", + "%" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", "%@"] } + ], + { + "prim": "SOME" }, + { + "prim": "SWAP" }, + { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "IF", + "args": [ + [{ + "prim": "DUP" }, + { + "prim": "CDR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ] + ] + ] }, + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + { + "prim": "PUSH", + "args": [{ + "prim": "bool" }, + { + "prim": "False" } + ] }, + { + "prim": "SWAP" }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "CAR", + "annots": ["@%%"] }, + { + "prim": "PAIR", + "annots": ["%@", + "%" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ], + { + "prim": "SOME" }, + { + "prim": "SWAP" }, + { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ] + ] + ] }, + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + { + "prim": "NOW" }, + { + "prim": "PUSH", + "args": [{ + "prim": "int" }, + { + "int": "10" } + ] }, + { + "prim": "ADD" }, + { + "prim": "SWAP" }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ], + { + "prim": "SOME" }, + { + "prim": "SWAP" }, + { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" } + ], + [] + ] }, + { + "prim": "DUP" }, + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "NOW" }, + { + "prim": "COMPARE" }, + { + "prim": "LE" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: sp.currentTime <= self.data.kitties[params.kittyId].auction" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "NOW" }, + { + "prim": "COMPARE" }, + { + "prim": "LE" }, + { + "prim": "IF", + "args": [ + [{ + "prim": "DUP" }, + { + "prim": "CDR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ] + ] + ] }, + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + { + "prim": "CAR" }, + { + "prim": "CDR" }, + { + "prim": "PUSH", + "args": [{ + "prim": "mutez" }, + { + "int": "1" } + ] }, + { + "prim": "ADD" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SOME" }, + { + "prim": "SWAP" }, + { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" } + ], + [] + ] }, + { + "prim": "CDR" }, + { + "prim": "NIL", + "args": [{ + "prim": "operation" }] }, + { + "prim": "PAIR" } + ] + ] }], + [{ + "prim": "PAIR" }, + { + "prim": "DUP" }, + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "PUSH", + "args": [{ + "prim": "mutez" }, + { + "int": "0" } + ] }, + { + "prim": "COMPARE" }, + { + "prim": "LE" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: tez(0) <= params.price" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "NOW" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.kittyId].auction < sp.currentTime" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "NOW" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, + { + "prim": "CDR" } + ], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "COMPARE" }, + { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.kittyId].hatching < sp.currentTime" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + { + "prim": "DUP" }, + { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ] + ] + ] }, + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "SWAP" }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR", + "annots": ["@%%"] }, + [{ + "prim": "CAR", + "annots": ["@%%"] }, + { + "prim": "PAIR", + "annots": ["%@", + "%" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", + "%@" + ] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", "%@"] } + ] + ] + ] }, + { + "prim": "CDR", + "annots": ["@%%"] }, + { + "prim": "SWAP" }, + { + "prim": "PAIR", + "annots": ["%@", "%@"] } + ], + { + "prim": "SOME" }, + { + "prim": "SWAP" }, + { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, + { + "prim": "CAR" }, + { + "prim": "PAIR" }, + { + "prim": "SWAP" }, + { + "prim": "DROP" }, + { + "prim": "NIL", + "args": [{ + "prim": "operation" }] }, + { + "prim": "PAIR" } + ] + ] }], + [{ + "prim": "PAIR" }, { + "prim": "DUP" }, + [{ + "prim": "CAR" }, { + "prim": "CDR" }], + { + "prim": "PUSH", + "args": [{ + "prim": "mutez" }, { + "int": "0" }] }, + { + "prim": "COMPARE" }, { + "prim": "LE" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: tez(0) <= params.price" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "NOW" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, { + "prim": "CDR" }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, { + "prim": "CAR" }, + { + "prim": "CDR" } + ], { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, { + "prim": "CAR" }, + { + "prim": "CAR" }, { + "prim": "CAR" }, + { + "prim": "CAR" }, { + "prim": "CAR" }, + { + "prim": "CAR" } + ], + { + "prim": "COMPARE" }, { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.kittyId].auction < sp.currentTime" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "NOW" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CDR" }, { + "prim": "CDR" }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, { + "prim": "CAR" }, + { + "prim": "CDR" } + ], { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "CAR" }, { + "prim": "CAR" }, + { + "prim": "CAR" }, { + "prim": "CAR" }, + { + "prim": "CDR" } + ], + { + "prim": "COMPARE" }, { + "prim": "LT" }, + { + "prim": "IF", + "args": [ + [], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" }, + { + "string": "WrongCondition: self.data.kitties[params.kittyId].hatching < sp.currentTime" } + ] }, + { + "prim": "FAILWITH" } + ] + ] }, + { + "prim": "DUP" }, { + "prim": "CDR" }, + { + "prim": "DUP" }, { + "prim": "CDR" }, + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, { + "prim": "CAR" }, + { + "prim": "CDR" } + ], { + "prim": "PAIR" }, + { + "prim": "DUP" }, + { + "prim": "DIP", + "args": [ + [ + [ + [{ + "prim": "DUP" }, + { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ] + ] + ] }, + [ + [{ + "prim": "DUP" }, { + "prim": "CAR" }, + { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" }] + ] } + ] + ], + { + "prim": "GET" }, + [{ + "prim": "IF_NONE", + "args": [ + [ + [{ + "prim": "UNIT" }, + { + "prim": "FAILWITH" } + ] + ], + [] + ] }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" }] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ] + ] }, + { + "prim": "SWAP" } + ], + [{ + "prim": "CAR" }, { + "prim": "CDR" }], + { + "prim": "SWAP" }, { + "prim": "CAR" }, + { + "prim": "PAIR" }, { + "prim": "SOME" }, + { + "prim": "SWAP" }, { + "prim": "UPDATE" }, + { + "prim": "SWAP" }, { + "prim": "CAR" }, + { + "prim": "PAIR" }, { + "prim": "SWAP" }, + { + "prim": "DROP" }, + { + "prim": "NIL", + "args": [{ + "prim": "operation" }] }, + { + "prim": "PAIR" } + ] + ] } + ] + ] } +] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/mini-kitties.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/mini-kitties.michelson new file mode 100644 index 00000000..475b5c08 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/mini-kitties.michelson @@ -0,0 +1,815 @@ +parameter (or (or (or (or (pair %breed (pair (pair (mutez %borrowPrice) (int %kittyId)) (int %parent1)) (int %parent2)) (pair %build (pair (pair (pair (pair (pair (pair (timestamp %auction) (mutez %borrowPrice)) (int %generation)) (timestamp %hatching)) (bool %isNew)) (int %kittyId)) (address %owner)) (mutez %price))) (pair %buy (int %kittyId) (mutez %price))) (pair %lend (pair (mutez %borrowPrice) (int %kittyId)) (mutez %price))) (pair %sell (pair (mutez %borrowPrice) (int %kittyId)) (mutez %price))); + +storage (pair (address %creator) (map %kitties int (pair (pair (pair (pair (pair (pair (pair (timestamp %auction) (mutez %borrowPrice)) (int %generation)) (timestamp %hatching)) (bool %isNew)) (int %kittyId)) (address %owner)) (mutez %price)))); + +code + { + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + IF_LEFT + { + IF_LEFT + { + IF_LEFT + { + IF_LEFT + { + # Entry point: breed # params.storage + PAIR; # pair(params, storage) + # sp.verify(params.parent1 != params.parent2) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CADR; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CAADR; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + NEQ; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: params.parent1 != params.parent2"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.kitties[params.parent1].auction < sp.currentTime) # pair(params, storage) + NOW; # timestamp.pair(params, storage) + DUUP; # pair(params, storage).timestamp.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + CAAAAAAAR; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.parent1].auction < sp.currentTime"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.kitties[params.parent1].hatching < sp.currentTime) # pair(params, storage) + NOW; # timestamp.pair(params, storage) + DUUP; # pair(params, storage).timestamp.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + CAAAADR; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.parent1].hatching < sp.currentTime"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + SENDER; # address.pair(params, storage) + DUUP; # pair(params, storage).address.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).address.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).address.pair(params, storage) + CADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).address.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).address.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).address.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).address.pair(params, storage) + CADR; # address.address.pair(params, storage) + COMPARE; # int.pair(params, storage) + NEQ; # bool.pair(params, storage) + IF + { + # sp.verify(tez(0) < self.data.kitties[params.parent2].borrowPrice) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + DUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + CAAAAAADR; # mutez.pair(params, storage) + PUSH mutez 0; # mutez.mutez.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: tez(0) < self.data.kitties[params.parent2].borrowPrice"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.kitties[params.parent2].borrowPrice < params.borrowPrice) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CAAAAR; # mutez.pair(params, storage) + DUUP; # pair(params, storage).mutez.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).mutez.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).mutez.pair(params, storage) + CADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).mutez.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).mutez.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).mutez.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).mutez.pair(params, storage) + CAAAAAADR; # mutez.mutez.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.parent2].borrowPrice < params.borrowPrice"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(sp.amount == params.borrowPrice) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CAAAAR; # mutez.pair(params, storage) + AMOUNT; # mutez.mutez.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: sp.amount == params.borrowPrice"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # No conversion for command send(self.data.kitties[params.parent2].owner, params.borrowPrice) # pair(params, storage) + } + {}; # pair(params, storage) + # sp.verify(self.data.kitties[params.parent2].auction < sp.currentTime) # pair(params, storage) + NOW; # timestamp.pair(params, storage) + DUUP; # pair(params, storage).timestamp.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + CADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + CAAAAAAAR; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.parent2].auction < sp.currentTime"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.kitties[params.parent2].hatching < sp.currentTime) # pair(params, storage) + NOW; # timestamp.pair(params, storage) + DUUP; # pair(params, storage).timestamp.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + CADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + CAAAADR; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.parent2].hatching < sp.currentTime"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # self.data.kitties[params.parent1].hatching = addSeconds(sp.currentTime, 100) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DUP; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DIP + { + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + NOW; # timestamp.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH int 100; # intOrNat.timestamp.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + ADD; # timestamp.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SET_CAAAADR; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + # self.data.kitties[params.parent2].hatching = addSeconds(sp.currentTime, 100) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DUP; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DIP + { + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + NOW; # timestamp.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH int 100; # intOrNat.timestamp.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + ADD; # timestamp.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SET_CAAAADR; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + # self.data.kitties[params.kittyId] = Record(auction = timestamp(0), borrowPrice = tez(0), generation = 1 + max(self.data.kitties[params.parent1].generation, self.data.kitties[params.parent2].generation), hatching = addSeconds(sp.currentTime, 100), isNew = False, kittyId = params.kittyId, owner = sp.sender, price = tez(0)) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH mutez 0; # mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SENDER; # address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUUUUP; # pair(params, storage).address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAAADR; # int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH bool False; # bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + NOW; # timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH int 100; # intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + ADD; # timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUUUUUUP; # storage.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUUUUUUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAAAAADR; # intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUUUUUUUP; # storage.intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUUUUUUUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAAAAADR; # intOrNat.intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(intOrNat, intOrNat).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUP; # pair(intOrNat, intOrNat).pair(intOrNat, intOrNat).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UNPAIR; # intOrNat.intOrNat.pair(intOrNat, intOrNat).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + COMPARE; # int.pair(intOrNat, intOrNat).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + LE; # bool.pair(intOrNat, intOrNat).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF + { + CDR; # intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + } + { + CAR; # intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH int 1; # intOrNat.intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + ADD; # intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH mutez 0; # mutez.intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH timestamp "0"; # timestamp.mutez.intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(timestamp, mutez).intOrNat.timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(pair(timestamp, mutez), intOrNat).timestamp.bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(pair(pair(timestamp, mutez), intOrNat), timestamp).bool.int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(pair(pair(pair(timestamp, mutez), intOrNat), timestamp), bool).int.address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(pair(pair(pair(pair(timestamp, mutez), intOrNat), timestamp), bool), int).address.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(pair(pair(pair(pair(pair(timestamp, mutez), intOrNat), timestamp), bool), int), address).mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(pair(pair(pair(pair(pair(pair(timestamp, mutez), intOrNat), timestamp), bool), int), address), mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(pair(pair(pair(pair(pair(pair(pair(timestamp, mutez), intOrNat), timestamp), bool), int), address), mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(pair(pair(pair(pair(pair(pair(pair(timestamp, mutez), intOrNat), timestamp), bool), int), address), mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + DROP; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + } + { + # Entry point: build # params.storage + PAIR; # pair(params, storage) + # sp.verify(self.data.creator == sp.sender) # pair(params, storage) + SENDER; # address.pair(params, storage) + DUUP; # pair(params, storage).address.pair(params, storage) + CDAR; # address.address.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.creator == sp.sender"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(params.kitty.isNew) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CAAAADR; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: params.kitty.isNew"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # self.data.kitties[params.kitty.kittyId] = params.kitty # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUUP; # pair(params, storage).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAR; # params.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + DROP; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + }; # pair(operations, storage) + } + { + # Entry point: buy # params.storage + PAIR; # pair(params, storage) + # sp.verify(tez(0) < self.data.kitties[params.kittyId].price) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + DUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAAR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + CDR; # mutez.pair(params, storage) + PUSH mutez 0; # mutez.mutez.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: tez(0) < self.data.kitties[params.kittyId].price"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.kitties[params.kittyId].price <= params.price) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CADR; # mutez.pair(params, storage) + DUUP; # pair(params, storage).mutez.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).mutez.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).mutez.pair(params, storage) + CAAR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).mutez.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).mutez.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).mutez.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).mutez.pair(params, storage) + CDR; # mutez.mutez.pair(params, storage) + COMPARE; # int.pair(params, storage) + LE; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.kittyId].price <= params.price"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(sp.amount == params.price) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CADR; # mutez.pair(params, storage) + AMOUNT; # mutez.mutez.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: sp.amount == params.price"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # No conversion for command send(self.data.kitties[params.kittyId].owner, params.price) # pair(params, storage) + # self.data.kitties[params.kittyId].owner = sp.sender # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAAR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DUP; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DIP + { + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SENDER; # address.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).address.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SET_CADR; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + DUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAAR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + CAAADR; # bool.pair(params, storage) + IF + { + # self.data.kitties[params.kittyId].isNew = False # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAAR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DUP; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DIP + { + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH bool False; # bool.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).bool.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SET_CAAADR; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + # self.data.kitties[params.kittyId].auction = addSeconds(sp.currentTime, 10) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAAR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DUP; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DIP + { + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + NOW; # timestamp.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH int 10; # intOrNat.timestamp.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + ADD; # timestamp.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SET_CAAAAAAAR; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + } + {}; # pair(params, storage) + # sp.verify(sp.currentTime <= self.data.kitties[params.kittyId].auction) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + DUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAAR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + CAAAAAAAR; # timestamp.pair(params, storage) + NOW; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LE; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: sp.currentTime <= self.data.kitties[params.kittyId].auction"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + DUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAAR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).pair(params, storage) + CAAAAAAAR; # timestamp.pair(params, storage) + NOW; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LE; # bool.pair(params, storage) + IF + { + # self.data.kitties[params.kittyId].price = params.price + mutez(1) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAAR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DUP; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DIP + { + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUUUP; # pair(params, storage).Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAR; # Rec(kittyId = int, price = mutez).Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CDR; # mutez.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PUSH mutez 1; # mutez.mutez.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + ADD; # mutez.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAR; # timestamp.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(timestamp, mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(pair(timestamp, mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(pair(timestamp, mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + } + {}; # pair(params, storage) + CDR; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + }; # pair(operations, storage) + } + { + # Entry point: lend # params.storage + PAIR; # pair(params, storage) + # sp.verify(tez(0) <= params.price) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CADR; # mutez.pair(params, storage) + PUSH mutez 0; # mutez.mutez.pair(params, storage) + COMPARE; # int.pair(params, storage) + LE; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: tez(0) <= params.price"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.kitties[params.kittyId].auction < sp.currentTime) # pair(params, storage) + NOW; # timestamp.pair(params, storage) + DUUP; # pair(params, storage).timestamp.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + CAAAAAAAR; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.kittyId].auction < sp.currentTime"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.kitties[params.kittyId].hatching < sp.currentTime) # pair(params, storage) + NOW; # timestamp.pair(params, storage) + DUUP; # pair(params, storage).timestamp.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + CAAAADR; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.kittyId].hatching < sp.currentTime"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # self.data.kitties[params.kittyId].borrowPrice = params.price # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DUP; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DIP + { + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUUUP; # pair(params, storage).Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CADR; # mutez.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SET_CAAAAAADR; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + DROP; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + }; # pair(operations, storage) + } + { + # Entry point: sell # params.storage + PAIR; # pair(params, storage) + # sp.verify(tez(0) <= params.price) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CADR; # mutez.pair(params, storage) + PUSH mutez 0; # mutez.mutez.pair(params, storage) + COMPARE; # int.pair(params, storage) + LE; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: tez(0) <= params.price"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.kitties[params.kittyId].auction < sp.currentTime) # pair(params, storage) + NOW; # timestamp.pair(params, storage) + DUUP; # pair(params, storage).timestamp.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + CAAAAAAAR; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.kittyId].auction < sp.currentTime"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.kitties[params.kittyId].hatching < sp.currentTime) # pair(params, storage) + NOW; # timestamp.pair(params, storage) + DUUP; # pair(params, storage).timestamp.pair(params, storage) + CDDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).timestamp.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).timestamp.pair(params, storage) + CAAAADR; # timestamp.timestamp.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.kitties[params.kittyId].hatching < sp.currentTime"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # self.data.kitties[params.kittyId].price = params.price # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CDR; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUP; # pair(params, storage).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAADR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DUP; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).storage.pair(params, storage) + DIP + { + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # pair(int, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UNPAIR; # int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + GET; # option(Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + }; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + DUUUUUP; # pair(params, storage).Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CADR; # mutez.Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez).mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + CAR; # timestamp.mutez.int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + PAIR; # pair(timestamp, mutez).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SOME; # option(pair(timestamp, mutez)).int.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # int.option(pair(timestamp, mutez)).Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + UPDATE; # Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).storage.pair(params, storage) + SWAP; # storage.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + CAR; # address.Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez)).pair(params, storage) + PAIR; # pair(address, Map(int, Rec(auction = timestamp, borrowPrice = mutez, generation = intOrNat, hatching = timestamp, isNew = bool, kittyId = int, owner = address, price = mutez))).pair(params, storage) + SWAP; # pair(params, storage).storage + DROP; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + }; # pair(operations, storage) + } # pair(operations, storage); \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/smartpy-tictactoe.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/smartpy-tictactoe.micheline new file mode 100644 index 00000000..71153d74 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/smartpy-tictactoe.micheline @@ -0,0 +1,1055 @@ +[ { "prim": "parameter", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "int", "annots": [ "%i" ] }, + { "prim": "int", "annots": [ "%j" ] } ] }, + { "prim": "int", "annots": [ "%move" ] } ] } ] }, + { "prim": "storage", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "map", + "args": + [ { "prim": "int" }, + { "prim": "map", + "args": + [ { "prim": "int" }, + { "prim": "int" } ] } ], + "annots": [ "%deck" ] }, + { "prim": "bool", + "annots": [ "%draw" ] } ] }, + { "prim": "int", + "annots": [ "%nbMoves" ] } ] }, + { "prim": "int", + "annots": [ "%nextPlayer" ] } ] }, + { "prim": "int", "annots": [ "%winner" ] } ] } ] }, + { "prim": "code", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "COMPARE" }, { "prim": "EQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], { "prim": "NOT" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "WrongCondition: (self.data.winner == 0) & (~ self.data.draw)" } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DUP" }, { "prim": "CAR" }, + [ { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "SWAP" }, { "prim": "COMPARE" }, + { "prim": "GE" }, + { "prim": "IF", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "3" } ] }, + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "COMPARE" }, { "prim": "LT" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "WrongCondition: (params.i >= 0) & (params.i < 3)" } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DUP" }, { "prim": "CAR" }, + [ { "prim": "CAR" }, { "prim": "CDR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "SWAP" }, { "prim": "COMPARE" }, + { "prim": "GE" }, + { "prim": "IF", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "3" } ] }, + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], + { "prim": "COMPARE" }, { "prim": "LT" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "WrongCondition: (params.j >= 0) & (params.j < 3)" } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CDR" } ], + { "prim": "COMPARE" }, { "prim": "EQ" }, + { "prim": "IF", + "args": + [ [], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "WrongCondition: params.move == self.data.nextPlayer" } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DUP" }, { "prim": "CDR" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "SWAP" }, + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + { "prim": "COMPARE" }, { "prim": "EQ" }, + { "prim": "IF", + "args": + [ [], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "WrongCondition: self.data.deck[params.i][params.j] == 0" } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], { "prim": "PAIR" }, + { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ [ [ { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "CDR" } ] ] } ] ] ] ] }, + [ [ { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "DIP", + "args": [ [ { "prim": "CDR" } ] ] } ] ], + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": + "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CDR" } ], + { "prim": "SOME" }, { "prim": "SWAP" }, + { "prim": "UPDATE" }, { "prim": "SOME" }, + { "prim": "SWAP" }, { "prim": "UPDATE" }, + { "prim": "SWAP" }, + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CAR", "annots": [ "@%%" ] }, + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CAR", + "annots": [ "@%%" ] }, + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CAR", + "annots": [ "@%%" ] }, + [ { "prim": "CDR", + "annots": + [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", + "annots": + [ "%", "%@" ] } ] ] ] }, + { "prim": "CDR", + "annots": [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", + "annots": [ "%@", "%@" ] } ] ] ] }, + { "prim": "CDR", "annots": [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", + "annots": [ "%@", "%@" ] } ] ] ] }, + { "prim": "CDR", "annots": [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", "annots": [ "%@", "%@" ] } ], + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CDR" }, { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "1" } ] }, + { "prim": "ADD" }, { "prim": "SWAP" }, + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CAR", "annots": [ "@%%" ] }, + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CAR", + "annots": [ "@%%" ] }, + [ { "prim": "CAR", + "annots": [ "@%%" ] }, + { "prim": "PAIR", + "annots": [ "%@", "%" ] } ] ] ] }, + { "prim": "CDR", "annots": [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", + "annots": [ "%@", "%@" ] } ] ] ] }, + { "prim": "CDR", "annots": [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", "annots": [ "%@", "%@" ] } ], + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CDR" }, { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CDR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "3" } ] }, + { "prim": "SUB" }, { "prim": "SWAP" }, + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CAR", "annots": [ "@%%" ] }, + [ { "prim": "CAR", "annots": [ "@%%" ] }, + { "prim": "PAIR", + "annots": [ "%@", "%" ] } ] ] ] }, + { "prim": "CDR", "annots": [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", "annots": [ "%@", "%@" ] } ], + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CDR" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "SWAP" }, + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + { "prim": "COMPARE" }, { "prim": "NEQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "1" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "COMPARE" }, + { "prim": "EQ" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "2" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "COMPARE" }, + { "prim": "EQ" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "SWAP" }, + { "prim": "CAR" }, { "prim": "PAIR" }, + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "PAIR" } ], [] ] }, + { "prim": "DUP" }, { "prim": "CDR" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + { "prim": "COMPARE" }, { "prim": "NEQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "1" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "COMPARE" }, + { "prim": "EQ" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "2" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "COMPARE" }, + { "prim": "EQ" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": + [ [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "SWAP" }, + { "prim": "CAR" }, { "prim": "PAIR" }, + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "PAIR" } ], [] ] }, + { "prim": "DUP" }, { "prim": "CDR" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + { "prim": "COMPARE" }, { "prim": "NEQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "1" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "1" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "COMPARE" }, + { "prim": "EQ" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "2" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "2" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "COMPARE" }, + { "prim": "EQ" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "SWAP" }, + { "prim": "CAR" }, { "prim": "PAIR" }, + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "PAIR" } ], [] ] }, + { "prim": "DUP" }, { "prim": "CDR" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "SWAP" }, + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "2" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + { "prim": "COMPARE" }, { "prim": "NEQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "1" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "1" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "2" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "COMPARE" }, + { "prim": "EQ" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "2" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "2" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "COMPARE" }, + { "prim": "EQ" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "2" } ] }, + { "prim": "GET" }, + [ { "prim": "IF_NONE", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [] ] } ], { "prim": "SWAP" }, + { "prim": "CAR" }, { "prim": "PAIR" }, + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "PAIR" } ], [] ] }, + { "prim": "DUP" }, { "prim": "CDR" }, + [ { "prim": "CAR" }, { "prim": "CAR" }, + { "prim": "CDR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "9" } ] }, + { "prim": "COMPARE" }, { "prim": "EQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "int" }, { "int": "0" } ] }, + [ { "prim": "DIP", + "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + [ { "prim": "CDR" }, { "prim": "CDR" } ], + { "prim": "COMPARE" }, { "prim": "EQ" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "False" } ] } ] ] }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "PUSH", + "args": + [ { "prim": "bool" }, + { "prim": "True" } ] }, + { "prim": "SWAP" }, + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CAR", + "annots": [ "@%%" ] }, + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": "CAR", + "annots": [ "@%%" ] }, + [ { "prim": "DUP" }, + { "prim": "DIP", + "args": + [ [ { "prim": + "CAR", + "annots": + [ "@%%" ] }, + [ { "prim": + "CAR", + "annots": + [ "@%%" ] }, + { "prim": + "PAIR", + "annots": + [ "%@", + "%" ] } ] ] ] }, + { "prim": "CDR", + "annots": [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", + "annots": + [ "%@", "%@" ] } ] ] ] }, + { "prim": "CDR", + "annots": [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", + "annots": [ "%@", "%@" ] } ] ] ] }, + { "prim": "CDR", "annots": [ "@%%" ] }, + { "prim": "SWAP" }, + { "prim": "PAIR", + "annots": [ "%@", "%@" ] } ], + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "PAIR" } ], [] ] }, + { "prim": "CDR" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/smartpy-tictactoe.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/smartpy-tictactoe.michelson new file mode 100644 index 00000000..cb42770b --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/smartpy-tictactoe.michelson @@ -0,0 +1,747 @@ +parameter (pair (pair (int %i) (int %j)) (int %move)); + +storage (pair (pair (pair (pair (map %deck int (map int int)) (bool %draw)) (int %nbMoves)) (int %nextPlayer)) (int %winner)); + +code + { + # Entry point: play # pair(params, storage) + # sp.verify((self.data.winner == 0) & (~ self.data.draw)) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # Rec(deck = [[int]], draw = bool, nbMoves = intOrNat, nextPlayer = int, winner = int).pair(params, storage) + CDR; # int.pair(params, storage) + PUSH int 0; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + IF + { + DUP; # pair(params, storage).pair(params, storage) + CDAAADR; # bool.pair(params, storage) + NOT; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: (self.data.winner == 0) & (~ self.data.draw)"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify((params.i >= 0) & (params.i < 3)) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CAR; # Rec(i = intOrNat, j = intOrNat, move = int).pair(params, storage) + CAAR; # intOrNat.pair(params, storage) + PUSH int 0; # intOrNat.intOrNat.pair(params, storage) + SWAP; # intOrNat.intOrNat.pair(params, storage) + COMPARE; # int.pair(params, storage) + GE; # bool.pair(params, storage) + IF + { + PUSH int 3; # intOrNat.pair(params, storage) + DUUP; # pair(params, storage).intOrNat.pair(params, storage) + CAAAR; # intOrNat.intOrNat.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: (params.i >= 0) & (params.i < 3)"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify((params.j >= 0) & (params.j < 3)) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CAR; # Rec(i = intOrNat, j = intOrNat, move = int).pair(params, storage) + CADR; # intOrNat.pair(params, storage) + PUSH int 0; # intOrNat.intOrNat.pair(params, storage) + SWAP; # intOrNat.intOrNat.pair(params, storage) + COMPARE; # int.pair(params, storage) + GE; # bool.pair(params, storage) + IF + { + PUSH int 3; # intOrNat.pair(params, storage) + DUUP; # pair(params, storage).intOrNat.pair(params, storage) + CAADR; # intOrNat.intOrNat.pair(params, storage) + COMPARE; # int.pair(params, storage) + LT; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: (params.j >= 0) & (params.j < 3)"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(params.move == self.data.nextPlayer) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDADR; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CADR; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: params.move == self.data.nextPlayer"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # sp.verify(self.data.deck[params.i][params.j] == 0) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # Rec(deck = [[int]], draw = bool, nbMoves = intOrNat, nextPlayer = int, winner = int).pair(params, storage) + CAAAAR; # [[int]].pair(params, storage) + PUSH int 0; # int.[[int]].pair(params, storage) + SWAP; # [[int]].int.pair(params, storage) + DUUUP; # pair(params, storage).[[int]].int.pair(params, storage) + CAAAR; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + DUUUP; # pair(params, storage).[int].int.pair(params, storage) + CAADR; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.deck[params.i][params.j] == 0"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # self.data.deck[params.i][params.j] = params.move # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CAAAAR; # [[int]].storage.pair(params, storage) + DUUUP; # pair(params, storage).[[int]].storage.pair(params, storage) + CAAAR; # intOrNat.[[int]].storage.pair(params, storage) + PAIR; # pair(intOrNat, [[int]]).storage.pair(params, storage) + DUP; # pair(intOrNat, [[int]]).pair(intOrNat, [[int]]).storage.pair(params, storage) + DIP + { + UNPAIR; # intOrNat.[[int]].storage.pair(params, storage) + }; # pair(intOrNat, [[int]]).intOrNat.[[int]].storage.pair(params, storage) + UNPAIR; # intOrNat.[[int]].intOrNat.[[int]].storage.pair(params, storage) + GET; # option([int]).intOrNat.[[int]].storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].intOrNat.[[int]].storage.pair(params, storage) + }; # [int].intOrNat.[[int]].storage.pair(params, storage) + DUUUUUP; # pair(params, storage).[int].intOrNat.[[int]].storage.pair(params, storage) + CAADR; # intOrNat.[int].intOrNat.[[int]].storage.pair(params, storage) + DUUUUUUP; # pair(params, storage).intOrNat.[int].intOrNat.[[int]].storage.pair(params, storage) + CADR; # int.intOrNat.[int].intOrNat.[[int]].storage.pair(params, storage) + SOME; # option(int).intOrNat.[int].intOrNat.[[int]].storage.pair(params, storage) + SWAP; # intOrNat.option(int).[int].intOrNat.[[int]].storage.pair(params, storage) + UPDATE; # [int].intOrNat.[[int]].storage.pair(params, storage) + SOME; # option([int]).intOrNat.[[int]].storage.pair(params, storage) + SWAP; # intOrNat.option([int]).[[int]].storage.pair(params, storage) + UPDATE; # [[int]].storage.pair(params, storage) + SWAP; # storage.[[int]].pair(params, storage) + SET_CAAAAR; # storage.pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + # self.data.nbMoves += 1 # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CAADR; # intOrNat.storage.pair(params, storage) + PUSH int 1; # intOrNat.intOrNat.storage.pair(params, storage) + ADD; # intOrNat.storage.pair(params, storage) + SWAP; # storage.intOrNat.pair(params, storage) + SET_CAADR; # storage.pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + # self.data.nextPlayer = 3 - self.data.nextPlayer # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CADR; # int.storage.pair(params, storage) + PUSH int 3; # int.int.storage.pair(params, storage) + SUB; # int.storage.pair(params, storage) + SWAP; # storage.int.pair(params, storage) + SET_CADR; # storage.pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # Rec(deck = [[int]], draw = bool, nbMoves = intOrNat, nextPlayer = int, winner = int).pair(params, storage) + CAAAAR; # [[int]].pair(params, storage) + PUSH int 0; # int.[[int]].pair(params, storage) + SWAP; # [[int]].int.pair(params, storage) + DUUUP; # pair(params, storage).[[int]].int.pair(params, storage) + CAAAR; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + PUSH int 0; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + NEQ; # bool.pair(params, storage) + IF + { + DUP; # pair(params, storage).pair(params, storage) + CDAAAAR; # [[int]].pair(params, storage) + DUUP; # pair(params, storage).[[int]].pair(params, storage) + CAAAR; # intOrNat.[[int]].pair(params, storage) + GET; # option([int]).pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].pair(params, storage) + }; # [int].pair(params, storage) + PUSH int 1; # intOrNat.[int].pair(params, storage) + GET; # option(int).pair(params, storage) + IF_SOME + {} + { + FAIL; # int.pair(params, storage) + }; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CDAAAAR; # [[int]].int.pair(params, storage) + DUUUP; # pair(params, storage).[[int]].int.pair(params, storage) + CAAAR; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + PUSH int 0; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + { + DUP; # pair(params, storage).pair(params, storage) + CDAAAAR; # [[int]].pair(params, storage) + DUUP; # pair(params, storage).[[int]].pair(params, storage) + CAAAR; # intOrNat.[[int]].pair(params, storage) + GET; # option([int]).pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].pair(params, storage) + }; # [int].pair(params, storage) + PUSH int 2; # intOrNat.[int].pair(params, storage) + GET; # option(int).pair(params, storage) + IF_SOME + {} + { + FAIL; # int.pair(params, storage) + }; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CDAAAAR; # [[int]].int.pair(params, storage) + DUUUP; # pair(params, storage).[[int]].int.pair(params, storage) + CAAAR; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + PUSH int 0; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + { + # self.data.winner = self.data.deck[params.i][0] # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CAAAAR; # [[int]].storage.pair(params, storage) + DUUUP; # pair(params, storage).[[int]].storage.pair(params, storage) + CAAAR; # intOrNat.[[int]].storage.pair(params, storage) + GET; # option([int]).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].storage.pair(params, storage) + }; # [int].storage.pair(params, storage) + PUSH int 0; # intOrNat.[int].storage.pair(params, storage) + GET; # option(int).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.storage.pair(params, storage) + }; # int.storage.pair(params, storage) + SWAP; # storage.int.pair(params, storage) + CAR; # [[int]].int.pair(params, storage) + PAIR; # pair([[int]], int).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + } + {}; # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # Rec(deck = [[int]], draw = bool, nbMoves = intOrNat, nextPlayer = int, winner = int).pair(params, storage) + CAAAAR; # [[int]].pair(params, storage) + PUSH int 0; # int.[[int]].pair(params, storage) + SWAP; # [[int]].int.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + DUUUP; # pair(params, storage).[int].int.pair(params, storage) + CAADR; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + NEQ; # bool.pair(params, storage) + IF + { + DUP; # pair(params, storage).pair(params, storage) + CDAAAAR; # [[int]].pair(params, storage) + PUSH int 1; # intOrNat.[[int]].pair(params, storage) + GET; # option([int]).pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].pair(params, storage) + }; # [int].pair(params, storage) + DUUP; # pair(params, storage).[int].pair(params, storage) + CAADR; # intOrNat.[int].pair(params, storage) + GET; # option(int).pair(params, storage) + IF_SOME + {} + { + FAIL; # int.pair(params, storage) + }; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CDAAAAR; # [[int]].int.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + DUUUP; # pair(params, storage).[int].int.pair(params, storage) + CAADR; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + { + DUP; # pair(params, storage).pair(params, storage) + CDAAAAR; # [[int]].pair(params, storage) + PUSH int 2; # intOrNat.[[int]].pair(params, storage) + GET; # option([int]).pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].pair(params, storage) + }; # [int].pair(params, storage) + DUUP; # pair(params, storage).[int].pair(params, storage) + CAADR; # intOrNat.[int].pair(params, storage) + GET; # option(int).pair(params, storage) + IF_SOME + {} + { + FAIL; # int.pair(params, storage) + }; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CDAAAAR; # [[int]].int.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + DUUUP; # pair(params, storage).[int].int.pair(params, storage) + CAADR; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + { + # self.data.winner = self.data.deck[0][params.j] # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CAAAAR; # [[int]].storage.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].storage.pair(params, storage) + GET; # option([int]).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].storage.pair(params, storage) + }; # [int].storage.pair(params, storage) + DUUUP; # pair(params, storage).[int].storage.pair(params, storage) + CAADR; # intOrNat.[int].storage.pair(params, storage) + GET; # option(int).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.storage.pair(params, storage) + }; # int.storage.pair(params, storage) + SWAP; # storage.int.pair(params, storage) + CAR; # [[int]].int.pair(params, storage) + PAIR; # pair([[int]], int).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + } + {}; # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # Rec(deck = [[int]], draw = bool, nbMoves = intOrNat, nextPlayer = int, winner = int).pair(params, storage) + CAAAAR; # [[int]].pair(params, storage) + PUSH int 0; # int.[[int]].pair(params, storage) + SWAP; # [[int]].int.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + PUSH int 0; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + NEQ; # bool.pair(params, storage) + IF + { + DUP; # pair(params, storage).pair(params, storage) + CDAAAAR; # [[int]].pair(params, storage) + PUSH int 1; # intOrNat.[[int]].pair(params, storage) + GET; # option([int]).pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].pair(params, storage) + }; # [int].pair(params, storage) + PUSH int 1; # intOrNat.[int].pair(params, storage) + GET; # option(int).pair(params, storage) + IF_SOME + {} + { + FAIL; # int.pair(params, storage) + }; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CDAAAAR; # [[int]].int.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + PUSH int 0; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + { + DUP; # pair(params, storage).pair(params, storage) + CDAAAAR; # [[int]].pair(params, storage) + PUSH int 2; # intOrNat.[[int]].pair(params, storage) + GET; # option([int]).pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].pair(params, storage) + }; # [int].pair(params, storage) + PUSH int 2; # intOrNat.[int].pair(params, storage) + GET; # option(int).pair(params, storage) + IF_SOME + {} + { + FAIL; # int.pair(params, storage) + }; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CDAAAAR; # [[int]].int.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + PUSH int 0; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + { + # self.data.winner = self.data.deck[0][0] # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CAAAAR; # [[int]].storage.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].storage.pair(params, storage) + GET; # option([int]).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].storage.pair(params, storage) + }; # [int].storage.pair(params, storage) + PUSH int 0; # intOrNat.[int].storage.pair(params, storage) + GET; # option(int).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.storage.pair(params, storage) + }; # int.storage.pair(params, storage) + SWAP; # storage.int.pair(params, storage) + CAR; # [[int]].int.pair(params, storage) + PAIR; # pair([[int]], int).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + } + {}; # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # Rec(deck = [[int]], draw = bool, nbMoves = intOrNat, nextPlayer = int, winner = int).pair(params, storage) + CAAAAR; # [[int]].pair(params, storage) + PUSH int 0; # int.[[int]].pair(params, storage) + SWAP; # [[int]].int.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + PUSH int 2; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + NEQ; # bool.pair(params, storage) + IF + { + DUP; # pair(params, storage).pair(params, storage) + CDAAAAR; # [[int]].pair(params, storage) + PUSH int 1; # intOrNat.[[int]].pair(params, storage) + GET; # option([int]).pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].pair(params, storage) + }; # [int].pair(params, storage) + PUSH int 1; # intOrNat.[int].pair(params, storage) + GET; # option(int).pair(params, storage) + IF_SOME + {} + { + FAIL; # int.pair(params, storage) + }; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CDAAAAR; # [[int]].int.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + PUSH int 2; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + { + DUP; # pair(params, storage).pair(params, storage) + CDAAAAR; # [[int]].pair(params, storage) + PUSH int 2; # intOrNat.[[int]].pair(params, storage) + GET; # option([int]).pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].pair(params, storage) + }; # [int].pair(params, storage) + PUSH int 0; # intOrNat.[int].pair(params, storage) + GET; # option(int).pair(params, storage) + IF_SOME + {} + { + FAIL; # int.pair(params, storage) + }; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CDAAAAR; # [[int]].int.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].int.pair(params, storage) + GET; # option([int]).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].int.pair(params, storage) + }; # [int].int.pair(params, storage) + PUSH int 2; # intOrNat.[int].int.pair(params, storage) + GET; # option(int).int.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.int.pair(params, storage) + }; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + { + # self.data.winner = self.data.deck[0][2] # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUP; # storage.storage.pair(params, storage) + CAAAAR; # [[int]].storage.pair(params, storage) + PUSH int 0; # intOrNat.[[int]].storage.pair(params, storage) + GET; # option([int]).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # [int].storage.pair(params, storage) + }; # [int].storage.pair(params, storage) + PUSH int 2; # intOrNat.[int].storage.pair(params, storage) + GET; # option(int).storage.pair(params, storage) + IF_SOME + {} + { + FAIL; # int.storage.pair(params, storage) + }; # int.storage.pair(params, storage) + SWAP; # storage.int.pair(params, storage) + CAR; # [[int]].int.pair(params, storage) + PAIR; # pair([[int]], int).pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + } + {}; # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # Rec(deck = [[int]], draw = bool, nbMoves = intOrNat, nextPlayer = int, winner = int).pair(params, storage) + CAADR; # intOrNat.pair(params, storage) + PUSH int 9; # intOrNat.intOrNat.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + IF + { + PUSH int 0; # int.pair(params, storage) + DUUP; # pair(params, storage).int.pair(params, storage) + CDDR; # int.int.pair(params, storage) + COMPARE; # int.pair(params, storage) + EQ; # bool.pair(params, storage) + } + { + PUSH bool False; # bool.pair(params, storage) + }; # bool.pair(params, storage) + IF + { + # self.data.draw = True # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + PUSH bool True; # bool.storage.pair(params, storage) + SWAP; # storage.bool.pair(params, storage) + SET_CAAADR; # storage.pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + PAIR; # pair(params, storage) + } + {}; # pair(params, storage) + CDR; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + } # pair(operations, storage); \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/store-value.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/store-value.micheline new file mode 100644 index 00000000..1193230b --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/store-value.micheline @@ -0,0 +1,83 @@ +[ { "prim": "parameter", + "args": + [ { "prim": "or", + "args": + [ { "prim": "or", + "args": + [ { "prim": "nat", + "annots": [ "%divisor" ] }, + { "prim": "unit", + "annots": [ "%double" ] } ] }, + { "prim": "nat", "annots": [ "%value" ] } ] } ] }, + { "prim": "storage", "args": [ { "prim": "nat" } ] }, + { "prim": "code", + "args": + [ [ { "prim": "DUP" }, { "prim": "CDR" }, + { "prim": "SWAP" }, { "prim": "CAR" }, + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "IF_LEFT", + "args": + [ [ { "prim": "PAIR" }, + { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "5" } ] }, + { "prim": "SWAP" }, + { "prim": "COMPARE" }, + { "prim": "GT" }, + { "prim": "IF", + "args": + [ [], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "WrongCondition: params.divisor > 5" } ] }, + { "prim": "FAILWITH" } ] ] }, + { "prim": "DUP" }, + { "prim": "CAR" }, + [ { "prim": "DIP", + "args": + [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } ], + { "prim": "CDR" }, + { "prim": "EDIV" }, + [ { "prim": "IF_NONE", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": + "division by zero" } ] }, + { "prim": "FAILWITH" } ], + [ { "prim": "CAR" } ] ] } ], + { "prim": "SWAP" }, + { "prim": "DROP" }, + { "prim": "NIL", + "args": + [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ], + [ { "prim": "PAIR" }, + { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "2" } ] }, + { "prim": "SWAP" }, + { "prim": "MUL" }, + { "prim": "SWAP" }, + { "prim": "DROP" }, + { "prim": "NIL", + "args": + [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ], + [ { "prim": "PAIR" }, { "prim": "DUP" }, + { "prim": "CAR" }, { "prim": "SWAP" }, + { "prim": "DROP" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] ] } ] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/store-value.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/store-value.michelson new file mode 100644 index 00000000..9bcfa66f --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/store-value.michelson @@ -0,0 +1,75 @@ +parameter (or (or (nat %divisor) (unit %double)) (nat %value)); + +storage nat; + +code + { + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + SWAP; # pair(params, storage).storage + CAR; # params.storage + IF_LEFT + { + IF_LEFT + { + # Entry point: divide # params.storage + PAIR; # pair(params, storage) + # sp.verify(params.divisor > 5) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CAR; # Rec(divisor = nat).pair(params, storage) + PUSH nat 5; # nat.Rec(divisor = nat).pair(params, storage) + SWAP; # Rec(divisor = nat).nat.pair(params, storage) + COMPARE; # int.pair(params, storage) + GT; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: params.divisor > 5"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # self.data.storedValue //= params.divisor # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CAR; # params.pair(params, storage) + DUUP; # pair(params, storage).nat.pair(params, storage) + CDR; # storage.nat.pair(params, storage) + EDIV; # option(pair(nat, nat)).pair(params, storage) + IF_SOME + { + CAR; # nat.pair(params, storage) + } + { + PUSH string "division by zero"; # string.pair(params, storage) + FAILWITH; # FAILED + }; # nat.pair(params, storage) + SWAP; # pair(params, storage).storage + DROP; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + } + { + # Entry point: double # params.storage + PAIR; # pair(params, storage) + # self.data.storedValue *= 2 # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # Rec(storedValue = nat).pair(params, storage) + PUSH nat 2; # nat.Rec(storedValue = nat).pair(params, storage) + SWAP; # Rec(storedValue = nat).nat.pair(params, storage) + MUL; # nat.pair(params, storage) + SWAP; # pair(params, storage).storage + DROP; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + }; # pair(operations, storage) + } + { + # Entry point: replace # params.storage + PAIR; # pair(params, storage) + # self.data.storedValue = params.value # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CAR; # params.pair(params, storage) + SWAP; # pair(params, storage).storage + DROP; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + }; # pair(operations, storage) + } # pair(operations, storage); \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/welcome.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/welcome.micheline new file mode 100644 index 00000000..34982f43 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/welcome.micheline @@ -0,0 +1,58 @@ +[ + { + "prim": "parameter", + "args": [ { "prim": "int" } ] + }, + { + "prim": "storage", + "args": [ + { + "prim": "pair", + "args": [ + { "prim": "int", "annots": [ "%myParameter1" ] }, + { "prim": "int", "annots": [ "%myParameter2" ] } + ] + } + ] + }, + { + "prim": "code", + "args": [ + [ + { "prim": "DUP" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "PUSH", "args": [ { "prim": "int" }, { "int": "123" } ] }, + { "prim": "SWAP" }, + { "prim": "COMPARE" }, + { "prim": "LE" }, + { "prim": "IF", "args": [ + [], + [ + { "prim": "PUSH", "args": [ { "prim": "string" }, { "string": "WrongCondition: self.data.myParameter1 <= 123" } ] }, + { "prim": "FAILWITH" } + ] + ] + }, + { "prim": "DUP" }, + { "prim": "CDR" }, + [ + { "prim": "DIP", "args": [ [ { "prim": "DUP" } ] ] }, + { "prim": "SWAP" } + ], + { "prim": "CAR" }, + [ { "prim": "DIP", "args": [ [ { "prim": "DUP" } ] ] }, { "prim": "SWAP" } ], + { "prim": "CAR" }, + { "prim": "ADD" }, + { "prim": "SWAP" }, + { "prim": "CDR" }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "SWAP" }, + { "prim": "DROP" }, + { "prim": "NIL", "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } + ] + ] + } + ] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/welcome.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/welcome.michelson new file mode 100644 index 00000000..4fce4598 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/smartpy/welcome.michelson @@ -0,0 +1,38 @@ +parameter int; + +storage (pair (int %myParameter1) (int %myParameter2)); + +code + { + # Entry point: myEntryPoint # pair(params, storage) + # sp.verify(self.data.myParameter1 <= 123) # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # Rec(myParameter1 = intOrNat, myParameter2 = intOrNat).pair(params, storage) + CAR; # intOrNat.pair(params, storage) + PUSH int 123; # intOrNat.intOrNat.pair(params, storage) + SWAP; # intOrNat.intOrNat.pair(params, storage) + COMPARE; # int.pair(params, storage) + LE; # bool.pair(params, storage) + IF + {} + { + PUSH string "WrongCondition: self.data.myParameter1 <= 123"; # string.pair(params, storage) + FAILWITH; # pair(params, storage) + }; # pair(params, storage) + # self.data.myParameter1 += params # pair(params, storage) + DUP; # pair(params, storage).pair(params, storage) + CDR; # storage.pair(params, storage) + DUUP; # pair(params, storage).storage.pair(params, storage) + CAR; # params.storage.pair(params, storage) + DUUP; # storage.params.storage.pair(params, storage) + CAR; # intOrNat.params.storage.pair(params, storage) + ADD; # intOrNat.storage.pair(params, storage) + SWAP; # storage.intOrNat.pair(params, storage) + CDR; # intOrNat.intOrNat.pair(params, storage) + SWAP; # intOrNat.intOrNat.pair(params, storage) + PAIR; # pair(intOrNat, intOrNat).pair(params, storage) + SWAP; # pair(params, storage).storage + DROP; # storage + NIL operation; # operations.storage + PAIR; # pair(operations, storage) + } # pair(operations, storage); \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/_readme.txt new file mode 100644 index 00000000..aa06ddce --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/_readme.txt @@ -0,0 +1,5 @@ +Sample contracts from the official teams repo on Gitlab located at tezos/test/contracts. + +Since removed. + +https://gitlab.com/tezos/tezos/tree/f9c28da17788f508dfb6d065c24a6607d41a7755/test/contracts \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/accounts.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/accounts.hex new file mode 100644 index 00000000..642a19da --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/accounts.hex @@ -0,0 +1 @@ +000003fe02000003f905000764045d0000000b25496e697469616c697a650865045c000000052566726f6d0765046a000000102577697468647261775f616d6f756e74046700000004257369670000000925576974686472617705010860035d036a0000000f3a73746f7265645f62616c616e63650502020000038603210316072e020000009703210200000025051f020000001e051f020000001704170000000f2573746f7265645f62616c616e63650321051f0200000002034c042900000011406f70745f707265765f62616c616e63650200000046072f0200000013051f0200000004031303460350053d036d034202000000270458000000114070726576696f75735f62616c616e6365031303120346034c0350053d036d034202000002df03210321032103210416000000052566726f6d0200000041051f020000003a051f0200000033020000001803170416000000102577697468647261775f616d6f756e74030c040e0000000e407369676e65645f616d6f756e74051f0200000011020000000c0317041700000004257369670318072c0200000000020000001807430368010000000d426164207369676e617475726503270200000025051f020000001e051f020000001704170000000f2573746f7265645f62616c616e636503210416000000052566726f6d042b0000000a4066726f6d5f686173680321051f020000000b051f0200000002034c034c0329072f02000000230743036801000000164163636f756e7420646f6573206e6f742065786973740342032702000001be0458000000114070726576696f75735f62616c616e6365051f020000000203200321020000002f051f0200000028051f02000000210321020000001803170416000000102577697468647261775f616d6f756e740321051f02000000180200000013031904370000000b406e6f745f656e6f756768034c072c020000001b0743036801000000104e6f7420656e6f7567682066756e647303270200000120044b0000000c406e65775f62616c616e6365051f020000000b0321051f0200000002034c03210843036a000000000005407a65726f0200000015031904250000000d406e756c6c5f62616c616e6365072c02000000160320063e036a0000000c406e65775f62616c616e6365020000001204460000000c406e65775f62616c616e6365034c0416000000052566726f6d042b0000000a4066726f6d5f686173680350034c0321020000001803170416000000102577697468647261775f616d6f756e74051f020000002e0416000000052566726f6d042b0000000a4066726f6d5f68617368041e0000000d4066726f6d5f6163636f756e74034f044d00000016407769647468647261775f7472616e736665725f6f70053d036d034c031b0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/accounts.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/accounts.micheline new file mode 100644 index 00000000..82352864 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/accounts.micheline @@ -0,0 +1,657 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"or", + "args":[ + { + "prim":"key_hash", + "annots":[ + "%Initialize" + ] + }, + { + "prim":"pair", + "args":[ + { + "prim":"key", + "annots":[ + "%from" + ] + }, + { + "prim":"pair", + "args":[ + { + "prim":"mutez", + "annots":[ + "%withdraw_amount" + ] + }, + { + "prim":"signature", + "annots":[ + "%sig" + ] + } + ] + } + ], + "annots":[ + "%Withdraw" + ] + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"map", + "args":[ + { + "prim":"key_hash" + }, + { + "prim":"mutez" + } + ], + "annots":[ + ":stored_balance" + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DUP" + }, + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR", + "annots":[ + "%stored_balance" + ] + }, + { + "prim":"DUP" + } + ] + ] + } + ] + ] + } + ], + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"GET", + "annots":[ + "@opt_prev_balance" + ] + }, + [ + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"AMOUNT" + }, + { + "prim":"SOME" + } + ] + ] + }, + { + "prim":"UPDATE" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"RENAME", + "annots":[ + "@previous_balance" + ] + }, + { + "prim":"AMOUNT" + }, + { + "prim":"ADD" + }, + { + "prim":"SOME" + }, + { + "prim":"SWAP" + }, + { + "prim":"UPDATE" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } + ] + ], + [ + { + "prim":"DUP" + }, + { + "prim":"DUP" + }, + { + "prim":"DUP" + }, + { + "prim":"DUP" + }, + { + "prim":"CAR", + "annots":[ + "%from" + ] + }, + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CAR", + "annots":[ + "%withdraw_amount" + ] + } + ], + { + "prim":"PACK" + }, + { + "prim":"BLAKE2B", + "annots":[ + "@signed_amount" + ] + } + ] + ] + } + ] + ] + } + ], + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR", + "annots":[ + "%sig" + ] + } + ] + ] + ] + }, + { + "prim":"CHECK_SIGNATURE" + }, + { + "prim":"IF", + "args":[ + [ + + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"Bad signature" + } + ] + }, + { + "prim":"FAILWITH" + } + ] + ] + }, + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR", + "annots":[ + "%stored_balance" + ] + }, + { + "prim":"DUP" + } + ] + ] + } + ] + ] + } + ], + { + "prim":"CAR", + "annots":[ + "%from" + ] + }, + { + "prim":"HASH_KEY", + "annots":[ + "@from_hash" + ] + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"Account does not exist" + } + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"FAILWITH" + } + ], + [ + { + "prim":"RENAME", + "annots":[ + "@previous_balance" + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"DUP" + }, + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + [ + { + "prim":"CDR" + }, + { + "prim":"CAR", + "annots":[ + "%withdraw_amount" + ] + } + ], + { + "prim":"DUP" + } + ] + ] + } + ] + ] + } + ], + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"COMPARE" + }, + { + "prim":"LT", + "annots":[ + "@not_enough" + ] + } + ] + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"Not enough funds" + } + ] + }, + { + "prim":"FAILWITH" + } + ], + [ + { + "prim":"SUB", + "annots":[ + "@new_balance" + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SWAP" + } + ] + ] + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"mutez" + }, + { + "int":"0" + } + ], + "annots":[ + "@zero" + ] + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"EQ", + "annots":[ + "@null_balance" + ] + } + ], + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"NONE", + "args":[ + { + "prim":"mutez" + } + ], + "annots":[ + "@new_balance" + ] + } + ], + [ + { + "prim":"SOME", + "annots":[ + "@new_balance" + ] + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR", + "annots":[ + "%from" + ] + }, + { + "prim":"HASH_KEY", + "annots":[ + "@from_hash" + ] + }, + { + "prim":"UPDATE" + }, + { + "prim":"SWAP" + }, + { + "prim":"DUP" + }, + [ + { + "prim":"CDR" + }, + { + "prim":"CAR", + "annots":[ + "%withdraw_amount" + ] + } + ], + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR", + "annots":[ + "%from" + ] + }, + { + "prim":"HASH_KEY", + "annots":[ + "@from_hash" + ] + }, + { + "prim":"IMPLICIT_ACCOUNT", + "annots":[ + "@from_account" + ] + } + ] + ] + }, + { + "prim":"UNIT" + }, + { + "prim":"TRANSFER_TOKENS", + "annots":[ + "@widthdraw_transfer_op" + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"PAIR" + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/accounts.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/accounts.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/accounts.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/accounts.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1.hex new file mode 100644 index 00000000..ccf13096 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1.hex @@ -0,0 +1 @@ +00000024020000001f0500035b0501035b0502020000001003160743035b00010312053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1.micheline new file mode 100644 index 00000000..27232f92 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1.micheline @@ -0,0 +1,10 @@ +[ { "prim": "parameter", "args": [ { "prim": "int" } ] }, + { "prim": "storage", "args": [ { "prim": "int" } ] }, + { "prim": "code", + "args": + [ [ { "prim": "CAR" }, + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "1" } ] }, + { "prim": "ADD" }, + { "prim": "NIL", "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/add1.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/add1.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1_list.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1_list.hex new file mode 100644 index 00000000..7717ab0f --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1_list.hex @@ -0,0 +1 @@ +0000002f020000002a0500055f035b0501055f035b050202000000170316053802000000080743035b00010312053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1_list.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1_list.micheline new file mode 100644 index 00000000..b5996676 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1_list.micheline @@ -0,0 +1,14 @@ +[ { "prim": "parameter", + "args": [ { "prim": "list", "args": [ { "prim": "int" } ] } ] }, + { "prim": "storage", + "args": [ { "prim": "list", "args": [ { "prim": "int" } ] } ] }, + { "prim": "code", + "args": + [ [ { "prim": "CAR" }, + { "prim": "MAP", + "args": + [ [ { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "1" } ] }, + { "prim": "ADD" } ] ] }, + { "prim": "NIL", "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/add1_list.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1_list.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/add1_list.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/add1_list.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/after_strategy.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/after_strategy.hex new file mode 100644 index 00000000..af8bfb61 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/after_strategy.hex @@ -0,0 +1 @@ +0000004702000000420500036205010765076503620359036b0502020000002b03210316051f02000000160200000004031703170321034002000000040319032a03420342053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/after_strategy.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/after_strategy.micheline new file mode 100644 index 00000000..beba2ed9 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/after_strategy.micheline @@ -0,0 +1,93 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"nat" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"nat" + }, + { + "prim":"bool" + } + ] + }, + { + "prim":"timestamp" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ], + { + "prim":"DUP" + }, + { + "prim":"NOW" + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"GT" + } + ] + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"PAIR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/after_strategy.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/after_strategy.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/after_strategy.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/after_strategy.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/always.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/always.hex new file mode 100644 index 00000000..515b8bf0 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/always.hex @@ -0,0 +1 @@ +0000002a020000002505000362050107650362035905020200000012031607430359030a034c0342053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/always.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/always.micheline new file mode 100644 index 00000000..1e0dc57b --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/always.micheline @@ -0,0 +1,64 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"nat" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"nat" + }, + { + "prim":"bool" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"True" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/always.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/always.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/always.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/always.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/append.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/append.hex new file mode 100644 index 00000000..bc0ca48c --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/append.hex @@ -0,0 +1 @@ +00000055020000005005000765055f035b055f035b0501055f035b0502020000003703160200000012020000000d03210316051f02000000020317053d035b034c05520200000002031b05520200000002031b053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/append.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/append.micheline new file mode 100644 index 00000000..4bb23cda --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/append.micheline @@ -0,0 +1,113 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"int" + } + ] + }, + { + "prim":"list", + "args":[ + { + "prim":"int" + } + ] + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"int" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CAR" + }, + [ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + } + ] + ], + { + "prim":"NIL", + "args":[ + { + "prim":"int" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"ITER", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + }, + { + "prim":"ITER", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/append.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/append.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/append.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/append.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/at_least.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/at_least.hex new file mode 100644 index 00000000..f00bcbe8 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/at_least.hex @@ -0,0 +1 @@ +0000003e02000000390500036c0501036a0502020000002a031703210313020000000403190337072c02000000090200000004034f03270200000006053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/at_least.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/at_least.micheline new file mode 100644 index 00000000..78df0d98 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/at_least.micheline @@ -0,0 +1,70 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"mutez" + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"AMOUNT" + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"LT" + } + ], + { + "prim":"IF", + "args":[ + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ], + [ + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/at_least.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/at_least.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/at_least.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/at_least.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/auction.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/auction.hex new file mode 100644 index 00000000..26faea92 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/auction.hex @@ -0,0 +1 @@ +000000b102000000ac0500035d05010765036b0765036a035d0502020000009503210200000004031703160321034002000000040319032a072c02000000090200000004034f03270200000000034c03210316051f020000000902000000040317031703130342034c051f0200000004034c0342032103160313020000000403190332072c02000000090200000004034f0327020000000003210316051f02000000040317031e034f034d053d036d034c031b0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/auction.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/auction.micheline new file mode 100644 index 00000000..92150ef0 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/auction.micheline @@ -0,0 +1,207 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"key_hash" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"timestamp" + }, + { + "prim":"pair", + "args":[ + { + "prim":"mutez" + }, + { + "prim":"key_hash" + } + ] + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + [ + { + "prim":"CDR" + }, + { + "prim":"CAR" + } + ], + { + "prim":"DUP" + }, + { + "prim":"NOW" + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"GT" + } + ], + { + "prim":"IF", + "args":[ + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ], + [ + + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ] + ] + ] + }, + { + "prim":"AMOUNT" + }, + { + "prim":"PAIR" + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"AMOUNT" + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"LE" + } + ], + { + "prim":"IF", + "args":[ + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ], + [ + + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"IMPLICIT_ACCOUNT" + } + ] + ] + }, + { + "prim":"UNIT" + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/auction.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/auction.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/auction.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/auction.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/bad_lockup.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/bad_lockup.hex new file mode 100644 index 00000000..be57a44d --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/bad_lockup.hex @@ -0,0 +1 @@ +0000008f020000008a0500036c05010765036b0765055a036c055a036c0502020000006f0317032103160340020000000403190337072c02000000090200000004034f0327020000000003210200000004031703160743036a008084af5f034f034d034c03210200000004031703170743036a008084af5f034f034d051f0200000002034c053d036d034c031b034c031b0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/bad_lockup.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/bad_lockup.micheline new file mode 100644 index 00000000..1451f011 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/bad_lockup.micheline @@ -0,0 +1,34 @@ +[ { "prim": "parameter", "args": [ { "prim": "unit" } ] }, + { "prim": "storage", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "timestamp" }, + { "prim": "pair", + "args": + [ { "prim": "contract", + "args": [ { "prim": "unit" } ] }, + { "prim": "contract", + "args": [ { "prim": "unit" } ] } ] } ] } ] }, + { "prim": "code", + "args": + [ [ { "prim": "CDR" }, { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "NOW" }, + [ { "prim": "COMPARE" }, { "prim": "LT" } ], + { "prim": "IF", + "args": + [ [ [ { "prim": "UNIT" }, { "prim": "FAILWITH" } ] ], + [] ] }, { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CAR" } ], + { "prim": "PUSH", + "args": [ { "prim": "mutez" }, { "int": "100000000" } ] }, + { "prim": "UNIT" }, { "prim": "TRANSFER_TOKENS" }, + { "prim": "SWAP" }, { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CDR" } ], + { "prim": "PUSH", + "args": [ { "prim": "mutez" }, { "int": "100000000" } ] }, + { "prim": "UNIT" }, { "prim": "TRANSFER_TOKENS" }, + { "prim": "DIP", "args": [ [ { "prim": "SWAP" } ] ] }, + { "prim": "NIL", "args": [ { "prim": "operation" } ] }, + { "prim": "SWAP" }, { "prim": "CONS" }, { "prim": "SWAP" }, + { "prim": "CONS" }, { "prim": "PAIR" } ] ] } ] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/bad_lockup.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/bad_lockup.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/bad_lockup.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/bad_lockup.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/big_map_union.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/big_map_union.hex new file mode 100644 index 00000000..c4d60ea5 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/big_map_union.hex @@ -0,0 +1 @@ +000000c402000000bf0500055f07650368035b0501076507610368035b036c050202000000a2020000002b020000000d03210316051f02000000020317051f0200000012020000000d03210316051f02000000020317055202000000630200000012020000000d03210316051f020000000203170200000014051f020000000b051f02000000020321034c034c020000000b051f02000000020321034c0329072f02000000060743035b00000200000000034c051f02000000040312034603500342053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/big_map_union.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/big_map_union.micheline new file mode 100644 index 00000000..4ea30654 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/big_map_union.micheline @@ -0,0 +1,223 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"int" + } + ] + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"big_map", + "args":[ + { + "prim":"string" + }, + { + "prim":"int" + } + ] + }, + { + "prim":"unit" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + [ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + } + ], + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + } + ] + ] + ] + } + ], + { + "prim":"ITER", + "args":[ + [ + [ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + } + ] + ], + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ], + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ], + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"int" + }, + { + "int":"0" + } + ] + } + ], + [ + + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"ADD" + }, + { + "prim":"SOME" + } + ] + ] + }, + { + "prim":"UPDATE" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/big_map_union.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/big_map_union.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/big_map_union.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/big_map_union.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cadr_annotation.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cadr_annotation.hex new file mode 100644 index 00000000..87ba2a9c --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cadr_annotation.hex @@ -0,0 +1 @@ +00000060020000005b050007650865036c046800000008256e6f5f6e616d650000000325703103590501036c0502020000003104160000000640706172616d0200000016031604170000000e406e616d6520256e6f5f6e616d650320034f053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cadr_annotation.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cadr_annotation.micheline new file mode 100644 index 00000000..3b335e43 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cadr_annotation.micheline @@ -0,0 +1,18 @@ +[ { "prim": "parameter", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "unit" }, + { "prim": "string", "annots": [ "%no_name" ] } ], + "annots": [ "%p1" ] }, { "prim": "bool" } ] } ] }, + { "prim": "storage", "args": [ { "prim": "unit" } ] }, + { "prim": "code", + "args": + [ [ { "prim": "CAR", "annots": [ "@param" ] }, + [ { "prim": "CAR" }, + { "prim": "CDR", "annots": [ "@name", "%no_name" ] } ], + { "prim": "DROP" }, { "prim": "UNIT" }, + { "prim": "NIL", "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ] ] } ] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/cadr_annotation.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cadr_annotation.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/cadr_annotation.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cadr_annotation.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/concat.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/concat.hex new file mode 100644 index 00000000..944b37f7 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/concat.hex @@ -0,0 +1 @@ +00000033020000002e05000368050103680502020000001f0321051f020000000a0317053d0368034c031b0316031b031a053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/concat.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/concat.micheline new file mode 100644 index 00000000..f46ed1bb --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/concat.micheline @@ -0,0 +1,58 @@ +[ + { "prim":"parameter", "args":[ { "prim":"string" } ] }, + { "prim":"storage", "args":[ { "prim":"string" } ] }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"string" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + } + ] + ] + }, + { + "prim":"CAR" + }, + { + "prim":"CONS" + }, + { + "prim":"CONCAT" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/concat.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/concat.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/concat.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/concat.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/conditionals.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/conditionals.hex new file mode 100644 index 00000000..ef775b7b --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/conditionals.hex @@ -0,0 +1 @@ +00000070020000006b0500076403680563035b05010368050202000000560316072e02000000000200000042072f02000000090200000004034f0327020000002d0743035b000002000000040319032a072c02000000090200000004034f03270200000009074303680100000000053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/conditionals.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/conditionals.micheline new file mode 100644 index 00000000..12e331d3 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/conditionals.micheline @@ -0,0 +1,126 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"or", + "args":[ + { + "prim":"string" + }, + { + "prim":"option", + "args":[ + { + "prim":"int" + } + ] + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"string" + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"IF_LEFT", + "args":[ + [ + + ], + [ + { + "prim":"IF_NONE", + "args":[ + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"int" + }, + { + "int":"0" + } + ] + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"GT" + } + ], + { + "prim":"IF", + "args":[ + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"" + } + ] + } + ] + ] + } + ] + ] + } + ] + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/conditionals.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/conditionals.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/conditionals.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/conditionals.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cons_twice.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cons_twice.hex new file mode 100644 index 00000000..a0960e74 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cons_twice.hex @@ -0,0 +1 @@ +000000360200000031050003620501055f03620502020000002003210316051f020000000203170321051f0200000002031b031b053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cons_twice.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cons_twice.micheline new file mode 100644 index 00000000..adb5f140 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cons_twice.micheline @@ -0,0 +1,73 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"nat" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"nat" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + }, + { + "prim":"CONS" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/cons_twice.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cons_twice.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/cons_twice.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cons_twice.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cps_fact.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cps_fact.hex new file mode 100644 index 00000000..55a175cb --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cps_fact.hex @@ -0,0 +1 @@ +000000f702000000f20500036205010362050202000000e30200000012020000000d03210316051f02000000020317051f020000002f034903540348020000002403190325072c020000000002000000140320084303620001000000084073746f726167650321074303620001020000008903190328072c02000000080320053d036d03420200000071074303620001034c044b0000000a40706172616d657465720356072f0200000006053d036d034202000000450321051f02000000160743036200010312043a000000084073746f72616765034c051f0200000019051f020000000803490743036a0000034d053d036d034c031b034c0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cps_fact.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cps_fact.micheline new file mode 100644 index 00000000..f13f9688 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cps_fact.micheline @@ -0,0 +1,268 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"nat" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"nat" + } + ] + }, + { + "prim":"code", + "args":[ + [ + [ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + } + ] + ], + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SELF" + }, + { + "prim":"ADDRESS" + }, + { + "prim":"SENDER" + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + + ], + [ + { + "prim":"DROP" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"1" + } + ], + "annots":[ + "@storage" + ] + } + ] + ] + } + ] + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"1" + } + ] + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"GE" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"1" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"SUB", + "annots":[ + "@parameter" + ] + }, + { + "prim":"ISNAT" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"1" + } + ] + }, + { + "prim":"ADD" + }, + { + "prim":"MUL", + "annots":[ + "@storage" + ] + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SELF" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"mutez" + }, + { + "int":"0" + } + ] + } + ] + ] + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + } + ] + ] + } + ] + ] + } + ] + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/cps_fact.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cps_fact.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/cps_fact.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/cps_fact.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/create_add1_lists.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/create_add1_lists.hex new file mode 100644 index 00000000..ea29de38 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/create_add1_lists.hex @@ -0,0 +1 @@ +00000090020000008b0500036c0501036e0502020000007c0320053d035b03130743035903030321053e035d0743035d0100000024747a3163786377776e7a454e52646865324b62385a645472644e793462464e7953637835051d020000002a0500055f035b0501055f035b050202000000170316053802000000080743035b00010312053d036d0342053d036d034c031b0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/create_add1_lists.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/create_add1_lists.micheline new file mode 100644 index 00000000..47631404 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/create_add1_lists.micheline @@ -0,0 +1,164 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"address" + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"int" + } + ] + }, + { + "prim":"AMOUNT" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"False" + } + ] + }, + { + "prim":"DUP" + }, + { + "prim":"NONE", + "args":[ + { + "prim":"key_hash" + } + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"key_hash" + }, + { + "string":"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + } + ] + }, + { + "prim":"CREATE_CONTRACT", + "args":[ + [ + { + "prim":"parameter", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"int" + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"int" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"MAP", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"int" + }, + { + "int":"1" + } + ] + }, + { + "prim":"ADD" + } + ] + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } + ] + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/create_add1_lists.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/create_add1_lists.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/create_add1_lists.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/create_add1_lists.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/data_publisher.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/data_publisher.hex new file mode 100644 index 00000000..6ca0cc5d --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/data_publisher.hex @@ -0,0 +1 @@ +000000b202000000ad050007650367076503680362050107650765035c036203680502020000008e03210316051f020000000403170321034c051f02000000020321020000000403160316051f020000001103210316051f02000000060317030c030e0318072c020000003c03170321051f02000000120316051f020000000902000000040316031603170743036200010312051f0200000002034c034c03420342053d036d034202000000090200000004034f0327 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/data_publisher.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/data_publisher.micheline new file mode 100644 index 00000000..b279846f --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/data_publisher.micheline @@ -0,0 +1,224 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"signature" + }, + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"nat" + } + ] + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"key" + }, + { + "prim":"nat" + } + ] + }, + { + "prim":"string" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + [ + { + "prim":"CAR" + }, + { + "prim":"CAR" + } + ], + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"PACK" + }, + { + "prim":"BLAKE2B" + } + ] + ] + } + ] + ] + }, + { + "prim":"CHECK_SIGNATURE" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CAR" + }, + { + "prim":"CAR" + } + ] + ] + ] + } + ] + ] + }, + { + "prim":"CDR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"1" + } + ] + }, + { + "prim":"ADD" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"PAIR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ] + ] + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/data_publisher.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/data_publisher.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/data_publisher.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/data_publisher.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/dispatch.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/dispatch.hex new file mode 100644 index 00000000..00b03fc7 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/dispatch.hex @@ -0,0 +1 @@ +00000092020000008d05000764036807650368075e036c036805010765036807600368075e036c0368050202000000660321051f02000000090200000004031703170316072e0200000024051f020000000203210329072f02000000090200000004034f03270200000000034f0326020000001a03210316051f02000000040317034603500743036801000000000342053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/dispatch.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/dispatch.micheline new file mode 100644 index 00000000..51843c6e --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/dispatch.micheline @@ -0,0 +1,187 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"or", + "args":[ + { + "prim":"string" + }, + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"lambda", + "args":[ + { + "prim":"unit" + }, + { + "prim":"string" + } + ] + } + ] + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"map", + "args":[ + { + "prim":"string" + }, + { + "prim":"lambda", + "args":[ + { + "prim":"unit" + }, + { + "prim":"string" + } + ] + } + ] + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ] + ] + ] + }, + { + "prim":"CAR" + }, + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ], + [ + + ] + ] + }, + { + "prim":"UNIT" + }, + { + "prim":"EXEC" + } + ], + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"SOME" + } + ] + ] + }, + { + "prim":"UPDATE" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"" + } + ] + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/dispatch.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/dispatch.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/dispatch.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/dispatch.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty.hex new file mode 100644 index 00000000..58455271 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty.hex @@ -0,0 +1 @@ +0000001c02000000170500036c0501036c050202000000080317053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty.micheline new file mode 100644 index 00000000..4d8b8d90 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty.micheline @@ -0,0 +1,39 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/empty.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/empty.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty_two.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty_two.hex new file mode 100644 index 00000000..73b20c62 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty_two.hex @@ -0,0 +1 @@ +0000001c02000000170500036805010368050202000000080316053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty_two.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty_two.micheline new file mode 100644 index 00000000..a5429418 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty_two.micheline @@ -0,0 +1,39 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"string" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"string" + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/empty_two.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty_two.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/empty_two.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/empty_two.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/fail_amount.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/fail_amount.hex new file mode 100644 index 00000000..04217df9 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/fail_amount.hex @@ -0,0 +1 @@ +0000004702000000420500036c0501036c05020200000033032003130743036a0080dac40902000000040319032a072c02000000090200000004034f03270200000000034f053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/fail_amount.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/fail_amount.micheline new file mode 100644 index 00000000..eb625534 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/fail_amount.micheline @@ -0,0 +1,82 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"AMOUNT" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"mutez" + }, + { + "int":"10000000" + } + ] + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"GT" + } + ], + { + "prim":"IF", + "args":[ + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ], + [ + + ] + ] + }, + { + "prim":"UNIT" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/fail_amount.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/fail_amount.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/fail_amount.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/fail_amount.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/faucet.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/faucet.hex new file mode 100644 index 00000000..0ee58f24 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/faucet.hex @@ -0,0 +1 @@ +00000093020000008e0500035d0501036b0502020000007f0200000012020000000d03210316051f02000000020317034c0743035b00ac0404120000001340464956455f4d494e555445535f4c415445520340020000001e020000000403190328072c020000000002000000090200000004034f0327031e0743036a0080897a034f034d053d036d034c031b051f020000000203400342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/faucet.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/faucet.micheline new file mode 100644 index 00000000..be400e2d --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/faucet.micheline @@ -0,0 +1,143 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"key_hash" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"timestamp" + } + ] + }, + { + "prim":"code", + "args":[ + [ + [ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + } + ] + ], + { + "prim":"SWAP" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"int" + }, + { + "int":"300" + } + ] + }, + { + "prim":"ADD", + "annots":[ + "@FIVE_MINUTES_LATER" + ] + }, + { + "prim":"NOW" + }, + [ + [ + { + "prim":"COMPARE" + }, + { + "prim":"GE" + } + ], + { + "prim":"IF", + "args":[ + [ + + ], + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ] + ] + } + ], + { + "prim":"IMPLICIT_ACCOUNT" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"mutez" + }, + { + "int":"1000000" + } + ] + }, + { + "prim":"UNIT" + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"NOW" + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/faucet.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/faucet.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/faucet.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/faucet.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/forward.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/forward.hex new file mode 100644 index 00000000..397ef636 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/forward.hex @@ -0,0 +1 @@ +000005ec02000005e7050007640368036205010765076503620765036a036a0765076503620765036b036b07650765036a036a07650765055a036c055a036c055a036c050202000005a60321020000000a031703170316031703170743035b0080c60a034c0312034003190337072c020000010903210316072e02000000f00321074303680100000005627579657203190325072c02000000540320032102000000080317031603170316051f020000000203130312051f020000000f03210200000008031703160317031703420743036200000342051f02000000090200000004031703170342053d036d0342020000007c07430368010000000673656c6c657203190325072c0200000054032102000000080317031603170317051f020000000203130312051f020000000f032102000000080317031603170316034c03420743036200000342051f02000000090200000004031703170342053d036d034202000000090200000004034f032702000000090200000004034f0327020000046e03150743036a0000020000001903190325072c02000000090200000004034f03270200000000032102000000080317031703160316051f02000000110321020000000a03170317031703160317033a074303620002033a031503190337072c02000000b7031703210200000006031603170316051f02000000110321020000000a03170317031703160316034f034d053d036d034c031b034c03210200000006031603170317051f02000000110321020000000a03170317031703160317034f034d034c051f0200000002031b03210200000006031603170316051f020000000d0321020000000603160317031703120315034b051f020000000f032102000000080317031703170317034f034d051f0200000002034c031b0342020000034e0321020000000a03170317031603170316034003190337072c02000000090200000004034f032702000003220321020000000a031703170316031703160743035b0080c60a0312034003190337072c02000000f003210316072e02000000d7074303680100000005627579657203190325072c02000000b0032102000000080317031603170316051f02000000020313031203210200000037051f0200000030051f0200000029032102000000080317031703160316051f02000000110321020000000a03170317031703160316033a051f02000000190319032a072c02000000090200000004034f03270200000000051f020000000f03210200000008031703160317031703420743036200000342051f02000000090200000004031703170342053d036d034202000000090200000004034f032702000000090200000004034f03270200000205032102000000080317031703160316051f02000000110321020000000a03170317031703160316033a051f020000000f0321020000000803170316031703160319033c072c020000003f0315051f02000000130321020000000c0317031703170317031603170200000010051f0200000009051f02000000020317034f034d053d036d034c031b034202000001770321020000000a031703170316031703160743035b0080c60a03120743035b0080c60a0312034003190337072c02000001010321020000000a03170317031703170317035403480319033c072c02000000090200000004034f0327020000000003210316072e02000000090200000004034f032702000000b8051f020000000d032102000000060317031603160312051f020000000d032102000000060317031603170342051f02000000090200000004031703170342034f034203210200000006031703160316051f020000000f03210200000008031703170316031603190337072c02000000060317053d036d020000003d0315051f02000000130321020000000c0317031703170317031603170200000010051f0200000009051f02000000020317034f034d053d036d034c031b0342020000003f0315051f02000000130321020000000c0317031703170317031603160200000010051f0200000009051f02000000020317034f034d053d036d034c031b0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/forward.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/forward.micheline new file mode 100644 index 00000000..a4017b35 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/forward.micheline @@ -0,0 +1,646 @@ +[ { "prim": "parameter", + "args": + [ { "prim": "or", + "args": [ { "prim": "string" }, { "prim": "nat" } ] } ] }, + { "prim": "storage", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "nat" }, + { "prim": "pair", + "args": + [ { "prim": "mutez" }, { "prim": "mutez" } ] } ] }, + { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "nat" }, + { "prim": "pair", + "args": + [ { "prim": "timestamp" }, + { "prim": "timestamp" } ] } ] }, + { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "mutez" }, + { "prim": "mutez" } ] }, + { "prim": "pair", + "args": + [ { "prim": "pair", + "args": + [ { "prim": "contract", + "args": [ { "prim": "unit" } ] }, + { "prim": "contract", + "args": [ { "prim": "unit" } ] } ] }, + { "prim": "contract", + "args": [ { "prim": "unit" } ] } ] } ] } ] } ] } ] }, + { "prim": "code", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CDR" }, { "prim": "CDR" } ], + { "prim": "PUSH", + "args": [ { "prim": "int" }, { "int": "86400" } ] }, + { "prim": "SWAP" }, { "prim": "ADD" }, { "prim": "NOW" }, + { "prim": "COMPARE" }, { "prim": "LT" }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, { "prim": "CAR" }, + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "DUP" }, + { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": "buyer" } ] }, + { "prim": "COMPARE" }, { "prim": "EQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "DROP" }, + { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" } ], + { "prim": "DIP", + "args": + [ [ { "prim": "AMOUNT" } ] ] }, + { "prim": "ADD" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] ] }, + { "prim": "PAIR" }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "0" } ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ [ { "prim": "CDR" }, + { "prim": "CDR" } ] ] ] }, + { "prim": "PAIR" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ], + [ { "prim": "PUSH", + "args": + [ { "prim": "string" }, + { "string": "seller" } ] }, + { "prim": "COMPARE" }, + { "prim": "EQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CDR" } ], + { "prim": "DIP", + "args": + [ [ { "prim": "AMOUNT" } ] ] }, + { "prim": "ADD" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" } ] ] ] }, + { "prim": "SWAP" }, + { "prim": "PAIR" }, + { "prim": "PUSH", + "args": + [ { "prim": "nat" }, + { "int": "0" } ] }, + { "prim": "PAIR" }, + { "prim": "DIP", + "args": + [ [ [ { "prim": "CDR" }, + { "prim": "CDR" } ] ] ] }, + { "prim": "PAIR" }, + { "prim": "NIL", + "args": + [ { "prim": "operation" } ] }, + { "prim": "PAIR" } ], + [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ] ] } ] ] } ], + [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ] ] } ], + [ { "prim": "BALANCE" }, + { "prim": "PUSH", + "args": [ { "prim": "mutez" }, { "int": "0" } ] }, + [ { "prim": "COMPARE" }, { "prim": "EQ" }, + { "prim": "IF", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], [] ] } ], + { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CDR" }, + { "prim": "CAR" }, { "prim": "CAR" } ], + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CDR" }, + { "prim": "CDR" }, { "prim": "CAR" }, + { "prim": "CDR" } ] ] ] }, + { "prim": "MUL" }, + { "prim": "PUSH", + "args": [ { "prim": "nat" }, { "int": "2" } ] }, + { "prim": "MUL" }, { "prim": "BALANCE" }, + { "prim": "COMPARE" }, { "prim": "LT" }, + { "prim": "IF", + "args": + [ [ { "prim": "CDR" }, { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "CAR" } ], + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CAR" } ] ] ] }, + { "prim": "UNIT" }, + { "prim": "TRANSFER_TOKENS" }, + { "prim": "NIL", + "args": [ { "prim": "operation" } ] }, + { "prim": "SWAP" }, { "prim": "CONS" }, + { "prim": "SWAP" }, { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "CDR" } ], + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" } ] ] ] }, + { "prim": "UNIT" }, + { "prim": "TRANSFER_TOKENS" }, + { "prim": "SWAP" }, + { "prim": "DIP", + "args": [ [ { "prim": "CONS" } ] ] }, + { "prim": "DUP" }, + [ { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "CAR" } ], + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] ] }, + { "prim": "ADD" }, { "prim": "BALANCE" }, + { "prim": "SUB" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CDR" } ] ] ] }, + { "prim": "UNIT" }, + { "prim": "TRANSFER_TOKENS" }, + { "prim": "DIP", + "args": [ [ { "prim": "SWAP" } ] ] }, + { "prim": "CONS" }, { "prim": "PAIR" } ], + [ { "prim": "DUP" }, + [ { "prim": "CDR" }, { "prim": "CDR" }, + { "prim": "CAR" }, { "prim": "CDR" }, + { "prim": "CAR" } ], { "prim": "NOW" }, + { "prim": "COMPARE" }, { "prim": "LT" }, + { "prim": "IF", + "args": + [ [ [ { "prim": "UNIT" }, + { "prim": "FAILWITH" } ] ], + [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, + { "int": "86400" } ] }, + { "prim": "ADD" }, { "prim": "NOW" }, + { "prim": "COMPARE" }, + { "prim": "LT" }, + { "prim": "IF", + "args": + [ [ { "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "IF_LEFT", + "args": + [ [ { "prim": "PUSH", + "args": + [ { "prim": + "string" }, + { "string": + "buyer" } ] }, + { "prim": "COMPARE" }, + { "prim": "EQ" }, + { "prim": "IF", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" }, + { "prim": + "CAR" } ], + { "prim": + "DIP", + "args": + [ [ { "prim": + "AMOUNT" } ] ] }, + { "prim": + "ADD" }, + { "prim": + "DUP" }, + [ { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CAR" } ], + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CAR" } ] ] ] }, + { "prim": + "MUL" } ] ] } ] ] } ], + { "prim": + "DIP", + "args": + [ [ { "prim": + "COMPARE" }, + { "prim": + "GT" }, + { "prim": + "IF", + "args": + [ [ [ { "prim": + "UNIT" }, + { "prim": + "FAILWITH" } ] ], + [] ] } ] ] }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" } ] ] ] }, + { "prim": + "PAIR" }, + { "prim": + "PUSH", + "args": + [ { "prim": + "nat" }, + { "int": + "0" } ] }, + { "prim": + "PAIR" }, + { "prim": + "DIP", + "args": + [ [ [ { "prim": + "CDR" }, + { "prim": + "CDR" } ] ] ] }, + { "prim": + "PAIR" }, + { "prim": + "NIL", + "args": + [ { "prim": + "operation" } ] }, + { "prim": + "PAIR" } ], + [ [ { "prim": + "UNIT" }, + { "prim": + "FAILWITH" } ] ] ] } ], + [ [ { "prim": "UNIT" }, + { "prim": + "FAILWITH" } ] ] ] } ], + [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CAR" } ], + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CAR" } ] ] ] }, + { "prim": "MUL" }, + { "prim": "DIP", + "args": + [ [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" } ] ] ] }, + { "prim": "COMPARE" }, + { "prim": "NEQ" }, + { "prim": "IF", + "args": + [ [ { "prim": "BALANCE" }, + { "prim": "DIP", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" } ] ] ] }, + [ { "prim": "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ [ { "prim": + "CDR" } ] ] } ] ] } ], + { "prim": "UNIT" }, + { "prim": + "TRANSFER_TOKENS" }, + { "prim": "NIL", + "args": + [ { "prim": + "operation" } ] }, + { "prim": "SWAP" }, + { "prim": "CONS" }, + { "prim": "PAIR" } ], + [ { "prim": "DUP" }, + [ { "prim": "CDR" }, + { "prim": "CDR" }, + { "prim": "CAR" }, + { "prim": "CDR" }, + { "prim": "CAR" } ], + { "prim": "PUSH", + "args": + [ { "prim": "int" }, + { "int": + "86400" } ] }, + { "prim": "ADD" }, + { "prim": "PUSH", + "args": + [ { "prim": "int" }, + { "int": + "86400" } ] }, + { "prim": "ADD" }, + { "prim": "NOW" }, + { "prim": "COMPARE" }, + { "prim": "LT" }, + { "prim": "IF", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" } ], + { "prim": + "ADDRESS" }, + { "prim": + "SENDER" }, + { "prim": + "COMPARE" }, + { "prim": + "NEQ" }, + { "prim": + "IF", + "args": + [ [ [ { "prim": + "UNIT" }, + { "prim": + "FAILWITH" } ] ], + [] ] }, + { "prim": + "DUP" }, + { "prim": + "CAR" }, + { "prim": + "IF_LEFT", + "args": + [ [ [ { "prim": + "UNIT" }, + { "prim": + "FAILWITH" } ] ], + [ { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CAR" } ] ] ] }, + { "prim": + "ADD" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" } ] ] ] }, + { "prim": + "PAIR" }, + { "prim": + "DIP", + "args": + [ [ [ { "prim": + "CDR" }, + { "prim": + "CDR" } ] ] ] }, + { "prim": + "PAIR" }, + { "prim": + "UNIT" }, + { "prim": + "PAIR" }, + { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CAR" } ], + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CAR" } ] ] ] }, + { "prim": + "COMPARE" }, + { "prim": + "LT" }, + { "prim": + "IF", + "args": + [ [ { "prim": + "CDR" }, + { "prim": + "NIL", + "args": + [ { "prim": + "operation" } ] } ], + [ { "prim": + "BALANCE" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CDR" } ] ] ] }, + [ { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ [ { "prim": + "CDR" } ] ] } ] ] } ], + { "prim": + "UNIT" }, + { "prim": + "TRANSFER_TOKENS" }, + { "prim": + "NIL", + "args": + [ { "prim": + "operation" } ] }, + { "prim": + "SWAP" }, + { "prim": + "CONS" } ] ] } ] ] }, + { "prim": + "PAIR" } ], + [ { "prim": + "BALANCE" }, + { "prim": + "DIP", + "args": + [ [ { "prim": + "DUP" }, + [ { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CDR" }, + { "prim": + "CAR" }, + { "prim": + "CAR" } ] ] ] }, + [ { "prim": + "DIP", + "args": + [ [ { "prim": + "DIP", + "args": + [ [ { "prim": + "CDR" } ] ] } ] ] } ], + { "prim": + "UNIT" }, + { "prim": + "TRANSFER_TOKENS" }, + { "prim": + "NIL", + "args": + [ { "prim": + "operation" } ] }, + { "prim": + "SWAP" }, + { "prim": + "CONS" }, + { "prim": + "PAIR" } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/forward.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/forward.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/forward.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/forward.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/infinite_loop.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/infinite_loop.hex new file mode 100644 index 00000000..d3918323 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/infinite_loop.hex @@ -0,0 +1 @@ +00000031020000002c0500036c0501036c0502020000001d032007430359030a0534020000000607430359030a034f053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/infinite_loop.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/infinite_loop.micheline new file mode 100644 index 00000000..3f5ad118 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/infinite_loop.micheline @@ -0,0 +1,71 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"True" + } + ] + }, + { + "prim":"LOOP", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"True" + } + ] + } + ] + ] + }, + { + "prim":"UNIT" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/infinite_loop.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/infinite_loop.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/infinite_loop.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/infinite_loop.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/insertion_sort.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/insertion_sort.hex new file mode 100644 index 00000000..3f243060 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/insertion_sort.hex @@ -0,0 +1 @@ +000000da02000000d50500055f035b0501055f035b050202000000c20316053d035b034c055202000000ad034c0200000012051f020000000b051f0200000004053d035b07430359030a05340200000078072d0200000062034c051f020000002903210200000010051f0200000009051f02000000020321051f0200000009020000000403190337034c034c072c0200000018051f020000000b034c051f0200000002031b07430359030a020000000a034c031b074303590303020000000a053d035b074303590303034c031b034c05520200000002031b053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/insertion_sort.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/insertion_sort.micheline new file mode 100644 index 00000000..859feab9 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/insertion_sort.micheline @@ -0,0 +1,269 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"int" + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"int" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"int" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"ITER", + "args":[ + [ + { + "prim":"SWAP" + }, + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"NIL", + "args":[ + { + "prim":"int" + } + ] + } + ] + ] + } + ] + ] + } + ], + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"True" + } + ] + }, + { + "prim":"LOOP", + "args":[ + [ + { + "prim":"IF_CONS", + "args":[ + [ + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + } + ] + ] + } + ], + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"COMPARE" + }, + { + "prim":"LT" + } + ] + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + } + ] + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"True" + } + ] + } + ], + [ + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"False" + } + ] + } + ] + ] + } + ], + [ + { + "prim":"NIL", + "args":[ + { + "prim":"int" + } + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"False" + } + ] + } + ] + ] + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"SWAP" + }, + { + "prim":"ITER", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + } + ] + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/insertion_sort.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/insertion_sort.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/insertion_sort.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/insertion_sort.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/int_publisher.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/int_publisher.hex new file mode 100644 index 00000000..b1091969 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/int_publisher.hex @@ -0,0 +1 @@ +000000e302000000de0500056307650367035b05010765035c035b050202000000c5032103210316072f020000003a0743036a0080897a0313020000000403190332072c02000000090200000004034f032702000000000317051f0200000009020000000403170317020000006a0321051f0200000002034c034c020000000403170316051f020000001103210316051f02000000060317030c030e0318072c02000000180317034c051f0200000002032102000000040317031603420200000016032003210317051f0200000009020000000403170317051f02000000020320053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/int_publisher.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/int_publisher.micheline new file mode 100644 index 00000000..d1c2a695 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/int_publisher.micheline @@ -0,0 +1,259 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"option", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"signature" + }, + { + "prim":"int" + } + ] + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"key" + }, + { + "prim":"int" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"mutez" + }, + { + "int":"1000000" + } + ] + }, + { + "prim":"AMOUNT" + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"LE" + } + ], + { + "prim":"IF", + "args":[ + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ], + [ + + ] + ] + }, + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ] + ] + ] + } + ], + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + [ + { + "prim":"CDR" + }, + { + "prim":"CAR" + } + ], + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"PACK" + }, + { + "prim":"BLAKE2B" + } + ] + ] + } + ] + ] + }, + { + "prim":"CHECK_SIGNATURE" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + [ + { + "prim":"CDR" + }, + { + "prim":"CAR" + } + ], + { + "prim":"PAIR" + } + ], + [ + { + "prim":"DROP" + }, + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ] + ] + ] + } + ] + ] + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/int_publisher.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/int_publisher.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/int_publisher.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/int_publisher.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/king_of_tez.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/king_of_tez.hex new file mode 100644 index 00000000..c50f3bbf --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/king_of_tez.hex @@ -0,0 +1 @@ +000000b202000000ad0500035d05010765036b0765036a035d050202000000960321020000000403170316034002000000040319032a072c020000001803160313034203400743035b0080ea4903120342053d036d020000005a032102000000060317031703160313020000000403190337072c02000000090200000004034f0327020000002d03160321051f02000000120313034203400743035b0080ea4903120342031e0313034f034d053d036d034c031b0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/king_of_tez.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/king_of_tez.micheline new file mode 100644 index 00000000..025857a9 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/king_of_tez.micheline @@ -0,0 +1,219 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"key_hash" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"timestamp" + }, + { + "prim":"pair", + "args":[ + { + "prim":"mutez" + }, + { + "prim":"key_hash" + } + ] + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + [ + { + "prim":"CDR" + }, + { + "prim":"CAR" + } + ], + { + "prim":"NOW" + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"GT" + } + ], + { + "prim":"IF", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"AMOUNT" + }, + { + "prim":"PAIR" + }, + { + "prim":"NOW" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"int" + }, + { + "int":"604800" + } + ] + }, + { + "prim":"ADD" + }, + { + "prim":"PAIR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + } + ], + [ + { + "prim":"DUP" + }, + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + } + ], + { + "prim":"AMOUNT" + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"LT" + } + ], + { + "prim":"IF", + "args":[ + [ + [ + { + "prim":"UNIT" + }, + { + "prim":"FAILWITH" + } + ] + ], + [ + { + "prim":"CAR" + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"AMOUNT" + }, + { + "prim":"PAIR" + }, + { + "prim":"NOW" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"int" + }, + { + "int":"604800" + } + ] + }, + { + "prim":"ADD" + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"IMPLICIT_ACCOUNT" + }, + { + "prim":"AMOUNT" + }, + { + "prim":"UNIT" + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + } + ] + ] + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/king_of_tez.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/king_of_tez.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/king_of_tez.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/king_of_tez.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/list_of_transactions.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/list_of_transactions.hex new file mode 100644 index 00000000..5ba36fcf --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/list_of_transactions.hex @@ -0,0 +1 @@ +0000006d02000000680500036c0501055f055a036c0502020000005503170321051f0200000004053d036d07430359030a05340200000035072d020000001d0743036a0080897a034f034d034c051f0200000002031b07430359030a020000000c053d055a036c07430359030303200342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/list_of_transactions.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/list_of_transactions.micheline new file mode 100644 index 00000000..373e27ff --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/list_of_transactions.micheline @@ -0,0 +1,154 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"contract", + "args":[ + { + "prim":"unit" + } + ] + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + } + ] + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"True" + } + ] + }, + { + "prim":"LOOP", + "args":[ + [ + { + "prim":"IF_CONS", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"mutez" + }, + { + "int":"1000000" + } + ] + }, + { + "prim":"UNIT" + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"True" + } + ] + } + ], + [ + { + "prim":"NIL", + "args":[ + { + "prim":"contract", + "args":[ + { + "prim":"unit" + } + ] + } + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"False" + } + ] + } + ] + ] + } + ] + ] + }, + { + "prim":"DROP" + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/list_of_transactions.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/list_of_transactions.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/list_of_transactions.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/list_of_transactions.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/queue.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/queue.hex new file mode 100644 index 00000000..1012ad10 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/queue.hex @@ -0,0 +1 @@ +00000114020000010f05000563036805010765056303680765076503620362076003620368050202000000ec03210316072f020000008002000000040317031703210316051f02000000040317032103210316034c051f02000000020329034c072f020000000f053e0368051f020000000203420342020000003c0346051f02000000310321051f020000000f0316051f0200000004053e03680350032103160743036200010312051f020000000203170342034203420200000056051f020000002103210200000006031703170316051f020000000b02000000060317031703170321034c0316051f02000000190346034c03170321051f02000000020350074303620001031203420342053e03680342053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/queue.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/queue.micheline new file mode 100644 index 00000000..e1b72b85 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/queue.micheline @@ -0,0 +1,360 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"option", + "args":[ + { + "prim":"string" + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"option", + "args":[ + { + "prim":"string" + } + ] + }, + { + "prim":"pair", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"nat" + }, + { + "prim":"nat" + } + ] + }, + { + "prim":"map", + "args":[ + { + "prim":"nat" + }, + { + "prim":"string" + } + ] + } + ] + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"IF_NONE", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ], + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"GET" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"NONE", + "args":[ + { + "prim":"string" + } + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"SOME" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"NONE", + "args":[ + { + "prim":"string" + } + ] + } + ] + ] + }, + { + "prim":"UPDATE" + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"1" + } + ] + }, + { + "prim":"ADD" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + } + ], + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + } + ], + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ] + ] + ] + }, + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SOME" + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"UPDATE" + } + ] + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"1" + } + ] + }, + { + "prim":"ADD" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"PAIR" + }, + { + "prim":"NONE", + "args":[ + { + "prim":"string" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/queue.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/queue.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/queue.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/queue.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reduce_map.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reduce_map.hex new file mode 100644 index 00000000..b1607630 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reduce_map.hex @@ -0,0 +1 @@ +000000a1020000009c05000765075e035b035b055f035b0501055f035b05020200000081051f0200000004053d035b03160321051f02000000040316034203170552020000004203420321020000000403170316051f020000002c0321051f020000000902000000040317031603210316051f020000000b020000000403170317034c0326031b03420317051f0200000004053d035b05520200000002031b053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reduce_map.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reduce_map.micheline new file mode 100644 index 00000000..0dbfca5f --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reduce_map.micheline @@ -0,0 +1,206 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"lambda", + "args":[ + { + "prim":"int" + }, + { + "prim":"int" + } + ] + }, + { + "prim":"list", + "args":[ + { + "prim":"int" + } + ] + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"int" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"NIL", + "args":[ + { + "prim":"int" + } + ] + } + ] + ] + }, + { + "prim":"CAR" + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"CDR" + }, + { + "prim":"ITER", + "args":[ + [ + { + "prim":"PAIR" + }, + { + "prim":"DUP" + }, + [ + { + "prim":"CDR" + }, + { + "prim":"CAR" + } + ], + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CAR" + } + ] + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ], + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"EXEC" + }, + { + "prim":"CONS" + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"NIL", + "args":[ + { + "prim":"int" + } + ] + } + ] + ] + }, + { + "prim":"ITER", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/reduce_map.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reduce_map.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/reduce_map.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reduce_map.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reentrancy.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reentrancy.hex new file mode 100644 index 00000000..03380242 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reentrancy.hex @@ -0,0 +1 @@ +0000006b02000000660500036c05010765055a036c055a036c0502020000004f0317032103160743036a0080ade204034f034d051f0200000011032103170743036a0080ade204034f034d0200000012051f020000000b051f0200000004053d036d051f0200000002031b031b0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reentrancy.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reentrancy.micheline new file mode 100644 index 00000000..5cb1ae9d --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reentrancy.micheline @@ -0,0 +1,139 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"contract", + "args":[ + { + "prim":"unit" + } + ] + }, + { + "prim":"contract", + "args":[ + { + "prim":"unit" + } + ] + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"mutez" + }, + { + "int":"5000000" + } + ] + }, + { + "prim":"UNIT" + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"mutez" + }, + { + "int":"5000000" + } + ] + }, + { + "prim":"UNIT" + }, + { + "prim":"TRANSFER_TOKENS" + } + ] + ] + }, + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + } + ] + ] + } + ] + ] + } + ], + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + }, + { + "prim":"CONS" + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/reentrancy.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reentrancy.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/reentrancy.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/reentrancy.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/spawn_identities.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/spawn_identities.hex new file mode 100644 index 00000000..8cfffea1 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/spawn_identities.hex @@ -0,0 +1 @@ +0000010202000000fd050003620501055f036e050202000000ec03210316051f02000000060317053d036d07430359030a053402000000ca0321074303620000020000000403190325072c020000000607430359030302000000a7074303620001034c034b0311074303680100000004696e69740743036a0080ade2040743035903030321053e035d0743035d0100000024747a3163786377776e7a454e52646865324b62385a645472644e793462464e7953637835051d02000000170500036805010368050202000000080316053d036d0342034c051f020000000b034c051f0200000002031b034c051f020000000b034c051f0200000002031b07430359030a03200342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/spawn_identities.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/spawn_identities.micheline new file mode 100644 index 00000000..b90c98c5 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/spawn_identities.micheline @@ -0,0 +1,296 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"nat" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"list", + "args":[ + { + "prim":"address" + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + } + ] + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"True" + } + ] + }, + { + "prim":"LOOP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"0" + } + ] + }, + [ + { + "prim":"COMPARE" + }, + { + "prim":"EQ" + } + ], + { + "prim":"IF", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"False" + } + ] + } + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"1" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"SUB" + }, + { + "prim":"ABS" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"init" + } + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"mutez" + }, + { + "int":"5000000" + } + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"False" + } + ] + }, + { + "prim":"DUP" + }, + { + "prim":"NONE", + "args":[ + { + "prim":"key_hash" + } + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"key_hash" + }, + { + "string":"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" + } + ] + }, + { + "prim":"CREATE_CONTRACT", + "args":[ + [ + { + "prim":"parameter", + "args":[ + { + "prim":"string" + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"string" + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CONS" + } + ] + ] + } + ] + ] + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"True" + } + ] + } + ] + ] + } + ] + ] + }, + { + "prim":"DROP" + }, + { + "prim":"PAIR" + } + ] + ] + } +] \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/spawn_identities.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/spawn_identities.michelson similarity index 100% rename from test/chain/tezos/lexer/samples/spawn_identities.michelson rename to ConseilJS-core/test/chain/tezos/lexer/samples/tezos-samples-201903/spawn_identities.michelson diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/ManagedLedger.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/ManagedLedger.hex new file mode 100644 index 00000000..2bf8718a --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/ManagedLedger.hex @@ -0,0 +1 @@ +000011460200001141050007640865046e000000053a66726f6d0765046e000000033a746f0462000000063a76616c756500000009257472616e7366657207640865046e000000083a7370656e6465720462000000063a76616c75650000000825617070726f7665076408650765046e000000063a6f776e6572046e000000083a7370656e646572055a04620000000a3a72656d61696e696e670000000d25676574416c6c6f77616e636507640865046e000000063a6f776e6572055a0462000000083a62616c616e63650000000b2567657442616c616e636507640865036c055a04620000000c3a746f74616c537570706c790000000f25676574546f74616c537570706c7907640459000000092573657450617573650764046e000000112573657441646d696e6973747261746f7207640865036c055a046e0000000e3a61646d696e6973747261746f72000000112567657441646d696e6973747261746f7207640865046e000000033a746f0462000000063a76616c756500000005256d696e740865046e000000053a66726f6d0462000000063a76616c756500000005256275726e050107650761036e076503620760036e03620765036e07650359036205020200000f8103210316051f02000000020317072e0200000648051f020000003a0321031703170316072c0200000026074307650368036c070701000000134f7065726174696f6e73417265506175736564030b03270200000000032103170316051f0200000004032103160557036e03190325072c0200000002032002000005da03210316051f020000000b051f02000000020321034c034803190325072c02000000080320074303590303020000000a0317031603480319033c072c02000001df0321051f02000001d60321051f020000004f051f020000000203210316034803420321051f02000000210317051f020000000203160329072f02000000060723036e03620200000002031703160329072f0200000006074303620000020000000003210316051f02000000700348051f0200000065032103170317051f020000000b051f02000000020321034c034c034b0356072f020000003b051f02000000020321034c051f02000000020321034c0317031703420743036801000000124e6f74456e6f756768416c6c6f77616e636503420327020000000003420342051f020000000403200320051f020000000403210316034c051f020000000403210316034c0329072f020000001b074303620000051f02000000060723036e036203420723036e0362020000000403210317051f020000000b051f02000000020321034c034c03170317032103300325072c02000000060320053e036202000000020346051f0200000014051f020000000b051f02000000020321034c034c034c031703160350051f020000000d0321051f020000000203160317051f02000000020320034c03420346034c0316051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f0200000002032003420200000000051f02000000020321034c0316051f02000000020321034c031703160329072f020000003903210317031703300325072c020000000c053e076503620760036e03620200000017032103170317051f02000000060723036e036203420346020000003d051f02000000020321034c03170317051f0200000004032103160312051f020000000d0321051f020000000203170316051f0200000002032003420346034c051f020000000b051f0200000004032103160321051f0200000025031703160350051f020000000d0321051f020000000203170316051f0200000002032003420321051f02000000b5031703170330051f020000000a0321031703210317031703120356072f0200000034074303680100000029556e6578706563746564206661696c7572653a204e6567617469766520746f74616c20737570706c7903270200000000051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c0342051f02000000020321034c0316051f02000000020321034c03160329072f020000002b03170317074303620000034c03420743036801000000104e6f74456e6f75676842616c616e636503420327020000000003210316051f020000000b051f02000000020321034c034c03170317034c034b0356072f02000000300316051f02000000020321034c0317031703420743036801000000104e6f74456e6f75676842616c616e6365034203270200000000051f020000000d0321051f020000000203170316051f020000000203200342051f02000000020321034c051f02000000730321031603300325072c020000002603210317034503300325072c020000000e0320053e076503620760036e03620200000002034602000000020346034c0316051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f0200000002032003420321051f02000000b503170317033b051f020000000a0321031703210317031703120356072f0200000034074303680100000029556e6578706563746564206661696c7572653a204e6567617469766520746f74616c20737570706c7903270200000000051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c03420320053d036d03420200000920072e02000001f0051f020000003a0321031703170316072c0200000026074307650368036c070701000000134f7065726174696f6e73417265506175736564030b0327020000000003480342051f02000000020321034c051f02000000020321034c0321051f02000000210316051f020000000203160329072f02000000060723036e036202000000020317031703160329072f02000000060743036200000200000000032103300325072c020000000203200200000043051f02000000020321034c0317031703300325072c020000000203200200000022074303680100000015556e73616665416c6c6f77616e63654368616e676503420327051f020000000403210316034c051f020000000403210316034c0329072f020000001b074303620000051f02000000060723036e036203420723036e0362020000000403210317051f020000000b051f02000000020321034c034c03170317032103300325072c02000000060320053e036202000000020346051f0200000014051f020000000b051f02000000020321034c034c034c031703160350051f020000000d0321051f020000000203160317051f02000000020320034c03420346034c0316051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f020000000203200342053d036d03420200000724072e020000008303210316051f02000000020317051f020000000b051f02000000020321034c034203210316051f020000000203170321051f02000000210316051f020000000203160329072f02000000060723036e03620200000002031703170329072f02000000060743036200000200000000051f02000000020313034d053d036d034c031b03420200000695072e020000006203210316051f02000000020317051f020000000b051f02000000020321034c034203210316051f02000000020317051f020000000203160329072f020000000607430362000002000000020316051f02000000020313034d053d036d034c031b03420200000627072e020000003e03210316051f02000000020317051f020000000b051f02000000020321034c03420317031703170317051f02000000020313034d053d036d034c031b034202000005dd072e02000000ab051f020000003b032103170316034803190325072c02000000000200000023074307650368036c0707010000001053656e64657249734e6f7441646d696e030b0327051f020000000403210317051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203170316051f020000000203200342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c0342053d036d03420200000526072e0200000093051f020000003b032103170316034803190325072c02000000000200000023074307650368036c0707010000001053656e64657249734e6f7441646d696e030b0327051f020000000403210317051f020000000d0321051f020000000203170316051f020000000203200342051f020000000d0321051f020000000203160317051f02000000020320034c0342053d036d03420200000487072e020000003c03210316051f02000000020317051f020000000b051f02000000020321034c0342031703170316051f02000000020313034d053d036d034c031b0342020000043f072e02000001de051f020000003b032103170316034803190325072c02000000000200000023074307650368036c0707010000001053656e64657249734e6f7441646d696e030b0327051f02000000020321034c0316051f02000000020321034c03160329072f02000000350321031703300325072c020000000c053e076503620760036e0362020000001503210317051f02000000060723036e036203420346020000003b051f02000000020321034c0317051f0200000004032103160312051f020000000d0321051f020000000203170316051f0200000002032003420346034c051f020000000b051f0200000004032103160321051f020000002303160350051f020000000d0321051f020000000203170316051f0200000002032003420321051f02000000b303170330051f020000000a0321031703210317031703120356072f0200000034074303680100000029556e6578706563746564206661696c7572653a204e6567617469766520746f74616c20737570706c7903270200000000051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c03420320053d036d03420200000255051f020000003b032103170316034803190325072c02000000000200000023074307650368036c0707010000001053656e64657249734e6f7441646d696e030b0327051f02000000020321034c0316051f02000000020321034c03160329072f02000000290317074303620000034c03420743036801000000104e6f74456e6f75676842616c616e636503420327020000000003210316051f020000000b051f02000000020321034c034c0317034c034b0356072f020000002e0316051f02000000020321034c031703420743036801000000104e6f74456e6f75676842616c616e6365034203270200000000051f020000000d0321051f020000000203170316051f020000000203200342051f02000000020321034c051f02000000730321031603300325072c020000002603210317034503300325072c020000000e0320053e076503620760036e03620200000002034602000000020346034c0316051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f0200000002032003420321051f02000000b30317033b051f020000000a0321031703210317031703120356072f0200000034074303680100000029556e6578706563746564206661696c7572653a204e6567617469766520746f74616c20737570706c7903270200000000051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c03420320053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/ManagedLedger.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/ManagedLedger.micheline new file mode 100644 index 00000000..ee823e77 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/ManagedLedger.micheline @@ -0,0 +1,4701 @@ +[ + { + "prim":"parameter", + "args":[ + { + "prim":"or", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"address", + "annots":[ + ":from" + ] + }, + { + "prim":"pair", + "args":[ + { + "prim":"address", + "annots":[ + ":to" + ] + }, + { + "prim":"nat", + "annots":[ + ":value" + ] + } + ] + } + ], + "annots":[ + "%transfer" + ] + }, + { + "prim":"or", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"address", + "annots":[ + ":spender" + ] + }, + { + "prim":"nat", + "annots":[ + ":value" + ] + } + ], + "annots":[ + "%approve" + ] + }, + { + "prim":"or", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"address", + "annots":[ + ":owner" + ] + }, + { + "prim":"address", + "annots":[ + ":spender" + ] + } + ] + }, + { + "prim":"contract", + "args":[ + { + "prim":"nat", + "annots":[ + ":remaining" + ] + } + ] + } + ], + "annots":[ + "%getAllowance" + ] + }, + { + "prim":"or", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"address", + "annots":[ + ":owner" + ] + }, + { + "prim":"contract", + "args":[ + { + "prim":"nat", + "annots":[ + ":balance" + ] + } + ] + } + ], + "annots":[ + "%getBalance" + ] + }, + { + "prim":"or", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"unit" + }, + { + "prim":"contract", + "args":[ + { + "prim":"nat", + "annots":[ + ":totalSupply" + ] + } + ] + } + ], + "annots":[ + "%getTotalSupply" + ] + }, + { + "prim":"or", + "args":[ + { + "prim":"bool", + "annots":[ + "%setPause" + ] + }, + { + "prim":"or", + "args":[ + { + "prim":"address", + "annots":[ + "%setAdministrator" + ] + }, + { + "prim":"or", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"unit" + }, + { + "prim":"contract", + "args":[ + { + "prim":"address", + "annots":[ + ":administrator" + ] + } + ] + } + ], + "annots":[ + "%getAdministrator" + ] + }, + { + "prim":"or", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"address", + "annots":[ + ":to" + ] + }, + { + "prim":"nat", + "annots":[ + ":value" + ] + } + ], + "annots":[ + "%mint" + ] + }, + { + "prim":"pair", + "args":[ + { + "prim":"address", + "annots":[ + ":from" + ] + }, + { + "prim":"nat", + "annots":[ + ":value" + ] + } + ], + "annots":[ + "%burn" + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "prim":"storage", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"big_map", + "args":[ + { + "prim":"address" + }, + { + "prim":"pair", + "args":[ + { + "prim":"nat" + }, + { + "prim":"map", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ] + } + ] + }, + { + "prim":"pair", + "args":[ + { + "prim":"address" + }, + { + "prim":"pair", + "args":[ + { + "prim":"bool" + }, + { + "prim":"nat" + } + ] + } + ] + } + ] + } + ] + }, + { + "prim":"code", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"unit" + } + ] + }, + { + "prim":"Pair", + "args":[ + { + "string":"OperationsArePaused" + }, + { + "prim":"Unit" + } + ] + } + ] + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CAST", + "args":[ + { + "prim":"address" + } + ] + }, + { + "prim":"COMPARE" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + } + ], + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SENDER" + }, + { + "prim":"COMPARE" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"bool" + }, + { + "prim":"False" + } + ] + } + ], + [ + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"SENDER" + }, + { + "prim":"COMPARE" + }, + { + "prim":"NEQ" + } + ] + ] + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"CAR" + }, + { + "prim":"SENDER" + }, + { + "prim":"PAIR" + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"EMPTY_MAP", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ], + [ + { + "prim":"CDR" + } + ] + ] + } + ] + ] + }, + { + "prim":"CAR" + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"0" + } + ] + } + ], + [ + + ] + ] + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"SENDER" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"SUB" + }, + { + "prim":"ISNAT" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"PAIR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"NotEnoughAllowance" + } + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"0" + } + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"EMPTY_MAP", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"EMPTY_MAP", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ], + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"NONE", + "args":[ + { + "prim":"nat" + } + ] + } + ], + [ + { + "prim":"SOME" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"UPDATE" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"SOME" + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + } + ] + ] + }, + { + "prim":"UPDATE" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + } + ], + [ + + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"NONE", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"nat" + }, + { + "prim":"map", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ] + } + ] + } + ], + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"EMPTY_MAP", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"SOME" + } + ] + ] + } + ], + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"ADD" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"SOME" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"UPDATE" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"INT" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"ADD" + }, + { + "prim":"ISNAT" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"Unexpected failure: Negative total supply" + } + ] + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"0" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"NotEnoughBalance" + } + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"SWAP" + }, + { + "prim":"SUB" + }, + { + "prim":"ISNAT" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"PAIR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"NotEnoughBalance" + } + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"SIZE" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"NONE", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"nat" + }, + { + "prim":"map", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ] + } + ] + } + ], + [ + { + "prim":"SOME" + } + ] + ] + } + ], + [ + { + "prim":"SOME" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + } + ] + ] + }, + { + "prim":"UPDATE" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"NEG" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"ADD" + }, + { + "prim":"ISNAT" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"Unexpected failure: Negative total supply" + } + ] + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"unit" + } + ] + }, + { + "prim":"Pair", + "args":[ + { + "string":"OperationsArePaused" + }, + { + "prim":"Unit" + } + ] + } + ] + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + } + ] + ] + }, + { + "prim":"SENDER" + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"EMPTY_MAP", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ], + [ + { + "prim":"CDR" + } + ] + ] + } + ] + ] + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"0" + } + ] + } + ], + [ + + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + } + ], + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + } + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"UnsafeAllowanceChange" + } + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"FAILWITH" + } + ] + ] + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"0" + } + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"EMPTY_MAP", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"EMPTY_MAP", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ], + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"NONE", + "args":[ + { + "prim":"nat" + } + ] + } + ], + [ + { + "prim":"SOME" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"UPDATE" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"SOME" + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + } + ] + ] + }, + { + "prim":"UPDATE" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"EMPTY_MAP", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ], + [ + { + "prim":"CDR" + } + ] + ] + } + ] + ] + }, + { + "prim":"CDR" + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"0" + } + ] + } + ], + [ + + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"AMOUNT" + } + ] + ] + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"0" + } + ] + } + ], + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"AMOUNT" + } + ] + ] + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"AMOUNT" + } + ] + ] + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"SENDER" + }, + { + "prim":"COMPARE" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"unit" + } + ] + }, + { + "prim":"Pair", + "args":[ + { + "string":"SenderIsNotAdmin" + }, + { + "prim":"Unit" + } + ] + } + ] + }, + { + "prim":"FAILWITH" + } + ] + ] + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"SENDER" + }, + { + "prim":"COMPARE" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"unit" + } + ] + }, + { + "prim":"Pair", + "args":[ + { + "string":"SenderIsNotAdmin" + }, + { + "prim":"Unit" + } + ] + } + ] + }, + { + "prim":"FAILWITH" + } + ] + ] + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"AMOUNT" + } + ] + ] + }, + { + "prim":"TRANSFER_TOKENS" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CONS" + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"IF_LEFT", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"SENDER" + }, + { + "prim":"COMPARE" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"unit" + } + ] + }, + { + "prim":"Pair", + "args":[ + { + "string":"SenderIsNotAdmin" + }, + { + "prim":"Unit" + } + ] + } + ] + }, + { + "prim":"FAILWITH" + } + ] + ] + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"NONE", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"nat" + }, + { + "prim":"map", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ] + } + ] + } + ], + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"EMPTY_MAP", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"SOME" + } + ] + ] + } + ], + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"ADD" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"SOME" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"UPDATE" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"INT" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"ADD" + }, + { + "prim":"ISNAT" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"Unexpected failure: Negative total supply" + } + ] + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"DROP" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ], + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CAR" + }, + { + "prim":"SENDER" + }, + { + "prim":"COMPARE" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + + ], + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"string" + }, + { + "prim":"unit" + } + ] + }, + { + "prim":"Pair", + "args":[ + { + "string":"SenderIsNotAdmin" + }, + { + "prim":"Unit" + } + ] + } + ] + }, + { + "prim":"FAILWITH" + } + ] + ] + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"GET" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"nat" + }, + { + "int":"0" + } + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"NotEnoughBalance" + } + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"SWAP" + }, + { + "prim":"SUB" + }, + { + "prim":"ISNAT" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CDR" + }, + { + "prim":"PAIR" + }, + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"NotEnoughBalance" + } + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"SIZE" + }, + { + "prim":"INT" + }, + { + "prim":"EQ" + }, + { + "prim":"IF", + "args":[ + [ + { + "prim":"DROP" + }, + { + "prim":"NONE", + "args":[ + { + "prim":"pair", + "args":[ + { + "prim":"nat" + }, + { + "prim":"map", + "args":[ + { + "prim":"address" + }, + { + "prim":"nat" + } + ] + } + ] + } + ] + } + ], + [ + { + "prim":"SOME" + } + ] + ] + } + ], + [ + { + "prim":"SOME" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"CAR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CAR" + } + ] + ] + } + ] + ] + }, + { + "prim":"UPDATE" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CDR" + }, + { + "prim":"NEG" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"DUP" + }, + { + "prim":"CDR" + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"ADD" + }, + { + "prim":"ISNAT" + }, + { + "prim":"IF_NONE", + "args":[ + [ + { + "prim":"PUSH", + "args":[ + { + "prim":"string" + }, + { + "string":"Unexpected failure: Negative total supply" + } + ] + }, + { + "prim":"FAILWITH" + } + ], + [ + + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DUP" + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"CAR" + } + ] + ] + }, + { + "prim":"CDR" + } + ] + ] + }, + { + "prim":"DIP", + "args":[ + [ + { + "prim":"DROP" + } + ] + ] + }, + { + "prim":"SWAP" + }, + { + "prim":"PAIR" + } + ] + ] + }, + { + "prim":"DROP" + }, + { + "prim":"NIL", + "args":[ + { + "prim":"operation" + } + ] + }, + { + "prim":"PAIR" + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + ] + } + ] + ] + } +] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/ManagedLedger.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/ManagedLedger.michelson new file mode 100644 index 00000000..36f905ff --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/ManagedLedger.michelson @@ -0,0 +1,593 @@ +parameter + (or (pair %transfer (address :from) (pair (address :to) (nat :value))) + (or (pair %approve (address :spender) (nat :value)) + (or (pair %getAllowance + (pair (address :owner) (address :spender)) + (contract (nat :remaining))) + (or (pair %getBalance (address :owner) (contract (nat :balance))) + (or (pair %getTotalSupply unit (contract (nat :totalSupply))) + (or (bool %setPause) + (or (address %setAdministrator) + (or (pair %getAdministrator unit (contract (address :administrator))) + (or (pair %mint (address :to) (nat :value)) + (pair %burn (address :from) (nat :value))))))))))); +storage + (pair (big_map address (pair nat (map address nat))) (pair address (pair bool nat))); +code { DUP ; + CAR ; + DIP { CDR } ; + IF_LEFT + { DIP { DUP ; + CDR ; + CDR ; + CAR ; + IF { PUSH (pair string unit) (Pair "OperationsArePaused" Unit) ; FAILWITH } {} } ; + DUP ; + CDR ; + CAR ; + DIP { DUP ; CAR } ; + CAST address ; + COMPARE ; + EQ ; + IF { DROP } + { DUP ; + CAR ; + DIP { DIP { DUP } ; SWAP } ; + SENDER ; + COMPARE ; + EQ ; + IF { DROP ; PUSH bool False } { CDR ; CAR ; SENDER ; COMPARE ; NEQ } ; + IF { DUP ; + DIP { DUP ; + DIP { DIP { DUP } ; + CAR ; + SENDER ; + PAIR ; + DUP ; + DIP { CDR ; + DIP { CAR } ; + GET ; + IF_NONE { EMPTY_MAP address nat } { CDR } } ; + CAR ; + GET ; + IF_NONE { PUSH nat 0 } {} } ; + DUP ; + CAR ; + DIP { SENDER ; + DIP { DUP ; + CDR ; + CDR ; + DIP { DIP { DUP } ; SWAP } ; + SWAP ; + SUB ; + ISNAT ; + IF_NONE + { DIP { DUP } ; + SWAP ; + DIP { DUP } ; + SWAP ; + CDR ; + CDR ; + PAIR ; + PUSH string "NotEnoughAllowance" ; + PAIR ; + FAILWITH } + {} } ; + PAIR } ; + PAIR ; + DIP { DROP ; DROP } ; + DIP { DUP ; CAR } ; + SWAP ; + DIP { DUP ; CAR } ; + SWAP ; + GET ; + IF_NONE + { PUSH nat 0 ; + DIP { EMPTY_MAP address nat } ; + PAIR ; + EMPTY_MAP address nat } + { DUP ; CDR } ; + DIP { DIP { DUP } ; SWAP } ; + SWAP ; + CDR ; + CDR ; + DUP ; + INT ; + EQ ; + IF { DROP ; NONE nat } { SOME } ; + DIP { DIP { DIP { DUP } ; SWAP } ; SWAP } ; + SWAP ; + CDR ; + CAR ; + UPDATE ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR ; + SOME ; + SWAP ; + CAR ; + DIP { DIP { DUP ; CAR } } ; + UPDATE ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR } } + {} ; + DIP { DUP } ; + SWAP ; + CAR ; + DIP { DUP } ; + SWAP ; + CDR ; + CAR ; + GET ; + IF_NONE + { DUP ; + CDR ; + CDR ; + INT ; + EQ ; + IF { NONE (pair nat (map address nat)) } + { DUP ; CDR ; CDR ; DIP { EMPTY_MAP address nat } ; PAIR ; SOME } } + { DIP { DUP } ; + SWAP ; + CDR ; + CDR ; + DIP { DUP ; CAR } ; + ADD ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR ; + SOME } ; + SWAP ; + DIP { DIP { DUP ; CAR } } ; + DUP ; + DIP { CDR ; + CAR ; + UPDATE ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR } ; + DUP ; + DIP { CDR ; + CDR ; + INT ; + DIP { DUP ; CDR ; DUP ; CDR ; CDR } ; + ADD ; + ISNAT ; + IF_NONE + { PUSH string + "Unexpected failure: Negative total supply" ; + FAILWITH } + {} ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR } ; + DIP { DUP } ; + SWAP ; + CAR ; + DIP { DUP } ; + SWAP ; + CAR ; + GET ; + IF_NONE + { CDR ; + CDR ; + PUSH nat 0 ; + SWAP ; + PAIR ; + PUSH string "NotEnoughBalance" ; + PAIR ; + FAILWITH } + {} ; + DUP ; + CAR ; + DIP { DIP { DUP } ; SWAP } ; + SWAP ; + CDR ; + CDR ; + SWAP ; + SUB ; + ISNAT ; + IF_NONE + { CAR ; + DIP { DUP } ; + SWAP ; + CDR ; + CDR ; + PAIR ; + PUSH string "NotEnoughBalance" ; + PAIR ; + FAILWITH } + {} ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR ; + DIP { DUP } ; + SWAP ; + DIP { DUP ; + CAR ; + INT ; + EQ ; + IF { DUP ; + CDR ; + SIZE ; + INT ; + EQ ; + IF { DROP ; NONE (pair nat (map address nat)) } { SOME } } + { SOME } ; + SWAP ; + CAR ; + DIP { DIP { DUP ; CAR } } ; + UPDATE ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR } ; + DUP ; + DIP { CDR ; + CDR ; + NEG ; + DIP { DUP ; CDR ; DUP ; CDR ; CDR } ; + ADD ; + ISNAT ; + IF_NONE + { PUSH string + "Unexpected failure: Negative total supply" ; + FAILWITH } + {} ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR } ; + DROP } ; + NIL operation ; + PAIR } + { IF_LEFT + { DIP { DUP ; + CDR ; + CDR ; + CAR ; + IF { PUSH (pair string unit) (Pair "OperationsArePaused" Unit) ; FAILWITH } {} } ; + SENDER ; + PAIR ; + DIP { DUP } ; + SWAP ; + DIP { DUP } ; + SWAP ; + DUP ; + DIP { CAR ; + DIP { CAR } ; + GET ; + IF_NONE { EMPTY_MAP address nat } { CDR } } ; + CDR ; + CAR ; + GET ; + IF_NONE { PUSH nat 0 } {} ; + DUP ; + INT ; + EQ ; + IF { DROP } + { DIP { DUP } ; + SWAP ; + CDR ; + CDR ; + INT ; + EQ ; + IF { DROP } { PUSH string "UnsafeAllowanceChange" ; PAIR ; FAILWITH } } ; + DIP { DUP ; CAR } ; + SWAP ; + DIP { DUP ; CAR } ; + SWAP ; + GET ; + IF_NONE + { PUSH nat 0 ; + DIP { EMPTY_MAP address nat } ; + PAIR ; + EMPTY_MAP address nat } + { DUP ; CDR } ; + DIP { DIP { DUP } ; SWAP } ; + SWAP ; + CDR ; + CDR ; + DUP ; + INT ; + EQ ; + IF { DROP ; NONE nat } { SOME } ; + DIP { DIP { DIP { DUP } ; SWAP } ; SWAP } ; + SWAP ; + CDR ; + CAR ; + UPDATE ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR ; + SOME ; + SWAP ; + CAR ; + DIP { DIP { DUP ; CAR } } ; + UPDATE ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR ; + NIL operation ; + PAIR } + { IF_LEFT + { DUP ; + CAR ; + DIP { CDR } ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + DUP ; + CAR ; + DIP { CDR } ; + DUP ; + DIP { CAR ; + DIP { CAR } ; + GET ; + IF_NONE { EMPTY_MAP address nat } { CDR } } ; + CDR ; + GET ; + IF_NONE { PUSH nat 0 } {} ; + DIP { AMOUNT } ; + TRANSFER_TOKENS ; + NIL operation ; + SWAP ; + CONS ; + PAIR } + { IF_LEFT + { DUP ; + CAR ; + DIP { CDR } ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + DUP ; + CAR ; + DIP { CDR } ; + DIP { CAR } ; + GET ; + IF_NONE { PUSH nat 0 } { CAR } ; + DIP { AMOUNT } ; + TRANSFER_TOKENS ; + NIL operation ; + SWAP ; + CONS ; + PAIR } + { IF_LEFT + { DUP ; + CAR ; + DIP { CDR } ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + CDR ; + CDR ; + CDR ; + CDR ; + DIP { AMOUNT } ; + TRANSFER_TOKENS ; + NIL operation ; + SWAP ; + CONS ; + PAIR } + { IF_LEFT + { DIP { DUP ; + CDR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH (pair string unit) (Pair "SenderIsNotAdmin" Unit) ; FAILWITH } } ; + DIP { DUP ; CDR } ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR ; + SWAP ; + PAIR ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR ; + NIL operation ; + PAIR } + { IF_LEFT + { DIP { DUP ; + CDR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH (pair string unit) (Pair "SenderIsNotAdmin" Unit) ; FAILWITH } } ; + DIP { DUP ; CDR } ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR ; + NIL operation ; + PAIR } + { IF_LEFT + { DUP ; + CAR ; + DIP { CDR } ; + DIP { DIP { DUP } ; SWAP } ; + PAIR ; + CDR ; + CDR ; + CAR ; + DIP { AMOUNT } ; + TRANSFER_TOKENS ; + NIL operation ; + SWAP ; + CONS ; + PAIR } + { IF_LEFT + { DIP { DUP ; + CDR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH (pair string unit) (Pair "SenderIsNotAdmin" Unit) ; FAILWITH } } ; + DIP { DUP } ; + SWAP ; + CAR ; + DIP { DUP } ; + SWAP ; + CAR ; + GET ; + IF_NONE + { DUP ; + CDR ; + INT ; + EQ ; + IF { NONE (pair nat (map address nat)) } + { DUP ; CDR ; DIP { EMPTY_MAP address nat } ; PAIR ; SOME } } + { DIP { DUP } ; + SWAP ; + CDR ; + DIP { DUP ; CAR } ; + ADD ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR ; + SOME } ; + SWAP ; + DIP { DIP { DUP ; CAR } } ; + DUP ; + DIP { CAR ; + UPDATE ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR } ; + DUP ; + DIP { CDR ; + INT ; + DIP { DUP ; CDR ; DUP ; CDR ; CDR } ; + ADD ; + ISNAT ; + IF_NONE + { PUSH string + "Unexpected failure: Negative total supply" ; + FAILWITH } + {} ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR } ; + DROP ; + NIL operation ; + PAIR } + { DIP { DUP ; + CDR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH (pair string unit) (Pair "SenderIsNotAdmin" Unit) ; FAILWITH } } ; + DIP { DUP } ; + SWAP ; + CAR ; + DIP { DUP } ; + SWAP ; + CAR ; + GET ; + IF_NONE + { CDR ; + PUSH nat 0 ; + SWAP ; + PAIR ; + PUSH string "NotEnoughBalance" ; + PAIR ; + FAILWITH } + {} ; + DUP ; + CAR ; + DIP { DIP { DUP } ; SWAP } ; + SWAP ; + CDR ; + SWAP ; + SUB ; + ISNAT ; + IF_NONE + { CAR ; + DIP { DUP } ; + SWAP ; + CDR ; + PAIR ; + PUSH string "NotEnoughBalance" ; + PAIR ; + FAILWITH } + {} ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR ; + DIP { DUP } ; + SWAP ; + DIP { DUP ; + CAR ; + INT ; + EQ ; + IF { DUP ; + CDR ; + SIZE ; + INT ; + EQ ; + IF { DROP ; NONE (pair nat (map address nat)) } { SOME } } + { SOME } ; + SWAP ; + CAR ; + DIP { DIP { DUP ; CAR } } ; + UPDATE ; + DIP { DUP ; DIP { CDR } ; CAR } ; + DIP { DROP } ; + PAIR } ; + DUP ; + DIP { CDR ; + NEG ; + DIP { DUP ; CDR ; DUP ; CDR ; CDR } ; + ADD ; + ISNAT ; + IF_NONE + { PUSH string + "Unexpected failure: Negative total supply" ; + FAILWITH } + {} ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR ; + SWAP ; + PAIR ; + DIP { DUP ; DIP { CAR } ; CDR } ; + DIP { DROP } ; + SWAP ; + PAIR } ; + DROP ; + NIL operation ; + PAIR } } } } } } } } } } diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/_readme.txt new file mode 100644 index 00000000..eafd7fc4 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201907/_readme.txt @@ -0,0 +1,3 @@ +Sample token contract from tzip 1.2 proposal, retrieved in July 2019. + +https://gitlab.com/tzip/tzip/tree/master/assets/FA1.2 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201912/ManagedLedger.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201912/ManagedLedger.michelson new file mode 100644 index 00000000..e7a344f2 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201912/ManagedLedger.michelson @@ -0,0 +1,737 @@ +parameter (or (or (or (pair %transfer (address :from) + (pair (address :to) + (nat :value))) + (pair %approve (address :spender) + (nat :value))) + (or (pair %getAllowance (pair (address :owner) + (address :spender)) + (contract nat)) + (or (pair %getBalance (address :owner) + (contract nat)) + (pair %getTotalSupply unit + (contract nat))))) + (or (or (bool %setPause) + (address %setAdministrator)) + (or (pair %getAdministrator unit + (contract address)) + (or (pair %mint (address :to) + (nat :value)) + (pair %burn (address :from) + (nat :value)))))); +storage (pair (big_map %ledger (address :user) + (pair (nat :balance) + (map :approvals (address :spender) + (nat :value)))) + (pair (address %admin) + (pair (bool %paused) + (nat %totalSupply)))); +code { CAST (pair (or (or (or (pair address (pair address nat)) (pair address nat)) (or (pair (pair address address) (contract nat)) (or (pair address (contract nat)) (pair unit (contract nat))))) (or (or bool address) (or (pair unit (contract address)) (or (pair address nat) (pair address nat))))) (pair (big_map address (pair nat (map address nat))) (pair address (pair bool nat)))); + DUP; + CAR; + DIP { CDR }; + IF_LEFT { IF_LEFT { IF_LEFT { DIP { DUP; + CDR; + CDR; + CAR; + IF { UNIT; + PUSH string "TokenOperationsArePaused"; + PAIR; + FAILWITH } + { } }; + DUP; + DUP; + CDR; + CAR; + DIP { CAR }; + COMPARE; + EQ; + IF { DROP } + { DUP; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { DUP; + DIP { DUP; + DIP { DIP { DUP }; + CAR; + SENDER; + PAIR; + DUP; + DIP { CDR; + DIP { CAR }; + GET; + IF_NONE { EMPTY_MAP (address) nat } + { CDR } }; + CAR; + GET; + IF_NONE { PUSH nat 0 } + { } }; + DUP; + CAR; + DIP { SENDER; + DIP { DUP; + CDR; + CDR; + DIP { DIP { DUP }; + SWAP }; + SWAP; + SUB; + ISNAT; + IF_NONE { DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CDR; + CDR; + PAIR; + PUSH string "NotEnoughAllowance"; + PAIR; + FAILWITH } + { } }; + PAIR }; + PAIR; + DIP { DROP; + DROP }; + DIP { DUP }; + SWAP; + DIP { DUP; + CAR }; + SWAP; + DIP { CAR }; + GET; + IF_NONE { PUSH nat 0; + DIP { EMPTY_MAP (address) nat }; + PAIR; + EMPTY_MAP (address) nat } + { DUP; + CDR }; + DIP { DIP { DUP }; + SWAP }; + SWAP; + CDR; + CDR; + DUP; + INT; + EQ; + IF { DROP; + NONE nat } + { SOME }; + DIP { DIP { DIP { DUP }; + SWAP }; + SWAP }; + SWAP; + CDR; + CAR; + UPDATE; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + CAR; + DIP { SOME }; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR } }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CDR; + CAR; + DIP { CAR }; + GET; + IF_NONE { DUP; + CDR; + CDR; + INT; + EQ; + IF { NONE (pair nat (map address nat)) } + { DUP; + CDR; + CDR; + DIP { EMPTY_MAP (address) nat }; + PAIR; + SOME } } + { DIP { DUP }; + SWAP; + CDR; + CDR; + DIP { DUP; + CAR }; + ADD; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + SOME }; + SWAP; + DUP; + DIP { CDR; + CAR; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR }; + DUP; + DIP { CDR; + CDR; + INT; + DIP { DUP; + CDR; + CDR; + CDR }; + ADD; + ISNAT; + IF_NONE { PUSH string "Internal: Negative total supply"; + FAILWITH } + { }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CAR; + DIP { CAR }; + GET; + IF_NONE { CDR; + CDR; + PUSH nat 0; + SWAP; + PAIR; + PUSH string "NotEnoughBalance"; + PAIR; + FAILWITH } + { }; + DUP; + CAR; + DIP { DIP { DUP }; + SWAP }; + SWAP; + CDR; + CDR; + SWAP; + SUB; + ISNAT; + IF_NONE { CAR; + DIP { DUP }; + SWAP; + CDR; + CDR; + PAIR; + PUSH string "NotEnoughBalance"; + PAIR; + FAILWITH } + { }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DIP { DUP }; + SWAP; + DIP { DUP; + CAR; + INT; + EQ; + IF { DUP; + CDR; + SIZE; + INT; + EQ; + IF { DROP; + NONE (pair nat (map address nat)) } + { SOME } } + { SOME }; + SWAP; + CAR; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR }; + DUP; + DIP { CDR; + CDR; + NEG; + DIP { DUP; + CDR; + CDR; + CDR }; + ADD; + ISNAT; + IF_NONE { PUSH string "Internal: Negative total supply"; + FAILWITH } + { }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR }; + DROP }; + NIL operation; + PAIR } + { SENDER; + PAIR; + DIP { DUP; + CDR; + CDR; + CAR; + IF { UNIT; + PUSH string "TokenOperationsArePaused"; + PAIR; + FAILWITH } + { } }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + DUP; + DIP { CAR; + DIP { CAR }; + GET; + IF_NONE { EMPTY_MAP (address) nat } + { CDR } }; + CDR; + CAR; + GET; + IF_NONE { PUSH nat 0 } + { }; + DUP; + INT; + EQ; + IF { DROP } + { DIP { DUP }; + SWAP; + CDR; + CDR; + INT; + EQ; + IF { DROP } + { PUSH string "UnsafeAllowanceChange"; + PAIR; + FAILWITH } }; + DIP { DUP }; + SWAP; + DIP { DUP; + CAR }; + SWAP; + DIP { CAR }; + GET; + IF_NONE { PUSH nat 0; + DIP { EMPTY_MAP (address) nat }; + PAIR; + EMPTY_MAP (address) nat } + { DUP; + CDR }; + DIP { DIP { DUP }; + SWAP }; + SWAP; + CDR; + CDR; + DUP; + INT; + EQ; + IF { DROP; + NONE nat } + { SOME }; + DIP { DIP { DIP { DUP }; + SWAP }; + SWAP }; + SWAP; + CDR; + CAR; + UPDATE; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + CAR; + DIP { SOME }; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + NIL operation; + PAIR } } + { IF_LEFT { DUP; + CAR; + DIP { CDR }; + DIP { DIP { DUP }; + SWAP }; + PAIR; + DUP; + CAR; + DIP { CDR }; + DUP; + DIP { CAR; + DIP { CAR }; + GET; + IF_NONE { EMPTY_MAP (address) nat } + { CDR } }; + CDR; + GET; + IF_NONE { PUSH nat 0 } + { }; + DIP { AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { IF_LEFT { DUP; + CAR; + DIP { CDR }; + DIP { DIP { DUP }; + SWAP }; + PAIR; + DUP; + CAR; + DIP { CDR }; + DIP { CAR }; + GET; + IF_NONE { PUSH nat 0 } + { CAR }; + DIP { AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { DUP; + CAR; + DIP { CDR }; + DIP { DIP { DUP }; + SWAP }; + PAIR; + CDR; + CDR; + CDR; + CDR; + DIP { AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } } } } + { IF_LEFT { IF_LEFT { DIP { DUP; + CDR; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { UNIT; + PUSH string "SenderIsNotAdmin"; + PAIR; + FAILWITH } }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + NIL operation; + PAIR } + { DIP { DUP; + CDR; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { UNIT; + PUSH string "SenderIsNotAdmin"; + PAIR; + FAILWITH } }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + NIL operation; + PAIR } } + { IF_LEFT { DUP; + CAR; + DIP { CDR }; + DIP { DIP { DUP }; + SWAP }; + PAIR; + CDR; + CDR; + CAR; + DIP { AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { IF_LEFT { DIP { DUP; + CDR; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { UNIT; + PUSH string "SenderIsNotAdmin"; + PAIR; + FAILWITH } }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CAR; + DIP { CAR }; + GET; + IF_NONE { DUP; + CDR; + INT; + EQ; + IF { NONE (pair nat (map address nat)) } + { DUP; + CDR; + DIP { EMPTY_MAP (address) nat }; + PAIR; + SOME } } + { DIP { DUP }; + SWAP; + CDR; + DIP { DUP; + CAR }; + ADD; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + SOME }; + SWAP; + DUP; + DIP { CAR; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR }; + DUP; + DIP { CDR; + INT; + DIP { DUP; + CDR; + CDR; + CDR }; + ADD; + ISNAT; + IF_NONE { PUSH string "Internal: Negative total supply"; + FAILWITH } + { }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR }; + DROP; + NIL operation; + PAIR } + { DIP { DUP; + CDR; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { UNIT; + PUSH string "SenderIsNotAdmin"; + PAIR; + FAILWITH } }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CAR; + DIP { CAR }; + GET; + IF_NONE { CDR; + PUSH nat 0; + SWAP; + PAIR; + PUSH string "NotEnoughBalance"; + PAIR; + FAILWITH } + { }; + DUP; + CAR; + DIP { DIP { DUP }; + SWAP }; + SWAP; + CDR; + SWAP; + SUB; + ISNAT; + IF_NONE { CAR; + DIP { DUP }; + SWAP; + CDR; + PAIR; + PUSH string "NotEnoughBalance"; + PAIR; + FAILWITH } + { }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DIP { DUP }; + SWAP; + DIP { DUP; + CAR; + INT; + EQ; + IF { DUP; + CDR; + SIZE; + INT; + EQ; + IF { DROP; + NONE (pair nat (map address nat)) } + { SOME } } + { SOME }; + SWAP; + CAR; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR }; + DUP; + DIP { CDR; + NEG; + DIP { DUP; + CDR; + CDR; + CDR }; + ADD; + ISNAT; + IF_NONE { PUSH string "Internal: Negative total supply"; + FAILWITH } + { }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR }; + DROP; + NIL operation; + PAIR } } } } }; \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201912/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201912/_readme.txt new file mode 100644 index 00000000..2c6e7855 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-201912/_readme.txt @@ -0,0 +1,3 @@ +Sample token contract from tzip 1.2 proposal, retrieved in December 2019. + +https://gitlab.com/tzip/tzip/tree/master/Proposals/TZIP-0007 diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/ManagedLedger.hex b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/ManagedLedger.hex new file mode 100644 index 00000000..9620cfbc --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/ManagedLedger.hex @@ -0,0 +1 @@ +000011cd02000011c805000764076407640865046e000000053a66726f6d0765046e000000033a746f0462000000063a76616c756500000009257472616e736665720865046e000000083a7370656e6465720462000000063a76616c75650000000825617070726f7665076408650765046e000000063a6f776e6572046e000000083a7370656e646572055a03620000000d25676574416c6c6f77616e636507640865046e000000063a6f776e6572055a03620000000b2567657442616c616e63650865036c055a03620000000f25676574546f74616c537570706c7907640764045900000009257365745061757365046e000000112573657441646d696e6973747261746f7207640865036c055a036e000000112567657441646d696e6973747261746f7207640865046e000000033a746f0462000000063a76616c756500000005256d696e740865046e000000053a66726f6d0462000000063a76616c756500000005256275726e050107650861046e000000053a7573657207650462000000083a62616c616e63650860046e000000083a7370656e6465720462000000063a76616c75650000000a3a617070726f76616c7300000007256c65646765720765046e000000062561646d696e07650459000000072570617573656404620000000c25746f74616c537570706c7905020200000fdb055707650764076407640765036e0765036e03620765036e0362076407650765036e036e055a036207640765036e055a03620765036c055a0362076407640359036e07640765036c055a036e07640765036e03620765036e036207650761036e076503620760036e03620765036e07650359036203210316051f02000000020317072e020000097b072e0200000834072e0200000629051f020000003b0321031703170316072c0200000027034f074303680100000018546f6b656e4f7065726174696f6e734172655061757365640342032702000000000321032103170316051f0200000002031603190325072c0200000002032002000005be03210316034803190325072c020000000002000001ed0321051f02000001e40321051f020000004f051f020000000203210316034803420321051f02000000210317051f020000000203160329072f02000000060723036e03620200000002031703160329072f0200000006074303620000020000000003210316051f02000000700348051f0200000065032103170317051f020000000b051f02000000020321034c034c034b0356072f020000003b051f02000000020321034c051f02000000020321034c0317031703420743036801000000124e6f74456e6f756768416c6c6f77616e636503420327020000000003420342051f020000000403200320051f02000000020321034c051f020000000403210316034c051f020000000203160329072f020000001b074303620000051f02000000060723036e036203420723036e0362020000000403210317051f020000000b051f02000000020321034c034c03170317032103300325072c02000000060320053e036202000000020346051f0200000014051f020000000b051f02000000020321034c034c034c031703160350051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0316051f02000000020346051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f020000000203200342051f02000000020321034c051f02000000020321034c03170316051f020000000203160329072f020000003903210317031703300325072c020000000c053e076503620760036e03620200000017032103170317051f02000000060723036e036203420346020000003d051f02000000020321034c03170317051f0200000004032103160312051f020000000d0321051f020000000203170316051f0200000002032003420346034c0321051f020000003703170316051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f0200000002032003420321051f02000000b1031703170330051f0200000008032103170317031703120356072f020000002707430368010000001c496e7465726e616c3a4e65676174697665746f74616c737570706c7903270200000000051f020000000403210317051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c0342051f02000000020321034c051f02000000020321034c0316051f020000000203160329072f020000002b03170317074303620000034c03420743036801000000104e6f74456e6f75676842616c616e636503420327020000000003210316051f020000000b051f02000000020321034c034c03170317034c034b0356072f02000000300316051f02000000020321034c0317031703420743036801000000104e6f74456e6f75676842616c616e6365034203270200000000051f020000000d0321051f020000000203170316051f020000000203200342051f02000000020321034c051f02000000730321031603300325072c020000002603210317034503300325072c020000000e0320053e076503620760036e03620200000002034602000000020346034c0316051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f0200000002032003420321051f02000000b103170317033b051f0200000008032103170317031703120356072f020000002707430368010000001c496e7465726e616c3a4e65676174697665746f74616c737570706c7903270200000000051f020000000403210317051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c03420320053d036d034202000001ff03480342051f020000003b0321031703170316072c0200000027034f074303680100000018546f6b656e4f7065726174696f6e73417265506175736564034203270200000000051f02000000020321034c051f02000000020321034c0321051f02000000210316051f020000000203160329072f02000000060723036e036202000000020317031703160329072f02000000060743036200000200000000032103300325072c020000000203200200000043051f02000000020321034c0317031703300325072c020000000203200200000022074303680100000015556e73616665416c6c6f77616e63654368616e676503420327051f02000000020321034c051f020000000403210316034c051f020000000203160329072f020000001b074303620000051f02000000060723036e036203420723036e0362020000000403210317051f020000000b051f02000000020321034c034c03170317032103300325072c02000000060320053e036202000000020346051f0200000014051f020000000b051f02000000020321034c034c034c031703160350051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0316051f02000000020346051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f020000000203200342053d036d0342020000013b072e020000008303210316051f02000000020317051f020000000b051f02000000020321034c034203210316051f020000000203170321051f02000000210316051f020000000203160329072f02000000060723036e03620200000002031703170329072f02000000060743036200000200000000051f02000000020313034d053d036d034c031b034202000000ac072e020000006203210316051f02000000020317051f020000000b051f02000000020321034c034203210316051f02000000020317051f020000000203160329072f020000000607430362000002000000020316051f02000000020313034d053d036d034c031b0342020000003e03210316051f02000000020317051f020000000b051f02000000020321034c03420317031703170317051f02000000020313034d053d036d034c031b034202000005d3072e0200000142072e02000000a7051f0200000037032103170316034803190325072c0200000000020000001f034f07430368010000001053656e64657249734e6f7441646d696e03420327051f020000000403210317051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203170316051f020000000203200342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c0342053d036d0342020000008f051f0200000037032103170316034803190325072c0200000000020000001f034f07430368010000001053656e64657249734e6f7441646d696e03420327051f020000000403210317051f020000000d0321051f020000000203170316051f020000000203200342051f020000000d0321051f020000000203160317051f02000000020320034c0342053d036d03420200000485072e020000003c03210316051f02000000020317051f020000000b051f02000000020321034c0342031703170316051f02000000020313034d053d036d034c031b0342020000043d072e02000001dd051f0200000037032103170316034803190325072c0200000000020000001f034f07430368010000001053656e64657249734e6f7441646d696e03420327051f02000000020321034c051f02000000020321034c0316051f020000000203160329072f02000000350321031703300325072c020000000c053e076503620760036e0362020000001503210317051f02000000060723036e036203420346020000003b051f02000000020321034c0317051f0200000004032103160312051f020000000d0321051f020000000203170316051f0200000002032003420346034c0321051f02000000350316051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f0200000002032003420321051f02000000af03170330051f0200000008032103170317031703120356072f020000002707430368010000001c496e7465726e616c3a4e65676174697665746f74616c737570706c7903270200000000051f020000000403210317051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c03420320053d036d03420200000254051f0200000037032103170316034803190325072c0200000000020000001f034f07430368010000001053656e64657249734e6f7441646d696e03420327051f02000000020321034c051f02000000020321034c0316051f020000000203160329072f02000000290317074303620000034c03420743036801000000104e6f74456e6f75676842616c616e636503420327020000000003210316051f020000000b051f02000000020321034c034c0317034c034b0356072f020000002e0316051f02000000020321034c031703420743036801000000104e6f74456e6f75676842616c616e6365034203270200000000051f020000000d0321051f020000000203170316051f020000000203200342051f02000000020321034c051f02000000730321031603300325072c020000002603210317034503300325072c020000000e0320053e076503620760036e03620200000002034602000000020346034c0316051f020000000b051f0200000004032103160350051f020000000d0321051f020000000203170316051f0200000002032003420321051f02000000af0317033b051f0200000008032103170317031703120356072f020000002707430368010000001c496e7465726e616c3a4e65676174697665746f74616c737570706c7903270200000000051f020000000403210317051f020000000d0321051f020000000203160317051f020000000d0321051f020000000203160317051f02000000020320034c0342034c0342051f020000000d0321051f020000000203160317051f02000000020320034c03420320053d036d0342 \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/ManagedLedger.micheline b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/ManagedLedger.micheline new file mode 100644 index 00000000..b69e2f84 --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/ManagedLedger.micheline @@ -0,0 +1,3266 @@ +[{ + "prim": "parameter", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address", + "annots": [":from"] + }, { + "prim": "pair", + "args": [{ + "prim": "address", + "annots": [":to"] + }, { + "prim": "nat", + "annots": [":value"] + }] + }], + "annots": ["%transfer"] + }, { + "prim": "pair", + "args": [{ + "prim": "address", + "annots": [":spender"] + }, { + "prim": "nat", + "annots": [":value"] + }], + "annots": ["%approve"] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address", + "annots": [":owner"] + }, { + "prim": "address", + "annots": [":spender"] + }] + }, { + "prim": "contract", + "args": [{ + "prim": "nat" + }] + }], + "annots": ["%getAllowance"] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address", + "annots": [":owner"] + }, { + "prim": "contract", + "args": [{ + "prim": "nat" + }] + }], + "annots": ["%getBalance"] + }, { + "prim": "pair", + "args": [{ + "prim": "unit" + }, { + "prim": "contract", + "args": [{ + "prim": "nat" + }] + }], + "annots": ["%getTotalSupply"] + }] + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "bool", + "annots": ["%setPause"] + }, { + "prim": "address", + "annots": ["%setAdministrator"] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "unit" + }, { + "prim": "contract", + "args": [{ + "prim": "address" + }] + }], + "annots": ["%getAdministrator"] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address", + "annots": [":to"] + }, { + "prim": "nat", + "annots": [":value"] + }], + "annots": ["%mint"] + }, { + "prim": "pair", + "args": [{ + "prim": "address", + "annots": [":from"] + }, { + "prim": "nat", + "annots": [":value"] + }], + "annots": ["%burn"] + }] + }] + }] + }] + }] +}, { + "prim": "storage", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "big_map", + "args": [{ + "prim": "address", + "annots": [":user"] + }, { + "prim": "pair", + "args": [{ + "prim": "nat", + "annots": [":balance"] + }, { + "prim": "map", + "args": [{ + "prim": "address", + "annots": [":spender"] + }, { + "prim": "nat", + "annots": [":value"] + }], + "annots": [":approvals"] + }] + }], + "annots": ["%ledger"] + }, { + "prim": "pair", + "args": [{ + "prim": "address", + "annots": ["%admin"] + }, { + "prim": "pair", + "args": [{ + "prim": "bool", + "annots": ["%paused"] + }, { + "prim": "nat", + "annots": ["%totalSupply"] + }] + }] + }] + }] +}, { + "prim": "code", + "args": [ + [{ + "prim": "CAST", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "address" + }] + }, { + "prim": "contract", + "args": [{ + "prim": "nat" + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "contract", + "args": [{ + "prim": "nat" + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "unit" + }, { + "prim": "contract", + "args": [{ + "prim": "nat" + }] + }] + }] + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "or", + "args": [{ + "prim": "bool" + }, { + "prim": "address" + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "unit" + }, { + "prim": "contract", + "args": [{ + "prim": "address" + }] + }] + }, { + "prim": "or", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }] + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "big_map", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }] + }, { + "prim": "pair", + "args": [{ + "prim": "address" + }, { + "prim": "pair", + "args": [{ + "prim": "bool" + }, { + "prim": "nat" + }] + }] + }] + }] + }] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "UNIT" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "TokenOperationsArePaused" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }], + [] + ] + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "COMPARE" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DROP" + }], + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "SENDER" + }, { + "prim": "COMPARE" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "CAR" + }, { + "prim": "SENDER" + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }], + [{ + "prim": "CDR" + }] + ] + }] + ] + }, { + "prim": "CAR" + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [] + ] + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SENDER" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "SUB" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "PAIR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "NotEnoughAllowance" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }], + [] + ] + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }, { + "prim": "DROP" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }], + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "DUP" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DROP" + }, { + "prim": "NONE", + "args": [{ + "prim": "nat" + }] + }], + [{ + "prim": "SOME" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SOME" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "NONE", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }] + }], + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SOME" + }] + ] + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SOME" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "INT" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "Internal:Negativetotalsupply" + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "NotEnoughBalance" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "SWAP" + }, { + "prim": "SUB" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "PAIR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "NotEnoughBalance" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "SIZE" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DROP" + }, { + "prim": "NONE", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }] + }], + [{ + "prim": "SOME" + }] + ] + }], + [{ + "prim": "SOME" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "NEG" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "Internal:Negativetotalsupply" + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "DROP" + }] + ] + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + }], + [{ + "prim": "SENDER" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "UNIT" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "TokenOperationsArePaused" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }], + [] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }], + [{ + "prim": "CDR" + }] + ] + }] + ] + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [] + ] + }, { + "prim": "DUP" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DROP" + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DROP" + }], + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "UnsafeAllowanceChange" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }], + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "DUP" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DROP" + }, { + "prim": "NONE", + "args": [{ + "prim": "nat" + }] + }], + [{ + "prim": "SOME" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "SOME" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + }] + ] + }], + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }], + [{ + "prim": "CDR" + }] + ] + }] + ] + }, { + "prim": "CDR" + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "AMOUNT" + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }], + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }], + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "AMOUNT" + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }], + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "AMOUNT" + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }] + ] + }] + ] + }] + ] + }], + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "SENDER" + }, { + "prim": "COMPARE" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "UNIT" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "SenderIsNotAdmin" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "SENDER" + }, { + "prim": "COMPARE" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "UNIT" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "SenderIsNotAdmin" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + }] + ] + }], + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "AMOUNT" + }] + ] + }, { + "prim": "TRANSFER_TOKENS" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "SWAP" + }, { + "prim": "CONS" + }, { + "prim": "PAIR" + }], + [{ + "prim": "IF_LEFT", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "SENDER" + }, { + "prim": "COMPARE" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "UNIT" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "SenderIsNotAdmin" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "NONE", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }] + }], + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "EMPTY_MAP", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SOME" + }] + ] + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "SOME" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "INT" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "Internal:Negativetotalsupply" + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + }], + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CAR" + }, { + "prim": "SENDER" + }, { + "prim": "COMPARE" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [], + [{ + "prim": "UNIT" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "SenderIsNotAdmin" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }] + ] + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "GET" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "nat" + }, { + "int": "0" + }] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "NotEnoughBalance" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "SWAP" + }, { + "prim": "SUB" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CDR" + }, { + "prim": "PAIR" + }, { + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "NotEnoughBalance" + }] + }, { + "prim": "PAIR" + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "SIZE" + }, { + "prim": "INT" + }, { + "prim": "EQ" + }, { + "prim": "IF", + "args": [ + [{ + "prim": "DROP" + }, { + "prim": "NONE", + "args": [{ + "prim": "pair", + "args": [{ + "prim": "nat" + }, { + "prim": "map", + "args": [{ + "prim": "address" + }, { + "prim": "nat" + }] + }] + }] + }], + [{ + "prim": "SOME" + }] + ] + }], + [{ + "prim": "SOME" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "CAR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CAR" + }] + ] + }] + ] + }, { + "prim": "UPDATE" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }] + ] + }, { + "prim": "CAR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CDR" + }, { + "prim": "NEG" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "ADD" + }, { + "prim": "ISNAT" + }, { + "prim": "IF_NONE", + "args": [ + [{ + "prim": "PUSH", + "args": [{ + "prim": "string" + }, { + "string": "Internal:Negativetotalsupply" + }] + }, { + "prim": "FAILWITH" + }], + [] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DUP" + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "CAR" + }] + ] + }, { + "prim": "CDR" + }] + ] + }, { + "prim": "DIP", + "args": [ + [{ + "prim": "DROP" + }] + ] + }, { + "prim": "SWAP" + }, { + "prim": "PAIR" + }] + ] + }, { + "prim": "DROP" + }, { + "prim": "NIL", + "args": [{ + "prim": "operation" + }] + }, { + "prim": "PAIR" + }] + ] + }] + ] + }] + ] + }] + ] + }] + ] +}] \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/ManagedLedger.michelson b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/ManagedLedger.michelson new file mode 100644 index 00000000..c6c0087f --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/ManagedLedger.michelson @@ -0,0 +1,741 @@ +# This contract was generated from +# https://gitlab.com/morley-framework/morley/tree/ce28076a79b93d48aa7745271e6a1395b8b9e50d/lorentz-contracts/src/Lorentz/Contracts/ManagedLedger.hs +# Storage annotations were added manually. + +parameter (or (or (or (pair %transfer (address :from) + (pair (address :to) + (nat :value))) + (pair %approve (address :spender) + (nat :value))) + (or (pair %getAllowance (pair (address :owner) + (address :spender)) + (contract nat)) + (or (pair %getBalance (address :owner) + (contract nat)) + (pair %getTotalSupply unit + (contract nat))))) + (or (or (bool %setPause) + (address %setAdministrator)) + (or (pair %getAdministrator unit + (contract address)) + (or (pair %mint (address :to) + (nat :value)) + (pair %burn (address :from) + (nat :value)))))); +storage (pair (big_map %ledger (address :user) + (pair (nat :balance) + (map :approvals (address :spender) + (nat :value)))) + (pair (address %admin) + (pair (bool %paused) + (nat %totalSupply)))); +code { CAST (pair (or (or (or (pair address (pair address nat)) (pair address nat)) (or (pair (pair address address) (contract nat)) (or (pair address (contract nat)) (pair unit (contract nat))))) (or (or bool address) (or (pair unit (contract address)) (or (pair address nat) (pair address nat))))) (pair (big_map address (pair nat (map address nat))) (pair address (pair bool nat)))); + DUP; + CAR; + DIP { CDR }; + IF_LEFT { IF_LEFT { IF_LEFT { DIP { DUP; + CDR; + CDR; + CAR; + IF { UNIT; + PUSH string "TokenOperationsArePaused"; + PAIR; + FAILWITH } + { } }; + DUP; + DUP; + CDR; + CAR; + DIP { CAR }; + COMPARE; + EQ; + IF { DROP } + { DUP; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { DUP; + DIP { DUP; + DIP { DIP { DUP }; + CAR; + SENDER; + PAIR; + DUP; + DIP { CDR; + DIP { CAR }; + GET; + IF_NONE { EMPTY_MAP (address) nat } + { CDR } }; + CAR; + GET; + IF_NONE { PUSH nat 0 } + { } }; + DUP; + CAR; + DIP { SENDER; + DIP { DUP; + CDR; + CDR; + DIP { DIP { DUP }; + SWAP }; + SWAP; + SUB; + ISNAT; + IF_NONE { DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CDR; + CDR; + PAIR; + PUSH string "NotEnoughAllowance"; + PAIR; + FAILWITH } + { } }; + PAIR }; + PAIR; + DIP { DROP; + DROP }; + DIP { DUP }; + SWAP; + DIP { DUP; + CAR }; + SWAP; + DIP { CAR }; + GET; + IF_NONE { PUSH nat 0; + DIP { EMPTY_MAP (address) nat }; + PAIR; + EMPTY_MAP (address) nat } + { DUP; + CDR }; + DIP { DIP { DUP }; + SWAP }; + SWAP; + CDR; + CDR; + DUP; + INT; + EQ; + IF { DROP; + NONE nat } + { SOME }; + DIP { DIP { DIP { DUP }; + SWAP }; + SWAP }; + SWAP; + CDR; + CAR; + UPDATE; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + CAR; + DIP { SOME }; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR } }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CDR; + CAR; + DIP { CAR }; + GET; + IF_NONE { DUP; + CDR; + CDR; + INT; + EQ; + IF { NONE (pair nat (map address nat)) } + { DUP; + CDR; + CDR; + DIP { EMPTY_MAP (address) nat }; + PAIR; + SOME } } + { DIP { DUP }; + SWAP; + CDR; + CDR; + DIP { DUP; + CAR }; + ADD; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + SOME }; + SWAP; + DUP; + DIP { CDR; + CAR; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR }; + DUP; + DIP { CDR; + CDR; + INT; + DIP { DUP; + CDR; + CDR; + CDR }; + ADD; + ISNAT; + IF_NONE { PUSH string "Internal: Negative total supply"; + FAILWITH } + { }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CAR; + DIP { CAR }; + GET; + IF_NONE { CDR; + CDR; + PUSH nat 0; + SWAP; + PAIR; + PUSH string "NotEnoughBalance"; + PAIR; + FAILWITH } + { }; + DUP; + CAR; + DIP { DIP { DUP }; + SWAP }; + SWAP; + CDR; + CDR; + SWAP; + SUB; + ISNAT; + IF_NONE { CAR; + DIP { DUP }; + SWAP; + CDR; + CDR; + PAIR; + PUSH string "NotEnoughBalance"; + PAIR; + FAILWITH } + { }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DIP { DUP }; + SWAP; + DIP { DUP; + CAR; + INT; + EQ; + IF { DUP; + CDR; + SIZE; + INT; + EQ; + IF { DROP; + NONE (pair nat (map address nat)) } + { SOME } } + { SOME }; + SWAP; + CAR; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR }; + DUP; + DIP { CDR; + CDR; + NEG; + DIP { DUP; + CDR; + CDR; + CDR }; + ADD; + ISNAT; + IF_NONE { PUSH string "Internal: Negative total supply"; + FAILWITH } + { }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR }; + DROP }; + NIL operation; + PAIR } + { SENDER; + PAIR; + DIP { DUP; + CDR; + CDR; + CAR; + IF { UNIT; + PUSH string "TokenOperationsArePaused"; + PAIR; + FAILWITH } + { } }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + DUP; + DIP { CAR; + DIP { CAR }; + GET; + IF_NONE { EMPTY_MAP (address) nat } + { CDR } }; + CDR; + CAR; + GET; + IF_NONE { PUSH nat 0 } + { }; + DUP; + INT; + EQ; + IF { DROP } + { DIP { DUP }; + SWAP; + CDR; + CDR; + INT; + EQ; + IF { DROP } + { PUSH string "UnsafeAllowanceChange"; + PAIR; + FAILWITH } }; + DIP { DUP }; + SWAP; + DIP { DUP; + CAR }; + SWAP; + DIP { CAR }; + GET; + IF_NONE { PUSH nat 0; + DIP { EMPTY_MAP (address) nat }; + PAIR; + EMPTY_MAP (address) nat } + { DUP; + CDR }; + DIP { DIP { DUP }; + SWAP }; + SWAP; + CDR; + CDR; + DUP; + INT; + EQ; + IF { DROP; + NONE nat } + { SOME }; + DIP { DIP { DIP { DUP }; + SWAP }; + SWAP }; + SWAP; + CDR; + CAR; + UPDATE; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + CAR; + DIP { SOME }; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + NIL operation; + PAIR } } + { IF_LEFT { DUP; + CAR; + DIP { CDR }; + DIP { DIP { DUP }; + SWAP }; + PAIR; + DUP; + CAR; + DIP { CDR }; + DUP; + DIP { CAR; + DIP { CAR }; + GET; + IF_NONE { EMPTY_MAP (address) nat } + { CDR } }; + CDR; + GET; + IF_NONE { PUSH nat 0 } + { }; + DIP { AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { IF_LEFT { DUP; + CAR; + DIP { CDR }; + DIP { DIP { DUP }; + SWAP }; + PAIR; + DUP; + CAR; + DIP { CDR }; + DIP { CAR }; + GET; + IF_NONE { PUSH nat 0 } + { CAR }; + DIP { AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { DUP; + CAR; + DIP { CDR }; + DIP { DIP { DUP }; + SWAP }; + PAIR; + CDR; + CDR; + CDR; + CDR; + DIP { AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } } } } + { IF_LEFT { IF_LEFT { DIP { DUP; + CDR; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { UNIT; + PUSH string "SenderIsNotAdmin"; + PAIR; + FAILWITH } }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + NIL operation; + PAIR } + { DIP { DUP; + CDR; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { UNIT; + PUSH string "SenderIsNotAdmin"; + PAIR; + FAILWITH } }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + NIL operation; + PAIR } } + { IF_LEFT { DUP; + CAR; + DIP { CDR }; + DIP { DIP { DUP }; + SWAP }; + PAIR; + CDR; + CDR; + CAR; + DIP { AMOUNT }; + TRANSFER_TOKENS; + NIL operation; + SWAP; + CONS; + PAIR } + { IF_LEFT { DIP { DUP; + CDR; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { UNIT; + PUSH string "SenderIsNotAdmin"; + PAIR; + FAILWITH } }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CAR; + DIP { CAR }; + GET; + IF_NONE { DUP; + CDR; + INT; + EQ; + IF { NONE (pair nat (map address nat)) } + { DUP; + CDR; + DIP { EMPTY_MAP (address) nat }; + PAIR; + SOME } } + { DIP { DUP }; + SWAP; + CDR; + DIP { DUP; + CAR }; + ADD; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + SOME }; + SWAP; + DUP; + DIP { CAR; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR }; + DUP; + DIP { CDR; + INT; + DIP { DUP; + CDR; + CDR; + CDR }; + ADD; + ISNAT; + IF_NONE { PUSH string "Internal: Negative total supply"; + FAILWITH } + { }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR }; + DROP; + NIL operation; + PAIR } + { DIP { DUP; + CDR; + CAR; + SENDER; + COMPARE; + EQ; + IF { } + { UNIT; + PUSH string "SenderIsNotAdmin"; + PAIR; + FAILWITH } }; + DIP { DUP }; + SWAP; + DIP { DUP }; + SWAP; + CAR; + DIP { CAR }; + GET; + IF_NONE { CDR; + PUSH nat 0; + SWAP; + PAIR; + PUSH string "NotEnoughBalance"; + PAIR; + FAILWITH } + { }; + DUP; + CAR; + DIP { DIP { DUP }; + SWAP }; + SWAP; + CDR; + SWAP; + SUB; + ISNAT; + IF_NONE { CAR; + DIP { DUP }; + SWAP; + CDR; + PAIR; + PUSH string "NotEnoughBalance"; + PAIR; + FAILWITH } + { }; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR; + DIP { DUP }; + SWAP; + DIP { DUP; + CAR; + INT; + EQ; + IF { DUP; + CDR; + SIZE; + INT; + EQ; + IF { DROP; + NONE (pair nat (map address nat)) } + { SOME } } + { SOME }; + SWAP; + CAR; + DIP { DIP { DUP; + CAR } }; + UPDATE; + DIP { DUP; + DIP { CDR }; + CAR }; + DIP { DROP }; + PAIR }; + DUP; + DIP { CDR; + NEG; + DIP { DUP; + CDR; + CDR; + CDR }; + ADD; + ISNAT; + IF_NONE { PUSH string "Internal: Negative total supply"; + FAILWITH } + { }; + DIP { DUP; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR; + SWAP; + PAIR; + DIP { DUP; + DIP { CAR }; + CDR }; + DIP { DROP }; + SWAP; + PAIR }; + DROP; + NIL operation; + PAIR } } } } }; \ No newline at end of file diff --git a/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/_readme.txt b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/_readme.txt new file mode 100644 index 00000000..7c462dfd --- /dev/null +++ b/ConseilJS-core/test/chain/tezos/lexer/samples/tzip-202001/_readme.txt @@ -0,0 +1,3 @@ +Sample token contract from tzip 1.2 proposal, retrieved in January 2020. + +https://gitlab.com/tzip/tzip/raw/master/proposals/tzip-7/ManagedLedger.tz diff --git a/test/TezosWallet.spec.ts b/ConseilJS-core/test/identity/tezos/TezosWalletUtil.spec.ts similarity index 62% rename from test/TezosWallet.spec.ts rename to ConseilJS-core/test/identity/tezos/TezosWalletUtil.spec.ts index 8899d544..2555a4d0 100644 --- a/test/TezosWallet.spec.ts +++ b/ConseilJS-core/test/identity/tezos/TezosWalletUtil.spec.ts @@ -3,10 +3,10 @@ import chaiAsPromised from 'chai-as-promised'; import 'mocha'; import * as fs from 'fs'; -import {KeyStore, StoreType} from "../src/types/wallet/KeyStore"; -import {Wallet} from "../src/types/wallet/Wallet"; -import {TezosFileWallet} from "../src"; -import {TezosWalletUtil} from "../src/identity/tezos/TezosWalletUtil"; +import {KeyStore, StoreType} from "../../../src/types/wallet/KeyStore"; +import {Wallet} from "../../../src/types/wallet/Wallet"; +import {TezosFileWallet} from "../../../src"; +import {TezosWalletUtil} from "../../../src/identity/tezos/TezosWalletUtil"; use(chaiAsPromised); @@ -22,7 +22,7 @@ describe('saveWallet()', () => { it('should save an existing wallet', async () => { const keys: KeyStore = { publicKey: 'edpkv3azzeq9vL869TujYhdQY5FKiQH4CGwJEzqG7m6PoX7VEpdPc9', - privateKey: 'edskS5owtVaAtWifnCNo8tUpAw2535AXEDY4RXBRV1NHbQ58RDdpaWz2KyrvFXE4SuCTbHU8exUecW33GRqkAfLeNLBS5sPyoi', + secretKey: 'edskS5owtVaAtWifnCNo8tUpAw2535AXEDY4RXBRV1NHbQ58RDdpaWz2KyrvFXE4SuCTbHU8exUecW33GRqkAfLeNLBS5sPyoi', publicKeyHash: 'tz1hcXqtiMYFhvuirD4guE7ts4yDuCAmtD95', seed: '', storeType: StoreType.Mnemonic @@ -37,7 +37,7 @@ describe('loadWallet()', () => { it('should load a given wallet', async () => { const keys: KeyStore = { publicKey: 'edpkv3azzeq9vL869TujYhdQY5FKiQH4CGwJEzqG7m6PoX7VEpdPc9', - privateKey: 'edskS5owtVaAtWifnCNo8tUpAw2535AXEDY4RXBRV1NHbQ58RDdpaWz2KyrvFXE4SuCTbHU8exUecW33GRqkAfLeNLBS5sPyoi', + secretKey: 'edskS5owtVaAtWifnCNo8tUpAw2535AXEDY4RXBRV1NHbQ58RDdpaWz2KyrvFXE4SuCTbHU8exUecW33GRqkAfLeNLBS5sPyoi', publicKeyHash: 'tz1hcXqtiMYFhvuirD4guE7ts4yDuCAmtD95', seed: '', storeType: StoreType.Mnemonic @@ -56,7 +56,7 @@ describe('unlockFundraiserIdentity()', () => { "A0mEUNNzP7", "tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2"); expect(result["publicKey"]).to.equal("edpkvMmmaxdUNWmxvnRUqbBfcdLLmANe4TUWucrE2GN75E4wMXUgJa"); - expect(result["privateKey"]).to.equal("edskRpjW6egVEyFwQAttuHy8S5WLYqkpichsW2MzDpAQHWvunrr4ZVWRRQ6dx5y4G9S2s8Y4MDevmpavPVVYDN6egrbypcbWAc"); + expect(result["secretKey"]).to.equal("edskRpjW6egVEyFwQAttuHy8S5WLYqkpichsW2MzDpAQHWvunrr4ZVWRRQ6dx5y4G9S2s8Y4MDevmpavPVVYDN6egrbypcbWAc"); expect(result["publicKeyHash"]).to.equal("tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2"); }); @@ -71,9 +71,9 @@ describe('unlockFundraiserIdentity()', () => { }); describe('generateMnemonic()', () => { - it('should produce a fifteen work bip39 mnemonic', () => { + it('should produce a 24-word bip39 mnemonic', () => { const result = TezosWalletUtil.generateMnemonic(); - expect(result.split(' ').length).to.equal(15); + expect(result.split(' ').length).to.equal(24); }); }); @@ -87,6 +87,36 @@ describe('unlockIdentityWithMnemonic()', () => { }); }); +describe('signText() + checkSignature()', () => { + it('should produce the correct mnemonic-based key pair', async () => { + const keyStore = await TezosWalletUtil.restoreIdentityWithSecretKey('edskRiuSUDavec7ZVH4gkbukcZC1AfRaUNPnfhcsJy5p84TUsG2SVAzzWsrZ2LJZgH7ZUa6u5GH1b6k42FsJYYWdr9MkFb5rEY'); + expect(keyStore.publicKey).to.equal('edpkvNjPhSt3W1kGXPNkP58H2CVP1YXJWw25qcMV8AMyTLz3Kib2Q7'); + + const shortText = 'Tacos Nachos Burritos Guacamole'; + let signature = await TezosWalletUtil.signText(keyStore, shortText); + expect(signature).to.equal('edsigtwmbUdjDFar2P1rhzpSd3FYhsNCrRPK8R6rXgPQ9FhttsjSifdiqs1mdQwM8QFGqEBBQ7GoX2FCGKSmFjCxRPCn8YupfEZ'); + + let result = await TezosWalletUtil.checkSignature(signature, shortText, keyStore.publicKey); + expect(result).to.be.true; + + const longText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vulputate sem augue, non sodales tellus viverra ac. Fusce metus nulla, tristique ut mollis nec, semper sit amet tortor. Integer molestie interdum elementum. Sed at lacus cursus, convallis ante at, accumsan ex. In suscipit lacinia libero eget aliquet. Ut vitae elit sed dui ultricies semper semper at nunc. Quisque varius laoreet enim, ut consectetur metus malesuada eget. Cras at risus ac dolor hendrerit hendrerit. Integer finibus, felis eu malesuada tincidunt, mi orci sollicitudin odio, sit amet gravida nisi orci non tortor.'; + signature = await TezosWalletUtil.signText(keyStore, longText); + expect(signature).to.equal('edsigtcmGhHEu4bteLYp4zwb419AawYJECTGUY9aV7kMwGNAsLSbFrL5mQchDbFQs5aWHQf4gAkVfVwhNgqWamE1DRsHhtXXCBW'); + + result = await TezosWalletUtil.checkSignature(signature, longText, keyStore.publicKey); + expect(result).to.be.true; + }); +}); + +describe('restoreIdentityWithSecretKey()', () => { + it('should produce an expected pkh from secret key', async () => { + const result = await TezosWalletUtil.restoreIdentityWithSecretKey('edskS5owtVaAtWifnCNo8tUpAw2535AXEDY4RXBRV1NHbQ58RDdpaWz2KyrvFXE4SuCTbHU8exUecW33GRqkAfLeNLBS5sPyoi'); + + expect(result.publicKey).to.equal('edpkv3azzeq9vL869TujYhdQY5FKiQH4CGwJEzqG7m6PoX7VEpdPc9'); + expect(result.publicKeyHash).to.equal('tz1hcXqtiMYFhvuirD4guE7ts4yDuCAmtD95'); + }); +}); + describe('getKeysFromMnemonicAndPassphrase()', () => { it('should produce the correct mnemonic-based key pair', async () => { let result = await TezosWalletUtil.getKeysFromMnemonicAndPassphrase('clerk rhythm bonus fabric vital luggage team engine stairs palm degree gossip hour say tenant', 'password', StoreType.Mnemonic); @@ -97,7 +127,7 @@ describe('getKeysFromMnemonicAndPassphrase()', () => { }); it('should be 15 words', async () => { - await expect(TezosWalletUtil.getKeysFromMnemonicAndPassphrase('clerk rhythm', 'password', StoreType.Mnemonic)).be.rejectedWith("The mnemonic should be 15 words."); + await expect(TezosWalletUtil.getKeysFromMnemonicAndPassphrase('clerk rhythm', 'password', StoreType.Mnemonic)).be.rejectedWith("Invalid mnemonic length."); }); it('should detect invalid mnemonics', async () => { @@ -115,7 +145,7 @@ describe('Error paths', () => { const keys: KeyStore = { publicKey: 'edpkv3azzeq9vL869TujYhdQY5FKiQH4CGwJEzqG7m6PoX7VEpdPc9', - privateKey: 'edskS5owtVaAtWifnCNo8tUpAw2535AXEDY4RXBRV1NHbQ58RDdpaWz2KyrvFXE4SuCTbHU8exUecW33GRqkAfLeNLBS5sPyoi', + secretKey: 'edskS5owtVaAtWifnCNo8tUpAw2535AXEDY4RXBRV1NHbQ58RDdpaWz2KyrvFXE4SuCTbHU8exUecW33GRqkAfLeNLBS5sPyoi', publicKeyHash: 'tz1hcXqtiMYFhvuirD4guE7ts4yDuCAmtD95', seed: '', storeType: StoreType.Mnemonic diff --git a/test/mocha.opts b/ConseilJS-core/test/mocha.opts similarity index 100% rename from test/mocha.opts rename to ConseilJS-core/test/mocha.opts diff --git a/test/mochaTestHelper.ts b/ConseilJS-core/test/mochaTestHelper.ts similarity index 100% rename from test/mochaTestHelper.ts rename to ConseilJS-core/test/mochaTestHelper.ts diff --git a/test/reporting/ConseilMetadataClient.responses.ts b/ConseilJS-core/test/reporting/ConseilMetadataClient.responses.ts similarity index 98% rename from test/reporting/ConseilMetadataClient.responses.ts rename to ConseilJS-core/test/reporting/ConseilMetadataClient.responses.ts index 2c4f15d2..8ec63b94 100644 --- a/test/reporting/ConseilMetadataClient.responses.ts +++ b/ConseilJS-core/test/reporting/ConseilMetadataClient.responses.ts @@ -150,3 +150,5 @@ export const blockAttributeResponse = [ export const accountAttributeValueResponse = [ "f", "t" ]; export const accountAttributePrefixedValueResponse = [ "tz3WXYtyDUNL91qfiCJtVUX746QpNv5i5ve5", "tz3gN8NTLNLJg5KRsUU47NHNVHbdhcFXjjaB", "tz3NdTPb3Ax2rVW2Kq9QEdzfYFkRwhrQRPhX", "tz3SGu2Co6vjYEBv4C3bYTyRWZVfkdJ2uszd", "tz3Rkii4C4Jfqxp7LkdNnXhNPpw1hioxFfkV", "tz3XcVC3Z7W6Mfwo6UuzGgksHCgvs4Wt88mp", "tz3bkFdXym6mHqJPkHHqbQMbesU5EViHEKmb"]; + +export const errorResponse = 'not JSON'; diff --git a/test/reporting/ConseilMetadataClient.spec.ts b/ConseilJS-core/test/reporting/ConseilMetadataClient.spec.ts similarity index 71% rename from test/reporting/ConseilMetadataClient.spec.ts rename to ConseilJS-core/test/reporting/ConseilMetadataClient.spec.ts index b12ac13c..ed6519b9 100644 --- a/test/reporting/ConseilMetadataClient.spec.ts +++ b/ConseilJS-core/test/reporting/ConseilMetadataClient.spec.ts @@ -6,20 +6,23 @@ import fetch from 'node-fetch'; import FetchSelector from '../../src/utils/FetchSelector'; FetchSelector.setFetch(fetch); +import { ConseilServerInfo } from '../../src/types/conseil/QueryTypes'; import {ConseilMetadataClient} from '../../src/reporting/ConseilMetadataClient' import mochaAsync from '../../test/mochaTestHelper'; import { - platformsResponse, networksResponse, entityResponse, blockAttributeResponse, accountAttributeValueResponse, accountAttributePrefixedValueResponse + platformsResponse, networksResponse, entityResponse, blockAttributeResponse, accountAttributeValueResponse, accountAttributePrefixedValueResponse, errorResponse } from './ConseilMetadataClient.responses'; +const mockConseilServer: ConseilServerInfo = { url: 'http://conseil.server', apiKey: 'c0ffee', network: 'alphanet' }; + describe('ConseilJS API Wrapper for Conseil protocol v2 test suite', () => { it('retrieve list of available platforms', mochaAsync(async () => { const nockedserver = nock('http://conseil.server'); nockedserver.get('/v2/metadata/platforms').reply(200, platformsResponse); - const result = await ConseilMetadataClient.getPlatforms({ url: 'http://conseil.server', apiKey: 'c0ffee' }); + const result = await ConseilMetadataClient.getPlatforms(mockConseilServer); expect(result.map((v) => { return v.name})).to.contain('tezos'); })); @@ -28,7 +31,7 @@ describe('ConseilJS API Wrapper for Conseil protocol v2 test suite', () => { const nockedserver = nock('http://conseil.server'); nockedserver.get('/v2/metadata/tezos/networks').reply(200, networksResponse); - const result = await ConseilMetadataClient.getNetworks({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'tezos'); + const result = await ConseilMetadataClient.getNetworks(mockConseilServer, 'tezos'); expect(result[0].platform).to.equal('tezos') })); @@ -37,7 +40,7 @@ describe('ConseilJS API Wrapper for Conseil protocol v2 test suite', () => { const nockedserver = nock('http://conseil.server'); nockedserver.get('/v2/metadata/tezos/alphanet/entities').reply(200, entityResponse); - const result = await ConseilMetadataClient.getEntities({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'tezos', 'alphanet'); + const result = await ConseilMetadataClient.getEntities(mockConseilServer, 'tezos', 'alphanet'); expect(result.length).to.greaterThan(1); })); @@ -46,7 +49,7 @@ describe('ConseilJS API Wrapper for Conseil protocol v2 test suite', () => { const nockedserver = nock('http://conseil.server'); nockedserver.get('/v2/metadata/tezos/alphanet/blocks/attributes').reply(200, blockAttributeResponse); - const result = await ConseilMetadataClient.getAttributes({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'tezos', 'alphanet', 'blocks'); + const result = await ConseilMetadataClient.getAttributes(mockConseilServer, 'tezos', 'alphanet', 'blocks'); expect(result.length).to.greaterThan(1); })); @@ -55,7 +58,7 @@ describe('ConseilJS API Wrapper for Conseil protocol v2 test suite', () => { const nockedserver = nock('http://conseil.server'); nockedserver.get('/v2/metadata/tezos/alphanet/accounts/spendable').reply(200, accountAttributeValueResponse); - const result = await ConseilMetadataClient.getAttributeValues({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'tezos', 'alphanet', 'accounts', 'spendable'); + const result = await ConseilMetadataClient.getAttributeValues(mockConseilServer, 'tezos', 'alphanet', 'accounts', 'spendable'); expect(result.length).to.equal(2); })); @@ -64,9 +67,17 @@ describe('ConseilJS API Wrapper for Conseil protocol v2 test suite', () => { const nockedserver = nock('http://conseil.server'); nockedserver.get('/v2/metadata/tezos/alphanet/accounts/account_id/tz3').reply(200, accountAttributePrefixedValueResponse); - const result = await ConseilMetadataClient.getAttributeValuesForPrefix({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'tezos', 'alphanet', 'accounts', 'account_id', 'tz3'); + const result = await ConseilMetadataClient.getAttributeValuesForPrefix(mockConseilServer, 'tezos', 'alphanet', 'accounts', 'account_id', 'tz3'); expect(result.length).to.be.greaterThan(2); })); - + + it('test error conditions', mochaAsync(async () => { + const nockedserver = nock('http://conseil.server'); + nockedserver.get('/v2/metadata/tezos/alphanet/accounts/account_id/tz3').reply(200, errorResponse); + + const result = await ConseilMetadataClient.getAttributeValuesForPrefix(mockConseilServer, 'tezos', 'alphanet', 'accounts', 'account_id', 'tz3'); + + expect(result).to.be.undefined; + })); }); diff --git a/test/reporting/ConseilQueryBuilder.spec.ts b/ConseilJS-core/test/reporting/ConseilQueryBuilder.spec.ts similarity index 77% rename from test/reporting/ConseilQueryBuilder.spec.ts rename to ConseilJS-core/test/reporting/ConseilQueryBuilder.spec.ts index fb54f2dd..3796055f 100644 --- a/test/reporting/ConseilQueryBuilder.spec.ts +++ b/ConseilJS-core/test/reporting/ConseilQueryBuilder.spec.ts @@ -1,31 +1,31 @@ import 'mocha'; import {expect} from 'chai'; + import {ConseilQueryBuilder} from "../../src/reporting/ConseilQueryBuilder"; import {ConseilOperator, ConseilSortDirection, ConseilOutput, ConseilFunction} from "../../src/types/conseil/QueryTypes" - describe('ConseilJS query builder for Conseil protocol v2 test suite', () => { - it('make a blank query', async () => { + it('make a blank query', () => { const query = ConseilQueryBuilder.blankQuery(); expect(query.fields.length).to.equals(0); expect(query.limit).to.equals(100); }); - it('make empty query with a sort condition', async () => { + it('make empty query with a sort condition', () => { const query = ConseilQueryBuilder.addOrdering(ConseilQueryBuilder.addOrdering(ConseilQueryBuilder.blankQuery(), 'level', ConseilSortDirection.DESC), 'signature'); expect(query.orderBy[0].direction).to.equals(ConseilSortDirection.DESC); expect(query.orderBy[0].field).to.equals('level'); }); - it('set a limit on a blank query', async () => { + it('set a limit on a blank query', () => { const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.blankQuery(), 1); expect(query.limit).to.equals(1); }); - it('make a query with two fields', async () => { + it('make a query with two fields', () => { const query = ConseilQueryBuilder.addFields(ConseilQueryBuilder.blankQuery(), 'field 1', 'field 2'); expect(query.fields.length).to.equals(2); @@ -33,7 +33,7 @@ describe('ConseilJS query builder for Conseil protocol v2 test suite', () => { expect(query.fields[1]).to.equals('field 2'); }); - it('make a query with a predicate', async () => { + it('make a query with a predicate', () => { const query = ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), "field 1", ConseilOperator.IN, ['a', 'b', 'c', 'd']); expect(query.predicates.length).to.equals(1); @@ -43,29 +43,30 @@ describe('ConseilJS query builder for Conseil protocol v2 test suite', () => { expect(query.predicates[0].inverse).to.equals(false); }); - it('predecate creation error conditions', async () => { + it('predecate creation error conditions', () => { expect(() => ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), "field 1", ConseilOperator.BETWEEN, ['a', 'b', 'c'])).to.throw("BETWEEN operation requires a list of two values."); expect(() => ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), "field 1", ConseilOperator.IN, ['a'])).to.throw("IN operation requires a list of two or more values."); expect(() => ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), "field 1", ConseilOperator.EQ, ['a', 'b'])).to.throw("invalid values list for eq."); expect(() => ConseilQueryBuilder.setLimit(ConseilQueryBuilder.blankQuery(), 0)).to.throw('Limit cannot be less than one.'); }); - it('make a query with csv output', async () => { + it('make a query with csv output', () => { const query = ConseilQueryBuilder.setOutputType(ConseilQueryBuilder.addFields(ConseilQueryBuilder.blankQuery(), 'field 1', 'field 2'), ConseilOutput.csv); expect(query.output).to.be.not.null; expect(query.output).to.equals('csv'); }); - it('make a query with an aggregation function', async () => { + it('make a query with an aggregation function', () => { const query = ConseilQueryBuilder.addAggregationFunction(ConseilQueryBuilder.addFields(ConseilQueryBuilder.blankQuery(), 'field 1', 'field 2'), 'field 1', ConseilFunction.sum); - expect(query.aggregation).to.be.not.null; - expect(query.aggregation.field).to.equals('field 1'); + if (query.aggregation !== undefined) { + expect(query.aggregation).to.be.not.null; + expect(query.aggregation[0].field).to.equals('field 1'); + } }); - it('aggregation creation error conditions', async () => { + it('aggregation creation error conditions', () => { expect(() => ConseilQueryBuilder.addAggregationFunction(ConseilQueryBuilder.blankQuery(), 'field 1', ConseilFunction.sum)).to.throw('Cannot apply an aggregation function on a field not being returned.'); - expect(() => ConseilQueryBuilder.addAggregationFunction(ConseilQueryBuilder.addFields(ConseilQueryBuilder.blankQuery(), 'field 1'), 'field 1', ConseilFunction.sum)).to.throw('Cannot apply an aggregation function on the only field being returned.'); }); }); \ No newline at end of file diff --git a/test/reporting/tezos/TezosConseilClient.responses.ts b/ConseilJS-core/test/reporting/tezos/TezosConseilClient.responses.ts similarity index 100% rename from test/reporting/tezos/TezosConseilClient.responses.ts rename to ConseilJS-core/test/reporting/tezos/TezosConseilClient.responses.ts diff --git a/test/reporting/tezos/TezosConseilClient.spec.ts b/ConseilJS-core/test/reporting/tezos/TezosConseilClient.spec.ts similarity index 64% rename from test/reporting/tezos/TezosConseilClient.spec.ts rename to ConseilJS-core/test/reporting/tezos/TezosConseilClient.spec.ts index db67dec9..fc2c90b3 100644 --- a/test/reporting/tezos/TezosConseilClient.spec.ts +++ b/ConseilJS-core/test/reporting/tezos/TezosConseilClient.spec.ts @@ -3,6 +3,10 @@ import { expect, use } from "chai"; import chaiAsPromised from 'chai-as-promised'; import nock from 'nock'; +import * as loglevel from 'loglevel'; +import LogSelector from '../../../src/utils/LoggerSelector'; +LogSelector.setLogger(loglevel.getLogger('conseiljs')); + import fetch from 'node-fetch'; import FetchSelector from '../../../src/utils/FetchSelector'; FetchSelector.setFetch(fetch); @@ -20,24 +24,33 @@ import { use(chaiAsPromised); +const conseilServer = { url: 'http://conseil.server', apiKey: 'c0ffee', network: 'alphanet' }; + describe('TezosConseilClient tests', () => { it('TezosConseilClient.getBlockHead', mochaAsync(async () => { const nockedserver = nock('http://conseil.server'); nockedserver.post('/v2/data/tezos/alphanet/blocks').reply(200, blockHead); - const result = await TezosConseilClient.getBlockHead({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet'); + const result = await TezosConseilClient.getBlockHead(conseilServer, conseilServer.network); - expect(result.length).to.equal(1); - expect(result[0]['level']).to.equal(173066); + expect(result['level']).to.equal(173066); })); it('TezosConseilClient.getBlock', mochaAsync(async () => { const nockedserver = nock('http://conseil.server'); nockedserver.post('/v2/data/tezos/alphanet/blocks').reply(200, block); - const result = await TezosConseilClient.getBlock({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', 'BL5zoNBN17j2AcUrs8mqSKSMcEiuBKkd9RB6uZ6CgYE2Xyb2ybV'); + const result = await TezosConseilClient.getBlock(conseilServer, conseilServer.network, 'BM9bKSFuZs7rE6Aa5p6Lx1QhqcUeJNf7kEiSEtqAxhz5C2a7mz9'); + + expect(result['predecessor']).to.equal('BLyxiXprmaDkCeZo3b9JHU4udjPiVUpuTR1eKXSxtJe9o8JMbiM'); + })); + + it('TezosConseilClient.getBlockByLevel', mochaAsync(async () => { + const nockedserver = nock('http://conseil.server'); + nockedserver.post('/v2/data/tezos/alphanet/blocks').reply(200, block); + + const result = await TezosConseilClient.getBlockByLevel(conseilServer, conseilServer.network, 173137); - expect(result.length).to.equal(1); expect(result[0]['predecessor']).to.equal('BLyxiXprmaDkCeZo3b9JHU4udjPiVUpuTR1eKXSxtJe9o8JMbiM'); })); @@ -45,20 +58,18 @@ describe('TezosConseilClient tests', () => { const nockedserver = nock('http://conseil.server'); nockedserver.post('/v2/data/tezos/alphanet/accounts').reply(200, account); - const result = await TezosConseilClient.getAccount({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', 'tz1L8MjMxQJio8YmmfdFbbVSymbNx5uiX3XT'); + const result = await TezosConseilClient.getAccount(conseilServer, conseilServer.network, 'tz1L8MjMxQJio8YmmfdFbbVSymbNx5uiX3XT'); - expect(result.length).to.equal(1); - expect(result[0]['manager']).to.equal('tz1L8MjMxQJio8YmmfdFbbVSymbNx5uiX3XT'); + expect(result['manager']).to.equal('tz1L8MjMxQJio8YmmfdFbbVSymbNx5uiX3XT'); })); it('TezosConseilClient.getOperationGroup', mochaAsync(async () => { const nockedserver = nock('http://conseil.server'); nockedserver.post('/v2/data/tezos/alphanet/operation_groups').reply(200, operationgroup); - const result = await TezosConseilClient.getOperationGroup({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', 'ooYPxHKwUgkXxbWVfZFuYnvjNuGtrAgRQEtNrbPXNiwTBbCFW9j'); + const result = await TezosConseilClient.getOperationGroup(conseilServer, conseilServer.network, 'ooYPxHKwUgkXxbWVfZFuYnvjNuGtrAgRQEtNrbPXNiwTBbCFW9j'); - expect(result.length).to.equal(1); - expect(result[0]['branch']).to.equal('BLA3ecN7jh6Vc7XmogePRsdAjjbueG9NHsb32ByL5nbAhMvcNxK'); + expect(result['branch']).to.equal('BLA3ecN7jh6Vc7XmogePRsdAjjbueG9NHsb32ByL5nbAhMvcNxK'); })); it('TezosConseilClient.getBlocks', mochaAsync(async () => { @@ -66,7 +77,7 @@ describe('TezosConseilClient tests', () => { nockedserver.post('/v2/data/tezos/alphanet/blocks').reply(200, blocks); const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.blankQuery(), 3); - const result = await TezosConseilClient.getBlocks({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', query); + const result = await TezosConseilClient.getBlocks(conseilServer, conseilServer.network, query); expect(result.length).to.equal(3); expect(result[1]['predecessor']).to.equal('BLqVwN6edWdVjER62uoF9N3KcMXZc4or3j2NetsHQnzNJCUwBbR'); @@ -77,7 +88,7 @@ describe('TezosConseilClient tests', () => { nockedserver.post('/v2/data/tezos/alphanet/accounts').reply(200, accounts); const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.blankQuery(), 2); - const result = await TezosConseilClient.getAccounts({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', query); + const result = await TezosConseilClient.getAccounts(conseilServer, conseilServer.network, query); expect(result.length).to.equal(2); expect(result[1]['counter']).to.equal(23); @@ -88,7 +99,7 @@ describe('TezosConseilClient tests', () => { nockedserver.post('/v2/data/tezos/alphanet/operation_groups').reply(200, operationgroups); const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.blankQuery(), 3); - const result = await TezosConseilClient.getOperationGroups({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', query); + const result = await TezosConseilClient.getOperationGroups(conseilServer, conseilServer.network, query); expect(result.length).to.equal(3); expect(result[1]['block_id']).to.equal('BLPcavx4rhmZqCot3aZ3TiHdjQ4Ad5Tzs8WPmwJEeuxPx7F2GvQ'); @@ -102,7 +113,7 @@ describe('TezosConseilClient tests', () => { query = ConseilQueryBuilder.addPredicate(query, 'kind', ConseilOperator.EQ, ['transaction'], false); query = ConseilQueryBuilder.addOrdering(query, 'block_level', ConseilSortDirection.DESC); query = ConseilQueryBuilder.setLimit(query, 5); - const result = await TezosConseilClient.getOperations({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', query); + const result = await TezosConseilClient.getOperations(conseilServer, conseilServer.network, query); expect(result.length).to.equal(5); expect(result[1]['timestamp']).to.be.greaterThan(result[2]['timestamp']); @@ -112,7 +123,7 @@ describe('TezosConseilClient tests', () => { const nockedserver = nock('http://conseil.server'); nockedserver.post('/v2/data/tezos/alphanet/fees').reply(200, transactionfees); - const fees = await TezosConseilClient.getFeeStatistics({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', OperationKindType.Transaction); + const fees = await TezosConseilClient.getFeeStatistics(conseilServer, conseilServer.network, OperationKindType.Transaction); expect(fees[0]['low']).to.lessThan(fees[0]['medium']); expect(fees[0]['medium']).to.lessThan(fees[0]['high']); @@ -123,7 +134,7 @@ describe('TezosConseilClient tests', () => { nockedserver.post('/v2/data/tezos/alphanet/proposals').reply(200, proposals); const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.blankQuery(), 3); - const result = await TezosConseilClient.getProposals({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', query); + const result = await TezosConseilClient.getProposals(conseilServer, conseilServer.network, query); expect(result.length).to.equal(0); })); @@ -133,7 +144,7 @@ describe('TezosConseilClient tests', () => { nockedserver.post('/v2/data/tezos/alphanet/bakers').reply(200, bakers); const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.blankQuery(), 3); - const result = await TezosConseilClient.getBakers({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', query); + const result = await TezosConseilClient.getBakers(conseilServer, conseilServer.network, query); expect(result.length).to.equal(3); expect(result[1]['pkh']).to.equal('tz1hodJSw6uv7LqArLW86zKuUjkXiayJvqCf'); @@ -144,7 +155,7 @@ describe('TezosConseilClient tests', () => { nockedserver.post('/v2/data/tezos/alphanet/ballots').reply(200, ballots); const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.blankQuery(), 3); - const result = await TezosConseilClient.getBallots({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', query); + const result = await TezosConseilClient.getBallots(conseilServer, conseilServer.network, query); expect(result.length).to.equal(0); })); @@ -153,7 +164,7 @@ describe('TezosConseilClient tests', () => { const nockedserver = nock('http://conseil.server'); nockedserver.post('/v2/data/tezos/alphanet/blocks').reply(404, blockHead); - await expect(TezosConseilClient.getBlock({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', 'BL5zoNBN17j2AcUrs8mqSKSMcEiuBKkd9RB6uZ6CgYE2Xyb2ybV')).to.be.rejected; + await expect(TezosConseilClient.getBlock(conseilServer, conseilServer.network, 'BL5zoNBN17j2AcUrs8mqSKSMcEiuBKkd9RB6uZ6CgYE2Xyb2ybV')).to.be.rejected; }); it('TezosConseilClient.getOperations as CSV', mochaAsync(async () => { @@ -165,8 +176,23 @@ describe('TezosConseilClient tests', () => { query = ConseilQueryBuilder.addOrdering(query, 'block_level', ConseilSortDirection.DESC); query = ConseilQueryBuilder.setLimit(query, 5); query = ConseilQueryBuilder.setOutputType(query, ConseilOutput.csv); - const result = await TezosConseilClient.getOperations({ url: 'http://conseil.server', apiKey: 'c0ffee' }, 'alphanet', query); + const result = await TezosConseilClient.getOperations(conseilServer, conseilServer.network, query); expect(result.toString().split('\n').length).to.equal(6); })); + + it('TezosConseilClient.getEntityQueryForId', () => { + const blockLevelQuery = TezosConseilClient.getEntityQueryForId(400000); + const blockHashQuery = TezosConseilClient.getEntityQueryForId('BLffwsPdeh6GMdF1d4i4awjzuYGuMfjVdFAsVenLBzD7nSd73tP'); + const accountHashQuery = TezosConseilClient.getEntityQueryForId('tz3WXYtyDUNL91qfiCJtVUX746QpNv5i5ve5'); + const operationGroupHashQuery = TezosConseilClient.getEntityQueryForId('onkNHtq6KEzqRpdTzEUVVST67i3xrnBaDu3tP91ZRBtHLE5zaeo'); + + expect(blockLevelQuery.entity).to.equals('blocks'); + expect(blockHashQuery.entity).to.equals('blocks'); + expect(accountHashQuery.entity).to.equals('accounts'); + expect(operationGroupHashQuery.entity).to.equals('operations'); + + expect(() => TezosConseilClient.getEntityQueryForId('c0ff33c0ff33c0ff33c0ff33c0ff33c0ff33')).to.throw('Invalid id parameter'); + expect(() => TezosConseilClient.getEntityQueryForId(-1)).to.throw('Invalid numeric id parameter'); + }); }); diff --git a/test/responses.ts b/ConseilJS-core/test/responses.ts similarity index 98% rename from test/responses.ts rename to ConseilJS-core/test/responses.ts index 56c3b926..fe4488d5 100644 --- a/test/responses.ts +++ b/ConseilJS-core/test/responses.ts @@ -1,5 +1,3 @@ -import {BlockMetadata} from '../src/tezos/TezosTypes'; - // BLa9pmsQ5Hf6E9MSqVTHp65wNchXe8WjsGgjKeutAwmeQrd9YsT --- manager not revealed // BLNB68pLiAgXiJHXNUK7CDKRnCx1TqzaNGsRXsASg38wNueb8bx --- manager reveal export const blockHead = { @@ -158,7 +156,7 @@ export const appliedOpList = [ "counter": "17284", "gas_limit": "10160", "storage_limit": "277", - "managerPubkey": "tz1LoKbFyYHTkCnj9mgRKFb9g8pP4Lr3zniP", + "manager_pubkey": "tz1LoKbFyYHTkCnj9mgRKFb9g8pP4Lr3zniP", "balance": "10000000", "delegate": "tz1db53osfzRqqgQeLtBt4kcFcQoXJwPJJ5G", "metadata": { diff --git a/tsconfig.json b/ConseilJS-core/tsconfig.json similarity index 100% rename from tsconfig.json rename to ConseilJS-core/tsconfig.json diff --git a/webpack.config.js b/ConseilJS-core/webpack.config.js similarity index 90% rename from webpack.config.js rename to ConseilJS-core/webpack.config.js index f011a960..57884376 100644 --- a/webpack.config.js +++ b/ConseilJS-core/webpack.config.js @@ -27,10 +27,7 @@ const webConfig = { ] }, node: { - child_process: 'empty', - fs: 'empty', - net: 'empty', - tls: 'empty' + }, plugins: [new CheckerPlugin()], optimization: { diff --git a/ConseilJS-ledgersigner/LICENSE b/ConseilJS-ledgersigner/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/ConseilJS-ledgersigner/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/ConseilJS-ledgersigner/README.md b/ConseilJS-ledgersigner/README.md new file mode 100644 index 00000000..659a0425 --- /dev/null +++ b/ConseilJS-ledgersigner/README.md @@ -0,0 +1 @@ +# ConseilJS-ledgersigner diff --git a/ConseilJS-ledgersigner/package-lock.json b/ConseilJS-ledgersigner/package-lock.json new file mode 100644 index 00000000..6c4ae812 --- /dev/null +++ b/ConseilJS-ledgersigner/package-lock.json @@ -0,0 +1,16404 @@ +{ + "name": "conseiljs-ledgersigner", + "version": "5.0.0-alpha.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/core": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "@babel/generator": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "dev": true, + "requires": { + "@babel/types": "^7.9.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@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": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", + "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/helpers": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", + "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@ledgerhq/devices": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.15.0.tgz", + "integrity": "sha512-b/Mm/+fY8DY3C/i9E7I5NP43dW6Un3GKkHHHI4yLEX8B6TKugR3m/a23UhEaWo5ZaucAU+yA4p4in9l6lyDr1g==", + "requires": { + "@ledgerhq/errors": "^5.15.0", + "@ledgerhq/logs": "^5.15.0", + "rxjs": "^6.5.5" + } + }, + "@ledgerhq/errors": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.15.0.tgz", + "integrity": "sha512-ZlLhR7qaChPgEbvcqOptRepWGm8VhhwOM6kC1gx3WErutbtaOjUX8lLA4ButWFU2f+xTl2rS/5c86wC7qGqGXQ==" + }, + "@ledgerhq/hw-transport": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.15.0.tgz", + "integrity": "sha512-WIHqxEMGa1+MH5xTLLZcjPainFhCihzWVDw3zo1mzUqTzVEgYXFhnn2j6Lboov0Elpit+KiPOA1XuSofslajhg==", + "requires": { + "@ledgerhq/devices": "^5.15.0", + "@ledgerhq/errors": "^5.15.0", + "events": "^3.1.0" + } + }, + "@ledgerhq/hw-transport-node-hid": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.15.0.tgz", + "integrity": "sha512-JX/QnV4hYQESqfyjGwkU0TNHtGEHQ1PHS7ISMqv7bZKvj2hhO3G45xM7fPoLlBa3tZrbDLnNLWkqcFxo60w/jA==", + "requires": { + "@ledgerhq/devices": "^5.15.0", + "@ledgerhq/errors": "^5.15.0", + "@ledgerhq/hw-transport": "^5.15.0", + "@ledgerhq/hw-transport-node-hid-noevents": "^5.15.0", + "@ledgerhq/logs": "^5.15.0", + "lodash": "^4.17.15", + "node-hid": "^1.2.0", + "usb": "^1.6.3" + } + }, + "@ledgerhq/hw-transport-node-hid-noevents": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.15.0.tgz", + "integrity": "sha512-YI82E116gMUJihBD+rDrJX23k5CKWAAEkj175R/ssmVxBCTf3gyAEtaiF4DrdaIVubRK1XFiPbfs/47RHAKrqA==", + "requires": { + "@ledgerhq/devices": "^5.15.0", + "@ledgerhq/errors": "^5.15.0", + "@ledgerhq/hw-transport": "^5.15.0", + "@ledgerhq/logs": "^5.15.0", + "node-hid": "^1.2.0" + } + }, + "@ledgerhq/logs": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.15.0.tgz", + "integrity": "sha512-QuAva3K3YFDtQidi8xAfOQcb+aExJus3p0GhPNscOE+r152klBdiZUHLp818zEeQZT7PRSm83gEknmeUYjGU9A==" + }, + "@types/chai": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", + "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==", + "dev": true + }, + "@types/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-PO2gcfR3Oxa+u0QvECLe1xKXOqYTzCmWf0FhLhjREoW3fPAVamjihL7v1MOVLJLsnAMdLcjkfrs01yvDMwVK4Q==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/mocha": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", + "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", + "dev": true + }, + "@types/nock": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@types/nock/-/nock-11.1.0.tgz", + "integrity": "sha512-jI/ewavBQ7X5178262JQR0ewicPAcJhXS/iFaNJl0VHLfyosZ/kwSrsa6VNQNSO8i9d8SqdRgOtZSOKJ/+iNMw==", + "dev": true, + "requires": { + "nock": "*" + } + }, + "@types/node": { + "version": "13.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", + "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.29.0.tgz", + "integrity": "sha512-X/YAY7azKirENm4QRpT7OVmzok02cSkqeIcLmdz6gXUQG4Hk0Fi9oBAynSAyNXeGdMRuZvjBa0c1Lu0dn/u6VA==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.29.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.29.0.tgz", + "integrity": "sha512-H/6VJr6eWYstyqjWXBP2Nn1hQJyvJoFdDtsHxGiD+lEP7piGnGpb/ZQd+z1ZSB1F7dN+WsxUDh8+S4LwI+f3jw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.29.0.tgz", + "integrity": "sha512-H78M+jcu5Tf6m/5N8iiFblUUv+HJDguMSdFfzwa6vSg9lKR8Mk9BsgeSjO8l2EshKnJKcbv0e8IDDOvSNjl0EA==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.29.0", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.29.0.tgz", + "integrity": "sha512-3YGbtnWy4az16Egy5Fj5CckkVlpIh0MADtAQza+jiMADRSKkjdpzZp/5WuvwK/Qib3Z0HtzrDFeWanS99dNhnA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "awesome-typescript-loader": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz", + "integrity": "sha512-slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.1.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "webpack-log": "^1.2.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bip32-path": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/bip32-path/-/bip32-path-0.4.2.tgz", + "integrity": "sha1-XbBBataCJxLwd4NuJVe4aXwMfJk=" + }, + "bl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", + "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "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": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "requires": { + "check-error": "^1.0.2" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true + }, + "conseiljs": { + "version": "5.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/conseiljs/-/conseiljs-5.0.0-alpha.1.tgz", + "integrity": "sha512-MFZjGPXqTpvya3jdHd32CSsZ9S/QINh/ZdP4GuHsqXzV8Uh4n1ZMxEFX1IkEKxniUgXcI7TqsxNzCiN9bjRbbg==", + "requires": { + "big-integer": "1.6.48", + "blakejs": "1.1.0", + "bs58check": "2.1.2", + "jsonpath-plus": "3.0.0", + "moo": "0.5.0", + "nearley": "2.19.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@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" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "@babel/generator": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "requires": { + "@babel/types": "^7.9.5", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "requires": { + "@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": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "requires": { + "@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": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==" + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } + } + }, + "@babel/types": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==" + }, + "@ledgerhq/devices": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.11.0.tgz", + "integrity": "sha512-S+azwTA/L3g1l6ARN+rVYZeOu6b3uHxf6Ha5oj6UHbXxIdz1DyCVSUHz8SNrjDh0mUlbJugpAgaKBDdC2v9nNA==", + "requires": { + "@ledgerhq/errors": "^5.11.0", + "@ledgerhq/logs": "^5.11.0", + "rxjs": "^6.5.4" + } + }, + "@ledgerhq/errors": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.11.0.tgz", + "integrity": "sha512-o9Mx10+qZwuS6tKe6Z2mQJMClIvVtRNt/tdz4P/pNcGeT/0d6jdUfyF+J5P7RF3au0e9HTxG2LMCPFPZ2Tnibg==" + }, + "@ledgerhq/hw-transport": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.11.0.tgz", + "integrity": "sha512-z56iwv0DZZu20T5q9sNMHFQNVuRKYqzCuNFhY9woWSpmOQkyVHCRiEgOQbN5h6kVri6fkfPkDzqqcsYjJlnT9g==", + "requires": { + "@ledgerhq/devices": "^5.11.0", + "@ledgerhq/errors": "^5.11.0", + "events": "^3.1.0" + } + }, + "@ledgerhq/hw-transport-node-hid": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.11.0.tgz", + "integrity": "sha512-J/hP3IqcgZn/sTGblELkwZcH68Gbv3ZeaRWdhei6K2dAuxae4dxoVUf6PoOcupEOcXT5XzJBNMc5800AwFeOgg==", + "requires": { + "@ledgerhq/devices": "^5.11.0", + "@ledgerhq/errors": "^5.11.0", + "@ledgerhq/hw-transport": "^5.11.0", + "@ledgerhq/hw-transport-node-hid-noevents": "^5.11.0", + "@ledgerhq/logs": "^5.11.0", + "lodash": "^4.17.15", + "node-hid": "^1.2.0", + "usb": "^1.6.0" + } + }, + "@ledgerhq/hw-transport-node-hid-noevents": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.11.0.tgz", + "integrity": "sha512-egE2qaZEHkL89qjbWAnTEV3bYe5ALQRCCL8oTc8JVAu4JaxqCoro4DntXrBjjye7gT6gnUHgok1H5f/DVqX4aw==", + "requires": { + "@ledgerhq/devices": "^5.11.0", + "@ledgerhq/errors": "^5.11.0", + "@ledgerhq/hw-transport": "^5.11.0", + "@ledgerhq/logs": "^5.11.0", + "node-hid": "^1.2.0" + } + }, + "@ledgerhq/logs": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.11.0.tgz", + "integrity": "sha512-NiFDdxLU/z1VGQy0/cbpv7UScMDQ/rU8SznqILSHYTnhK2xvvNFTUkd1W2mpmf9E/hzXFI0UAOieLQ44qovX3w==" + }, + "@types/chai": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", + "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==" + }, + "@types/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-PO2gcfR3Oxa+u0QvECLe1xKXOqYTzCmWf0FhLhjREoW3fPAVamjihL7v1MOVLJLsnAMdLcjkfrs01yvDMwVK4Q==", + "requires": { + "@types/chai": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + }, + "@types/mocha": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", + "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==" + }, + "@types/nock": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@types/nock/-/nock-11.1.0.tgz", + "integrity": "sha512-jI/ewavBQ7X5178262JQR0ewicPAcJhXS/iFaNJl0VHLfyosZ/kwSrsa6VNQNSO8i9d8SqdRgOtZSOKJ/+iNMw==", + "requires": { + "nock": "*" + } + }, + "@types/node": { + "version": "13.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", + "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==" + }, + "@types/node-fetch": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.6.tgz", + "integrity": "sha512-2w0NTwMWF1d3NJMK0Uiq2UNN8htVCyOWOD0jIPjPgC5Ph/YP4dVhs9YxxcMcuLuwAslz0dVEcZQUaqkLs3IzOQ==", + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "@types/zxcvbn": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@types/zxcvbn/-/zxcvbn-4.4.0.tgz", + "integrity": "sha512-GQLOT+SN20a+AI51y3fAimhyTF4Y0RG+YP3gf91OibIZ7CJmPFgoZi+ZR5a+vRbS01LbQosITWum4ATmJ1Z6Pg==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.29.0.tgz", + "integrity": "sha512-X/YAY7azKirENm4QRpT7OVmzok02cSkqeIcLmdz6gXUQG4Hk0Fi9oBAynSAyNXeGdMRuZvjBa0c1Lu0dn/u6VA==", + "requires": { + "@typescript-eslint/experimental-utils": "2.29.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.29.0.tgz", + "integrity": "sha512-H/6VJr6eWYstyqjWXBP2Nn1hQJyvJoFdDtsHxGiD+lEP7piGnGpb/ZQd+z1ZSB1F7dN+WsxUDh8+S4LwI+f3jw==", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.29.0.tgz", + "integrity": "sha512-H78M+jcu5Tf6m/5N8iiFblUUv+HJDguMSdFfzwa6vSg9lKR8Mk9BsgeSjO8l2EshKnJKcbv0e8IDDOvSNjl0EA==", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.29.0", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.29.0.tgz", + "integrity": "sha512-3YGbtnWy4az16Egy5Fj5CckkVlpIh0MADtAQza+jiMADRSKkjdpzZp/5WuvwK/Qib3Z0HtzrDFeWanS99dNhnA==", + "requires": { + "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" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + }, + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==" + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" + }, + "ansi-escapes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "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" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "awesome-typescript-loader": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz", + "integrity": "sha512-slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g==", + "requires": { + "chalk": "^2.4.1", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.1.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "webpack-log": "^1.2.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base-x": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.7.tgz", + "integrity": "sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bip32-path": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/bip32-path/-/bip32-path-0.4.2.tgz", + "integrity": "sha1-XbBBataCJxLwd4NuJVe4aXwMfJk=" + }, + "bip39": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", + "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", + "requires": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + }, + "dependencies": { + "@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" + } + } + }, + "bl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", + "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", + "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "blakejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", + "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "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": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "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" + } + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "requires": { + "check-error": "^1.0.2" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "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" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "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": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copyfiles": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.2.0.tgz", + "integrity": "sha512-iJbHJI+8OKqsq+4JF0rqgRkZzo++jqO6Wf4FUU1JM41cJF6JcY5968XyF4tm3Kkm7ZOMrqlljdm8N9oyY5raGw==", + "requires": { + "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": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "coveralls": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.12.tgz", + "integrity": "sha512-cDOGf4JFb1XKxT811GuLixVgJc3ZFElCLtgxkrdo0hm9Q8lmJ3cP4cZqlQTRE45MvwJNlHYwwzHPuWEv1f4f4Q==", + "requires": { + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", + "log-driver": "^1.2.7", + "minimist": "^1.2.5", + "request": "^2.88.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "requires": { + "mimic-response": "^2.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "requires": { + "strip-bom": "^4.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=" + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", + "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "requires": { + "@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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" + } + } + }, + "eslint-config-airbnb-base": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz", + "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", + "requires": { + "confusing-browser-globals": "^1.0.9", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-import": { + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" + }, + "espree": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "requires": { + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "requires": { + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fromentries": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", + "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": false, + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": false, + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "debug": { + "version": "3.2.6", + "resolved": false, + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": false, + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": false, + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": false, + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": false, + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": false, + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": false, + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": false, + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "optional": true + }, + "minipass": { + "version": "2.9.0", + "resolved": false, + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": false, + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "resolved": false, + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + }, + "needle": { + "version": "2.3.3", + "resolved": false, + "integrity": "sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==", + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": false, + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": false, + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": false, + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": false, + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, + "rc": { + "version": "1.2.8", + "resolved": false, + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": false, + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": false, + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": false, + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": false, + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "tar": { + "version": "4.4.13", + "resolved": false, + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": false, + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "optional": true + }, + "yallist": { + "version": "3.1.1", + "resolved": false, + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + }, + "dependencies": { + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + } + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", + "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + } + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "highlight.js": { + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", + "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", + "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "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.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } + } + } + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==" + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest-worker": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", + "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonpath-plus": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-3.0.0.tgz", + "integrity": "sha512-WQwgWEBgn+SJU1tlDa/GiY5/ngRpa9yrSj8n4BYPHcwoxTDaMEaYCHMOn42hIHHDd3CrUoRr3+HpsK0hCKoxzA==" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "libsodium-sumo": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.6.tgz", + "integrity": "sha512-1XM2w00YkufeLVhFbw9aV+NTftzqECkEU1Amw2MxCbYuyy4L6MH5y8MWOg3shN6X/9R3e1pp6RCSXPnbFRTVCA==" + }, + "libsodium-wrappers-sumo": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.6.tgz", + "integrity": "sha512-pwYQ1ZR/UwXBMY4tFDcjYZrBFgexkhRykzcE9Jv0l/J41Tp7PqHYfHA17YpOxIXrAIRBPVSlPo2VxHoGZZKwXA==", + "requires": { + "libsodium-sumo": "0.7.6" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==" + }, + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "lunr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", + "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==" + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "marked": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", + "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "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" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-classic": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz", + "integrity": "sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g==" + }, + "mocha": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz", + "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.3", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "optional": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "requires": { + "chalk": "^2.4.2" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "requires": { + "picomatch": "^2.0.4" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "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-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "moo": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.0.tgz", + "integrity": "sha512-AMv6iqhTEd5vT/cQlH6cammKS5ekyHhyqTRKi5zKMWl1RTyFnQ3ohPSBNSm8ySe2wlxSKwDonr9D5ZT44mdO3g==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "nearley": { + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.19.1.tgz", + "integrity": "sha512-xq47GIUGXxU9vQg7g/y1o1xuKnkO7ev4nRWqftmQrLkfnE/FjRqDaGOUakM8XHPn/6pW3bGjU2wgoJyId90rqg==", + "requires": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" + } + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "nock": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-12.0.3.tgz", + "integrity": "sha512-QNb/j8kbFnKCiyqi9C5DD0jH/FubFGj5rt9NQFONXwQm3IPB0CULECg/eS3AU1KgZb/6SwUa4/DTRKhVxkGABw==", + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.13", + "propagate": "^2.0.0" + } + }, + "node-abi": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.15.0.tgz", + "integrity": "sha512-FeLpTS0F39U7hHZU1srAK4Vx+5AHNVOTP+hxBNQknR/54laTHSFIJkDWDqiquY1LeLUgTfPN7sLPhMubx0PLAg==", + "requires": { + "semver": "^5.4.1" + } + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "node-hid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-1.2.0.tgz", + "integrity": "sha512-ap06Wo1E0aGrZf0t1zvjWSk+IzI6yvKpTDYQRIrdxLHEelifnGDx6XOb2VVlrQhxzM4etma8jH/i0M1LUB55dA==", + "requires": { + "bindings": "^1.5.0", + "nan": "^2.14.0", + "prebuild-install": "^5.3.3" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^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" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nyc": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.1.tgz", + "integrity": "sha512-n0MBXYBYRqa67IVt62qW1r/d9UH/Qtr7SF1w/nQLJ9KxvWF6b2xCHImRAixHN9tnMMYHC2P14uo6KddNGwMgGg==", + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "requires": { + "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-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "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" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "requires": { + "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-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "prebuild-install": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.3.tgz", + "integrity": "sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g==", + "requires": { + "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": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "requires": { + "fromentries": "^1.2.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "psl": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", + "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=" + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "requires": { + "es6-error": "^4.0.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.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" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "request-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.5.tgz", + "integrity": "sha512-ZgnepCykFdmpq86fKGwqntyTiUrHycALuGggpyCZwMvGaZWgxW6yagT0FHkgo5LzYvOaCNvxYwWYIjevSH1EDg==", + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "requires": { + "lodash": "^4.17.15" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.1.tgz", + "integrity": "sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + }, + "simple-get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.18.tgz", + "integrity": "sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "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" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "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" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "tar-stream": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", + "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", + "requires": { + "bl": "^4.0.1", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "terser": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz", + "integrity": "sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "ts-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.1.tgz", + "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "ts-node": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.9.0.tgz", + "integrity": "sha512-rwkXfOs9zmoHrV8xE++dmNd6ZIS+nmHHCxcV53ekGJrxFLMbp+pizpPS07ARvhwneCIECPppOwbZHvw9sQtU4w==", + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + } + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "tsconfig-paths": "^3.4.0" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typedoc": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.4.tgz", + "integrity": "sha512-4Lotef1l6lNU5Fulpux809WPlF9CkmcXfv5QFyanrjYlxMFxSdARRdsy8Jv1OU3z0vjR4JsvUQT0YpiPqztcOA==", + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.6", + "highlight.js": "^9.18.1", + "lodash": "^4.17.15", + "lunr": "^2.3.8", + "marked": "0.8.2", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.3", + "typedoc-default-themes": "^0.10.0" + } + }, + "typedoc-default-themes": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.1.tgz", + "integrity": "sha512-SuqAQI0CkwhqSJ2kaVTgl37cWs733uy9UGUqwtcds8pkFK8oRF4rZmCq+FXTGIb9hIUOu40rf5Kojg0Ha6akeg==", + "requires": { + "lunr": "^2.3.8" + } + }, + "typedoc-plugin-markdown": { + "version": "2.2.17", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-2.2.17.tgz", + "integrity": "sha512-eE6cTeqsZIbjur6RG91Lhx1vTwjR49OHwVPRlmsxY3dthS4FNRL8sHxT5Y9pkosBwv1kSmNGQEPHjMYy1Ag6DQ==", + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.3" + } + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==" + }, + "uglify-js": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.0.tgz", + "integrity": "sha512-j5wNQBWaql8gr06dOUrfaohHlscboQZ9B8sNsoK5o4sBjm7Ht9dxSbrMXyktQpA16Acaij8AcoozteaPYZON0g==", + "optional": true, + "requires": { + "commander": "~2.20.3" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "usb": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/usb/-/usb-1.6.2.tgz", + "integrity": "sha512-KcovLXRQuH63iEtnqXyDQGOi5dXHpLM5lZBIUsqSJQToua8nL2sVCieQTkzQBfLe5mCuvk40MgKciI61lgevWw==", + "requires": { + "bindings": "^1.4.0", + "nan": "2.13.2", + "prebuild-install": "^5.3.3" + }, + "dependencies": { + "nan": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.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.3", + "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.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "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" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "requires": { + "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" + } + } + } + }, + "webpack-cli": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", + "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==" + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "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.0" + } + } + } + }, + "webpack-log": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-node-externals": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz", + "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==" + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "requires": { + "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.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + } + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "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": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "coveralls": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.12.tgz", + "integrity": "sha512-cDOGf4JFb1XKxT811GuLixVgJc3ZFElCLtgxkrdo0hm9Q8lmJ3cP4cZqlQTRE45MvwJNlHYwwzHPuWEv1f4f4Q==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", + "log-driver": "^1.2.7", + "minimist": "^1.2.5", + "request": "^2.88.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "requires": { + "mimic-response": "^2.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "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": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + } + } + }, + "eslint-config-airbnb-base": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz", + "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.9", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fromentries": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", + "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + }, + "dependencies": { + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + } + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", + "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.0.3.tgz", + "integrity": "sha512-9FG7SSzv9yOY5CGGxfI6NDm7xLYtMOjKtPBxw7Zff3t5UcRcUNTGEeS8lNjhceL34KeetLMoGMFTGoaa83HwyQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "dev": true, + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "lunr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", + "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "marked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz", + "integrity": "sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "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" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "mocha": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz", + "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.3", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nock": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-12.0.3.tgz", + "integrity": "sha512-QNb/j8kbFnKCiyqi9C5DD0jH/FubFGj5rt9NQFONXwQm3IPB0CULECg/eS3AU1KgZb/6SwUa4/DTRKhVxkGABw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.13", + "propagate": "^2.0.0" + } + }, + "node-abi": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.16.0.tgz", + "integrity": "sha512-+sa0XNlWDA6T+bDLmkCUYn6W5k5W6BPRL6mqzSCs6H/xUgtl4D5x2fORKDzopKiU6wsyn/+wXlRXwXeSp+mtoA==", + "requires": { + "semver": "^5.4.1" + } + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node-hid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-1.2.0.tgz", + "integrity": "sha512-ap06Wo1E0aGrZf0t1zvjWSk+IzI6yvKpTDYQRIrdxLHEelifnGDx6XOb2VVlrQhxzM4etma8jH/i0M1LUB55dA==", + "requires": { + "bindings": "^1.5.0", + "nan": "^2.14.0", + "prebuild-install": "^5.3.3" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^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" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nyc": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.1.tgz", + "integrity": "sha512-n0MBXYBYRqa67IVt62qW1r/d9UH/Qtr7SF1w/nQLJ9KxvWF6b2xCHImRAixHN9tnMMYHC2P14uo6KddNGwMgGg==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "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-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "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" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "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-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prebuild-install": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.3.tgz", + "integrity": "sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g==", + "requires": { + "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": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.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" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, + "request-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.5.tgz", + "integrity": "sha512-ZgnepCykFdmpq86fKGwqntyTiUrHycALuGggpyCZwMvGaZWgxW6yagT0FHkgo5LzYvOaCNvxYwWYIjevSH1EDg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + }, + "simple-get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "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": { + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.18.tgz", + "integrity": "sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "tar-stream": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", + "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", + "requires": { + "bl": "^4.0.1", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "terser": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", + "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "ts-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.1.tgz", + "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "ts-node": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.1.tgz", + "integrity": "sha512-bdNz1L4ekHiJul6SHtZWs1ujEKERJnHs4HxN7rjTyyVOFf3HaJ6sLqe6aPG62XTzAB/63pKRh5jTSWL0D7bsvw==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "tsconfig-paths": "^3.4.0" + } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typedoc": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.6.tgz", + "integrity": "sha512-pQiYnhG3yJk7939cv2n8uFoTsSgy5Hfiw0dgOQYa9nT9Ya1013dMctQdAXMj8JbNu7KhcauQyq9Zql9D/TziLw==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.6", + "highlight.js": "^10.0.0", + "lodash": "^4.17.15", + "lunr": "^2.3.8", + "marked": "1.0.0", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.4", + "typedoc-default-themes": "^0.10.1" + } + }, + "typedoc-default-themes": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.1.tgz", + "integrity": "sha512-SuqAQI0CkwhqSJ2kaVTgl37cWs733uy9UGUqwtcds8pkFK8oRF4rZmCq+FXTGIb9hIUOu40rf5Kojg0Ha6akeg==", + "dev": true, + "requires": { + "lunr": "^2.3.8" + } + }, + "typedoc-plugin-markdown": { + "version": "2.2.17", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-2.2.17.tgz", + "integrity": "sha512-eE6cTeqsZIbjur6RG91Lhx1vTwjR49OHwVPRlmsxY3dthS4FNRL8sHxT5Y9pkosBwv1kSmNGQEPHjMYy1Ag6DQ==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.3" + } + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "uglify-js": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.2.tgz", + "integrity": "sha512-zGVwKslUAD/EeqOrD1nQaBmXIHl1Vw371we8cvS8I6mYK9rmgX5tv8AAeJdfsQ3Kk5mGax2SVV/AizxdNGhl7Q==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "usb": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/usb/-/usb-1.6.3.tgz", + "integrity": "sha512-23KYMjaWydACd8wgGKMQ4MNwFspAT6Xeim4/9Onqe5Rz/nMb4TM/WHL+qPT0KNFxzNKzAs63n1xQWGEtgaQ2uw==", + "requires": { + "bindings": "^1.4.0", + "nan": "2.13.2", + "prebuild-install": "^5.3.3" + }, + "dependencies": { + "nan": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "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" + } + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.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.3", + "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.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "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" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "webpack-cli": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", + "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "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.0" + } + } + } + }, + "webpack-log": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-node-externals": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz", + "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + } + } +} diff --git a/ConseilJS-ledgersigner/package.json b/ConseilJS-ledgersigner/package.json new file mode 100644 index 00000000..a45bb121 --- /dev/null +++ b/ConseilJS-ledgersigner/package.json @@ -0,0 +1,156 @@ +{ + "name": "conseiljs-ledgersigner", + "version": "5.0.0-alpha.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "test": "mocha \"test/**/TezosLanguageUtil.spec.ts\"", + "integration-test": "mocha -r source-map-support/register -r ts-node/register --full-trace -t 600000 -b false \"integration_test/**/*.spec.ts\"", + "format": "eslint --fix-dry-run src/*/*.ts", + "coverage": "nyc mocha \"test/**/*.spec.ts\" || nyc report | coveralls", + "integration-coverage": "nyc mocha -r source-map-support/register -r ts-node/register --full-trace -t 600000 -b false \"integration_test/**/*.spec.ts\" && nyc report | coveralls", + "release-check": "npm run test && npm audit && npm outdated", + "doc": "rm -rf ./tsdoc && typedoc --readme none --excludeNotExported --mode file --theme markdown --out ./tsdoc ./src", + "package": "rm -rf ./dist && tsc" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Cryptonomic/ConseilJS.git" + }, + "keywords": [ + "tezos", + "conseil", + "blockchain analytics", + "blockchain reporting", + "blockchain data access", + "web3", + "dapp" + ], + "author": "Cryptonomic Inc", + "license": "Apache-2.0", + "licenses": [ + { + "type": "Apache-2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + } + ], + "bugs": { + "url": "https://github.com/Cryptonomic/ConseilJS/issues" + }, + "homepage": "https://cryptonomic.github.io/ConseilJS/#/", + "nyc": { + "include": [ + "src/**/*.ts" + ], + "extension": [ + ".ts" + ], + "require": [ + "ts-node/register" + ], + "reporter": [ + "text-lcov" + ], + "sourceMap": true, + "instrument": true + }, + "dependencies": { + "@ledgerhq/hw-transport": "5.15.0", + "@ledgerhq/hw-transport-node-hid": "5.15.0", + "bip32-path": "0.4.2", + "conseiljs": "5.0.0-alpha.1" + }, + "devDependencies": { + "@types/chai": "4.2.11", + "@types/chai-as-promised": "7.1.2", + "@types/mocha": "7.0.2", + "@types/nock": "11.1.0", + "@types/node": "13.9.1", + "@typescript-eslint/eslint-plugin": "2.29.0", + "@typescript-eslint/parser": "2.29.0", + "awesome-typescript-loader": "5.2.1", + "chai": "4.2.0", + "chai-as-promised": "7.1.1", + "coveralls": "3.0.12", + "eslint": "6.8.0", + "eslint-config-airbnb-base": "14.1.0", + "eslint-plugin-import": "2.20.2", + "mocha": "7.1.1", + "nock": "12.0.3", + "nyc": "15.0.1", + "request-promise": "4.2.5", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.18", + "terser-webpack-plugin": "2.3.5", + "ts-loader": "6.2.1", + "ts-node": "8.10.1", + "tsconfig-paths-webpack-plugin": "3.2.0", + "typedoc": "0.17.6", + "typedoc-plugin-markdown": "2.2.17", + "typescript": "3.8.3", + "webpack": "4.43.0", + "webpack-cli": "3.3.11", + "webpack-node-externals": "1.7.2" + }, + "engines": { + "node": ">=12.16.x", + "npm": ">=6.14.x" + }, + "eslintConfig": { + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "env": { + "mocha": true, + "node": true + }, + "overrides": [ + { + "files": [ + "**/*.ts" + ] + } + ], + "extends": "airbnb-base", + "rules": { + "comma-dangle": [ + 2, + "never" + ], + "curly": [ + 2, + "all" + ], + "indent": [ + 1, + 4 + ], + "max-len": [ + 2, + { + "code": 200, + "ignoreTrailingComments": true + } + ], + "no-tabs": [ + 2 + ], + "quotes": [ + 2, + "single" + ], + "array-element-newline": [ + 2, + { + "multiline": true, + "minItems": 5 + } + ] + } + } +} diff --git a/ConseilJS-ledgersigner/src/LedgerKeyStore.ts b/ConseilJS-ledgersigner/src/LedgerKeyStore.ts new file mode 100644 index 00000000..afe9cea1 --- /dev/null +++ b/ConseilJS-ledgersigner/src/LedgerKeyStore.ts @@ -0,0 +1,28 @@ +import { KeyStore, KeyStoreCurve, KeyStoreType } from 'conseiljs'; +import { TezosMessageUtils } from 'conseiljs'; + +import { TezosLedgerConnector } from './TezosLedgerConnector'; + +/** + * A set of helper functions + */ +export namespace KeyStoreUtils { + export async function unlockAddress(derivationPath: string): Promise { + const hexEncodedPublicKey = await getTezosPublicKey(derivationPath); + const publicKeyBytes = Buffer.from(hexEncodedPublicKey, 'hex').slice(1); // We slice off a byte to make sure we have a 64 bits coming in from the ledger package + const publicKey = TezosMessageUtils.readKeyWithHint(publicKeyBytes, "edpk"); + const publicKeyHash = TezosMessageUtils.computeKeyHash(publicKeyBytes, 'tz1'); + + return { publicKey, secretKey: '', publicKeyHash, curve: KeyStoreCurve.ED25519, storeType: KeyStoreType.Hardware, derivationPath }; + } + + /** + * Given a BIP44 derivation path for Tezos, get the Tezos Public Key + * + * @param derivationPath BIP32/44 derivation path + */ + export async function getTezosPublicKey(derivationPath: string): Promise { + const xtz = await TezosLedgerConnector.getInstance(); + return xtz.getAddress(derivationPath, true); + } +} diff --git a/ConseilJS-ledgersigner/src/LedgerSigner.ts b/ConseilJS-ledgersigner/src/LedgerSigner.ts new file mode 100644 index 00000000..53017698 --- /dev/null +++ b/ConseilJS-ledgersigner/src/LedgerSigner.ts @@ -0,0 +1,42 @@ +import { Signer, TezosMessageUtils } from 'conseiljs'; + +import { TezosLedgerConnector } from './TezosLedgerConnector' + +/** + * + */ +export class LedgerSigner implements Signer { + readonly derivationPath: string; + readonly connector: TezosLedgerConnector; + + constructor(connector: TezosLedgerConnector, derivationPath: string) { + this.connector = connector; + this.derivationPath = derivationPath; + } + + /** + * Given a BIP44 derivation path for Tezos, and the hex encoded, watermarked Tezos Operation, sign using the ledger + * + * @param derivationPath BIP44 Derivation Path + * @param watermarkedOpInHex Operation + */ + public async sign(bytes: Buffer): Promise { + const result = await this.connector.signOperation(this.derivationPath, bytes); + const signatureBytes = Buffer.from(result, 'hex'); + + return signatureBytes; + } + + /** + * Signs arbitrary text using Ledger devices. + * + * @param message UTF-8 test. + * @returns {Promise} base58check-encoded signature prefixed with 'edsig'. + */ + public async signText(message: string): Promise { + const result = await this.connector.signHex(this.derivationPath, Buffer.from(message, 'utf8')); + const messageSig = Buffer.from(result, 'hex'); + + return TezosMessageUtils.readSignatureWithHint(messageSig, 'edsig'); + } +} diff --git a/ConseilJS-ledgersigner/src/TezosLedgerConnector.ts b/ConseilJS-ledgersigner/src/TezosLedgerConnector.ts new file mode 100644 index 00000000..0fe27695 --- /dev/null +++ b/ConseilJS-ledgersigner/src/TezosLedgerConnector.ts @@ -0,0 +1,126 @@ +import Transport from '@ledgerhq/hw-transport'; +import * as bip32path from 'bip32-path'; + +export enum Curve { // taken from https://github.com/obsidiansystems/ledger-app-tezos/blob/master/APDUs.md + ED25519 = 0x00, + SECP256K1 = 0x01, + SECP256R1 = 0x02 +}; + +export enum Instruction { // taken from https://github.com/obsidiansystems/ledger-app-tezos/blob/master/APDUs.md + INS_VERSION = 0x00, + INS_GET_PUBLIC_KEY = 0x02, + INS_PROMPT_PUBLIC_KEY = 0x03, + INS_SIGN = 0x04, + INS_SIGN_UNSAFE = 0x05 +} +class TransportInstance { + static transport = null; + static async getInstance() { + if (this.transport === null) { + this.transport = await Transport.create(); + } + return this.transport + } +} + +export class TezosLedgerConnector { + private transport: Transport; + + private constructor(transport: Transport) { + this.transport = transport; + transport.decorateAppAPIMethods(this, ["getAddress", "signOperation", "signHash", "getVersion"], "XTZ"); + } + + public static async getInstance() { + return new TezosLedgerConnector(await TransportInstance.getInstance()); + } + + /** + * Get Tezos public key hash for a given BIP32/44 path and curve. Convention for Tezos derivation paths is 44'/1729'/n'/n'/n'. + * + * @param {string} path BIP32/44 derivation path + * @param {boolean} prompt Prompt the user to provide the key on the hardware device, default true. + * @param {Curve} curve Curve to use for key generation, one of: ED25519 (default), SECP256K1, SECP256R1 + */ + async getAddress(path: string, prompt: boolean = true, curve: Curve = Curve.ED25519): Promise { + try { + const response = await this.transport.send(0x80, prompt ? Instruction.INS_PROMPT_PUBLIC_KEY : Instruction.INS_GET_PUBLIC_KEY, 0x00, curve, this.pathToBuffer(path)); + const publicKey = response.slice(1, 1 + response[0]); + + return publicKey.toString('hex'); + } catch (err) { + if (err.message.includes('0x6985')) { + throw new Error('Public key request rejected on device.'); + } else { + throw err; + } + } + } + + /** + * Signs an operation hex, will attempt to parse the parameters and present them to the user. + * + * @param {string} path BIP32/44 derivation path + * @param {string} hex Operation hex + * @param {Curve} curve Curve, defaults to ED25519 + */ + async signOperation(path: string, bytes: Buffer, curve: Curve = Curve.ED25519): Promise { + return this.sign(path, curve, Instruction.INS_SIGN, bytes); + } + + /** + * Signs a hex string without attempting to parse it on the device for parameter verification by the user. + * + * @param {string} path BIP32/44 derivation path + * @param {string} hex Hex + * @param {Curve} curve Curve, defaults to ED25519 + */ + async signHex(path: string, bytes: Buffer, curve: Curve = Curve.ED25519): Promise { + return this.sign(path, curve, Instruction.INS_SIGN_UNSAFE, bytes); + } + + /** + * Gets the version of the Tezos application running on the Ledger device. + */ + async getVersionString(): Promise { + const [appFlag, major, minor, patch] = await this.transport.send(0x80, Instruction.INS_VERSION, 0x00, 0x00, new Buffer(0)); + return `${major}.${minor}.${patch}${appFlag === 1 ? ' baker' : ''}`; + } + + private async sign(path: string, curve: Curve, instruction: number, bytes: Buffer): Promise { + let message: Buffer[] = []; + + message.push(this.pathToBuffer(path)); + + const maxChunkSize = 230; // 255 + for (let offset = 0, part = 0; offset !== bytes.length; offset += part) { + part = offset + maxChunkSize > bytes.length ? bytes.length - offset : maxChunkSize; + + const buffer = Buffer.alloc(part); + bytes.copy(buffer, 0, offset, offset + part); + message.push(buffer); + } + + let response = await this.transport.send(0x80, instruction, 0x00, curve, message[0]); + for (let i = 1; i < message.length; i++) { + let code = (i === message.length - 1) ? 0x81 : 0x01; + response = await this.transport.send(0x80, instruction, code, curve, message[i]); + } + + const signature = response.slice(0, response.length - 2).toString("hex"); + + return signature; + } + + private pathToBuffer(path: string): Buffer { + let pathArray = bip32path.fromString(path).toPathArray(); + let buffer = Buffer.alloc(1 + pathArray.length * 4); + buffer[0] = pathArray.length; + pathArray.forEach((element, index) => { + buffer.writeUInt32BE(element, 1 + 4 * index); + }); + + return buffer; + } +} diff --git a/ConseilJS-ledgersigner/src/index.ts b/ConseilJS-ledgersigner/src/index.ts new file mode 100644 index 00000000..958adc3b --- /dev/null +++ b/ConseilJS-ledgersigner/src/index.ts @@ -0,0 +1,3 @@ +export * from './LedgerKeyStore'; +export * from './LedgerSigner'; +export * from './TezosLedgerConnector'; diff --git a/ConseilJS-ledgersigner/tsconfig.json b/ConseilJS-ledgersigner/tsconfig.json new file mode 100644 index 00000000..94ecf67a --- /dev/null +++ b/ConseilJS-ledgersigner/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "commonjs", + "declaration": true, + "sourceMap": true, + "outDir": "dist", + "removeComments": true, + "strict": true, + "noImplicitAny": false, + "baseUrl": "src", + "esModuleInterop": true + }, + "exclude": [ + "node_modules" + ], + "include": [ + "src" + ] +} \ No newline at end of file diff --git a/ConseilJS-softsigner/LICENSE b/ConseilJS-softsigner/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/ConseilJS-softsigner/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/ConseilJS-softsigner/README.md b/ConseilJS-softsigner/README.md new file mode 100644 index 00000000..84e37ed5 --- /dev/null +++ b/ConseilJS-softsigner/README.md @@ -0,0 +1 @@ +# ConseilJS-types diff --git a/ConseilJS-softsigner/package-lock.json b/ConseilJS-softsigner/package-lock.json new file mode 100644 index 00000000..c48b5fc3 --- /dev/null +++ b/ConseilJS-softsigner/package-lock.json @@ -0,0 +1,15584 @@ +{ + "name": "conseiljs-softsigner", + "version": "5.0.0-alpha.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/core": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "dev": true, + "requires": { + "@babel/types": "^7.9.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "dev": true, + "requires": { + "@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": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", + "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/helpers": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", + "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@types/chai": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", + "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==", + "dev": true + }, + "@types/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-PO2gcfR3Oxa+u0QvECLe1xKXOqYTzCmWf0FhLhjREoW3fPAVamjihL7v1MOVLJLsnAMdLcjkfrs01yvDMwVK4Q==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/mocha": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", + "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", + "dev": true + }, + "@types/nock": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@types/nock/-/nock-11.1.0.tgz", + "integrity": "sha512-jI/ewavBQ7X5178262JQR0ewicPAcJhXS/iFaNJl0VHLfyosZ/kwSrsa6VNQNSO8i9d8SqdRgOtZSOKJ/+iNMw==", + "dev": true, + "requires": { + "nock": "*" + } + }, + "@types/node": { + "version": "13.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", + "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.29.0.tgz", + "integrity": "sha512-X/YAY7azKirENm4QRpT7OVmzok02cSkqeIcLmdz6gXUQG4Hk0Fi9oBAynSAyNXeGdMRuZvjBa0c1Lu0dn/u6VA==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.29.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.29.0.tgz", + "integrity": "sha512-H/6VJr6eWYstyqjWXBP2Nn1hQJyvJoFdDtsHxGiD+lEP7piGnGpb/ZQd+z1ZSB1F7dN+WsxUDh8+S4LwI+f3jw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.29.0.tgz", + "integrity": "sha512-H78M+jcu5Tf6m/5N8iiFblUUv+HJDguMSdFfzwa6vSg9lKR8Mk9BsgeSjO8l2EshKnJKcbv0e8IDDOvSNjl0EA==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.29.0", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.29.0.tgz", + "integrity": "sha512-3YGbtnWy4az16Egy5Fj5CckkVlpIh0MADtAQza+jiMADRSKkjdpzZp/5WuvwK/Qib3Z0HtzrDFeWanS99dNhnA==", + "dev": true, + "requires": { + "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" + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "awesome-typescript-loader": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz", + "integrity": "sha512-slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.1.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "webpack-log": "^1.2.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bip39": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", + "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", + "requires": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + }, + "dependencies": { + "@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" + } + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.1.0.tgz", + "integrity": "sha512-VYxo7cDCeYUoBZ0ZCy4UyEUCP3smyBd4DRQM5nrFS1jJjPJjX7rP3oLRpPoWfkhQfyJ0I9ZbHbKafrFD/SGlrg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "requires": { + "check-error": "^1.0.2" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true + }, + "conseiljs": { + "version": "file:../ConseilJS-core", + "requires": { + "big-integer": "1.6.48", + "blakejs": "1.1.0", + "bs58check": "2.1.2", + "jsonpath-plus": "3.0.0", + "moo": "0.5.0", + "nearley": "2.19.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@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" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "@babel/generator": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "requires": { + "@babel/types": "^7.9.5", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "requires": { + "@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": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "requires": { + "@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": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==" + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } + } + }, + "@babel/types": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==" + }, + "@types/chai": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", + "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==" + }, + "@types/chai-as-promised": { + "version": "7.1.2", + "resolved": false, + "integrity": "sha512-PO2gcfR3Oxa+u0QvECLe1xKXOqYTzCmWf0FhLhjREoW3fPAVamjihL7v1MOVLJLsnAMdLcjkfrs01yvDMwVK4Q==", + "requires": { + "@types/chai": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + }, + "@types/mocha": { + "version": "7.0.2", + "resolved": false, + "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==" + }, + "@types/nock": { + "version": "11.1.0", + "resolved": false, + "integrity": "sha512-jI/ewavBQ7X5178262JQR0ewicPAcJhXS/iFaNJl0VHLfyosZ/kwSrsa6VNQNSO8i9d8SqdRgOtZSOKJ/+iNMw==", + "requires": { + "nock": "*" + } + }, + "@types/node": { + "version": "13.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", + "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==" + }, + "@types/node-fetch": { + "version": "2.5.6", + "resolved": false, + "integrity": "sha512-2w0NTwMWF1d3NJMK0Uiq2UNN8htVCyOWOD0jIPjPgC5Ph/YP4dVhs9YxxcMcuLuwAslz0dVEcZQUaqkLs3IzOQ==", + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.29.0", + "resolved": false, + "integrity": "sha512-X/YAY7azKirENm4QRpT7OVmzok02cSkqeIcLmdz6gXUQG4Hk0Fi9oBAynSAyNXeGdMRuZvjBa0c1Lu0dn/u6VA==", + "requires": { + "@typescript-eslint/experimental-utils": "2.29.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.29.0.tgz", + "integrity": "sha512-H/6VJr6eWYstyqjWXBP2Nn1hQJyvJoFdDtsHxGiD+lEP7piGnGpb/ZQd+z1ZSB1F7dN+WsxUDh8+S4LwI+f3jw==", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "2.29.0", + "resolved": false, + "integrity": "sha512-H78M+jcu5Tf6m/5N8iiFblUUv+HJDguMSdFfzwa6vSg9lKR8Mk9BsgeSjO8l2EshKnJKcbv0e8IDDOvSNjl0EA==", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.29.0", + "@typescript-eslint/typescript-estree": "2.29.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.29.0.tgz", + "integrity": "sha512-3YGbtnWy4az16Egy5Fj5CckkVlpIh0MADtAQza+jiMADRSKkjdpzZp/5WuvwK/Qib3Z0HtzrDFeWanS99dNhnA==", + "requires": { + "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" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" + }, + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==" + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" + }, + "ansi-escapes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "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" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "awesome-typescript-loader": { + "version": "5.2.1", + "resolved": false, + "integrity": "sha512-slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g==", + "requires": { + "chalk": "^2.4.1", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.1.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "webpack-log": "^1.2.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base-x": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.7.tgz", + "integrity": "sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "blakejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", + "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "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": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "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" + } + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chai": { + "version": "4.2.0", + "resolved": false, + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": false, + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "requires": { + "check-error": "^1.0.2" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "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" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "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": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copyfiles": { + "version": "2.2.0", + "resolved": false, + "integrity": "sha512-iJbHJI+8OKqsq+4JF0rqgRkZzo++jqO6Wf4FUU1JM41cJF6JcY5968XyF4tm3Kkm7ZOMrqlljdm8N9oyY5raGw==", + "requires": { + "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-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "coveralls": { + "version": "3.0.12", + "resolved": false, + "integrity": "sha512-cDOGf4JFb1XKxT811GuLixVgJc3ZFElCLtgxkrdo0hm9Q8lmJ3cP4cZqlQTRE45MvwJNlHYwwzHPuWEv1f4f4Q==", + "requires": { + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", + "log-driver": "^1.2.7", + "minimist": "^1.2.5", + "request": "^2.88.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "requires": { + "strip-bom": "^4.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=" + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", + "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint": { + "version": "6.8.0", + "resolved": false, + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "requires": { + "@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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" + } + } + }, + "eslint-config-airbnb-base": { + "version": "14.1.0", + "resolved": false, + "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", + "requires": { + "confusing-browser-globals": "^1.0.9", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-import": { + "version": "2.20.2", + "resolved": false, + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" + }, + "espree": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "requires": { + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "requires": { + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fromentries": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", + "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": false, + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": false, + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "debug": { + "version": "3.2.6", + "resolved": false, + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": false, + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": false, + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": false, + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": false, + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": false, + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": false, + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": false, + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "optional": true + }, + "minipass": { + "version": "2.9.0", + "resolved": false, + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": false, + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "resolved": false, + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + }, + "needle": { + "version": "2.3.3", + "resolved": false, + "integrity": "sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==", + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": false, + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": false, + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": false, + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": false, + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": false, + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, + "rc": { + "version": "1.2.8", + "resolved": false, + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": false, + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": false, + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": false, + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": false, + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": false, + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "tar": { + "version": "4.4.13", + "resolved": false, + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": false, + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "optional": true + }, + "yallist": { + "version": "3.1.1", + "resolved": false, + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + }, + "dependencies": { + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + } + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", + "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + } + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "highlight.js": { + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", + "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", + "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "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.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } + } + } + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==" + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest-worker": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", + "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonpath-plus": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-3.0.0.tgz", + "integrity": "sha512-WQwgWEBgn+SJU1tlDa/GiY5/ngRpa9yrSj8n4BYPHcwoxTDaMEaYCHMOn42hIHHDd3CrUoRr3+HpsK0hCKoxzA==" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.8", + "resolved": false, + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==" + }, + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "lunr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", + "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==" + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "marked": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", + "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "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" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "7.1.1", + "resolved": false, + "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.3", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "optional": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "requires": { + "chalk": "^2.4.2" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "requires": { + "picomatch": "^2.0.4" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "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-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "moo": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.0.tgz", + "integrity": "sha512-AMv6iqhTEd5vT/cQlH6cammKS5ekyHhyqTRKi5zKMWl1RTyFnQ3ohPSBNSm8ySe2wlxSKwDonr9D5ZT44mdO3g==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "nearley": { + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.19.1.tgz", + "integrity": "sha512-xq47GIUGXxU9vQg7g/y1o1xuKnkO7ev4nRWqftmQrLkfnE/FjRqDaGOUakM8XHPn/6pW3bGjU2wgoJyId90rqg==", + "requires": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" + } + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "nock": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-12.0.3.tgz", + "integrity": "sha512-QNb/j8kbFnKCiyqi9C5DD0jH/FubFGj5rt9NQFONXwQm3IPB0CULECg/eS3AU1KgZb/6SwUa4/DTRKhVxkGABw==", + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.13", + "propagate": "^2.0.0" + } + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": false, + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^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" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nyc": { + "version": "15.0.1", + "resolved": false, + "integrity": "sha512-n0MBXYBYRqa67IVt62qW1r/d9UH/Qtr7SF1w/nQLJ9KxvWF6b2xCHImRAixHN9tnMMYHC2P14uo6KddNGwMgGg==", + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "requires": { + "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-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "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" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "requires": { + "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-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "requires": { + "fromentries": "^1.2.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "psl": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", + "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=" + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "requires": { + "es6-error": "^4.0.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.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" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "request-promise": { + "version": "4.2.5", + "resolved": false, + "integrity": "sha512-ZgnepCykFdmpq86fKGwqntyTiUrHycALuGggpyCZwMvGaZWgxW6yagT0FHkgo5LzYvOaCNvxYwWYIjevSH1EDg==", + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "requires": { + "lodash": "^4.17.15" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.1.tgz", + "integrity": "sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": false, + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.18.tgz", + "integrity": "sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "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" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "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" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "terser": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz", + "integrity": "sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.5", + "resolved": false, + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "ts-loader": { + "version": "6.2.1", + "resolved": false, + "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "ts-node": { + "version": "8.9.0", + "resolved": false, + "integrity": "sha512-rwkXfOs9zmoHrV8xE++dmNd6ZIS+nmHHCxcV53ekGJrxFLMbp+pizpPS07ARvhwneCIECPppOwbZHvw9sQtU4w==", + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + } + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.2.0", + "resolved": false, + "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "tsconfig-paths": "^3.4.0" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typedoc": { + "version": "0.17.4", + "resolved": false, + "integrity": "sha512-4Lotef1l6lNU5Fulpux809WPlF9CkmcXfv5QFyanrjYlxMFxSdARRdsy8Jv1OU3z0vjR4JsvUQT0YpiPqztcOA==", + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.6", + "highlight.js": "^9.18.1", + "lodash": "^4.17.15", + "lunr": "^2.3.8", + "marked": "0.8.2", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.3", + "typedoc-default-themes": "^0.10.0" + } + }, + "typedoc-default-themes": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.1.tgz", + "integrity": "sha512-SuqAQI0CkwhqSJ2kaVTgl37cWs733uy9UGUqwtcds8pkFK8oRF4rZmCq+FXTGIb9hIUOu40rf5Kojg0Ha6akeg==", + "requires": { + "lunr": "^2.3.8" + } + }, + "typedoc-plugin-markdown": { + "version": "2.2.17", + "resolved": false, + "integrity": "sha512-eE6cTeqsZIbjur6RG91Lhx1vTwjR49OHwVPRlmsxY3dthS4FNRL8sHxT5Y9pkosBwv1kSmNGQEPHjMYy1Ag6DQ==", + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.3" + } + }, + "typescript": { + "version": "3.8.3", + "resolved": false, + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==" + }, + "uglify-js": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.0.tgz", + "integrity": "sha512-j5wNQBWaql8gr06dOUrfaohHlscboQZ9B8sNsoK5o4sBjm7Ht9dxSbrMXyktQpA16Acaij8AcoozteaPYZON0g==", + "optional": true, + "requires": { + "commander": "~2.20.3" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.43.0", + "resolved": false, + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.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.3", + "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.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "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" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "requires": { + "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" + } + } + } + }, + "webpack-cli": { + "version": "3.3.11", + "resolved": false, + "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==" + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "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.0" + } + } + } + }, + "webpack-log": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-node-externals": { + "version": "1.7.2", + "resolved": false, + "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==" + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "requires": { + "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.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + } + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "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": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copyfiles": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.2.0.tgz", + "integrity": "sha512-iJbHJI+8OKqsq+4JF0rqgRkZzo++jqO6Wf4FUU1JM41cJF6JcY5968XyF4tm3Kkm7ZOMrqlljdm8N9oyY5raGw==", + "dev": true, + "requires": { + "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-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "coveralls": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.12.tgz", + "integrity": "sha512-cDOGf4JFb1XKxT811GuLixVgJc3ZFElCLtgxkrdo0hm9Q8lmJ3cP4cZqlQTRE45MvwJNlHYwwzHPuWEv1f4f4Q==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", + "log-driver": "^1.2.7", + "minimist": "^1.2.5", + "request": "^2.88.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "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": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + } + } + }, + "eslint-config-airbnb-base": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz", + "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.9", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fromentries": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", + "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + }, + "dependencies": { + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + } + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", + "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", + "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "libsodium-sumo": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.6.tgz", + "integrity": "sha512-1XM2w00YkufeLVhFbw9aV+NTftzqECkEU1Amw2MxCbYuyy4L6MH5y8MWOg3shN6X/9R3e1pp6RCSXPnbFRTVCA==" + }, + "libsodium-wrappers-sumo": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.6.tgz", + "integrity": "sha512-pwYQ1ZR/UwXBMY4tFDcjYZrBFgexkhRykzcE9Jv0l/J41Tp7PqHYfHA17YpOxIXrAIRBPVSlPo2VxHoGZZKwXA==", + "requires": { + "libsodium-sumo": "0.7.6" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "dev": true, + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "lunr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", + "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "marked": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", + "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } + } + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "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" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz", + "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.3", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nock": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-12.0.3.tgz", + "integrity": "sha512-QNb/j8kbFnKCiyqi9C5DD0jH/FubFGj5rt9NQFONXwQm3IPB0CULECg/eS3AU1KgZb/6SwUa4/DTRKhVxkGABw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.13", + "propagate": "^2.0.0" + } + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^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" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nyc": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.1.tgz", + "integrity": "sha512-n0MBXYBYRqa67IVt62qW1r/d9UH/Qtr7SF1w/nQLJ9KxvWF6b2xCHImRAixHN9tnMMYHC2P14uo6KddNGwMgGg==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "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-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "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" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "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-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.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" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, + "request-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.5.tgz", + "integrity": "sha512-ZgnepCykFdmpq86fKGwqntyTiUrHycALuGggpyCZwMvGaZWgxW6yagT0FHkgo5LzYvOaCNvxYwWYIjevSH1EDg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", + "integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "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": { + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.18.tgz", + "integrity": "sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", + "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "ts-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.1.tgz", + "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "ts-node": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.9.0.tgz", + "integrity": "sha512-rwkXfOs9zmoHrV8xE++dmNd6ZIS+nmHHCxcV53ekGJrxFLMbp+pizpPS07ARvhwneCIECPppOwbZHvw9sQtU4w==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "tsconfig-paths": "^3.4.0" + } + }, + "tslib": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.2.tgz", + "integrity": "sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg==", + "dev": true + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typedoc": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.4.tgz", + "integrity": "sha512-4Lotef1l6lNU5Fulpux809WPlF9CkmcXfv5QFyanrjYlxMFxSdARRdsy8Jv1OU3z0vjR4JsvUQT0YpiPqztcOA==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.6", + "highlight.js": "^9.18.1", + "lodash": "^4.17.15", + "lunr": "^2.3.8", + "marked": "0.8.2", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.3", + "typedoc-default-themes": "^0.10.0" + } + }, + "typedoc-default-themes": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.1.tgz", + "integrity": "sha512-SuqAQI0CkwhqSJ2kaVTgl37cWs733uy9UGUqwtcds8pkFK8oRF4rZmCq+FXTGIb9hIUOu40rf5Kojg0Ha6akeg==", + "dev": true, + "requires": { + "lunr": "^2.3.8" + } + }, + "typedoc-plugin-markdown": { + "version": "2.2.17", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-2.2.17.tgz", + "integrity": "sha512-eE6cTeqsZIbjur6RG91Lhx1vTwjR49OHwVPRlmsxY3dthS4FNRL8sHxT5Y9pkosBwv1kSmNGQEPHjMYy1Ag6DQ==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.3" + } + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "uglify-js": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.2.tgz", + "integrity": "sha512-zGVwKslUAD/EeqOrD1nQaBmXIHl1Vw371we8cvS8I6mYK9rmgX5tv8AAeJdfsQ3Kk5mGax2SVV/AizxdNGhl7Q==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "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" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.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.3", + "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.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "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" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "webpack-cli": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", + "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "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.0" + } + } + } + }, + "webpack-log": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-node-externals": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz", + "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "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-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + } + } +} diff --git a/ConseilJS-softsigner/package.json b/ConseilJS-softsigner/package.json new file mode 100644 index 00000000..d4ec7c76 --- /dev/null +++ b/ConseilJS-softsigner/package.json @@ -0,0 +1,163 @@ +{ + "name": "conseiljs-softsigner", + "version": "5.0.0-alpha.0", + "description": "ConseilJS software signer plugin for ConseilJS-core. Supports the ED25519 curve via libsodium for tz1-address operations.", + "browser": "dist/index.js", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "test": "mocha \"test/**/*.spec.ts\"", + "integration-test": "mocha -r source-map-support/register -r ts-node/register --full-trace -t 600000 -b false \"integration_test/**/*.spec.ts\"", + "format": "eslint --fix-dry-run src/*/*.ts", + "coverage": "nyc mocha \"test/**/*.spec.ts\" || nyc report | coveralls", + "integration-coverage": "nyc mocha -r source-map-support/register -r ts-node/register --full-trace -t 600000 -b false \"integration_test/**/*.spec.ts\" && nyc report | coveralls", + "release-check": "npm run test && npm audit && npm outdated", + "doc": "rm -rf ./tsdoc && typedoc --readme none --excludeNotExported --mode file --theme markdown --out ./tsdoc ./src", + "package": "rm -rf ./dist && tsc && copyfiles -u 1 \"./src/**/*.js\" dist/", + "package-web": "webpack && rm -rf ./dist-web/dist && openssl dgst -sha384 -binary ./dist-web/conseiljs.min.js | openssl base64 -A" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Cryptonomic/ConseilJS.git" + }, + "keywords": [ + "tezos", + "conseil", + "blockchain analytics", + "blockchain reporting", + "blockchain data access", + "web3", + "dapp" + ], + "author": "Cryptonomic Inc", + "license": "Apache-2.0", + "licenses": [ + { + "type": "Apache-2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + } + ], + "bugs": { + "url": "https://github.com/Cryptonomic/ConseilJS/issues" + }, + "homepage": "https://cryptonomic.github.io/ConseilJS/#/", + "nyc": { + "include": [ + "src/**/*.ts" + ], + "exclude": [ + "src/**/lexer/*.*" + ], + "extension": [ + ".ts" + ], + "require": [ + "ts-node/register" + ], + "reporter": [ + "text-lcov" + ], + "sourceMap": true, + "instrument": true + }, + "dependencies": { + "bip39": "3.0.2", + "conseiljs": "5.0.0-alpha.2", + "libsodium-wrappers-sumo": "0.7.6" + }, + "devDependencies": { + "@types/chai": "4.2.11", + "@types/chai-as-promised": "7.1.2", + "@types/mocha": "7.0.2", + "@types/nock": "11.1.0", + "@types/node": "13.9.1", + "@typescript-eslint/eslint-plugin": "2.29.0", + "@typescript-eslint/parser": "2.29.0", + "awesome-typescript-loader": "5.2.1", + "chai": "4.2.0", + "chai-as-promised": "7.1.1", + "copyfiles": "2.2.0", + "coveralls": "3.0.12", + "eslint": "6.8.0", + "eslint-config-airbnb-base": "14.1.0", + "eslint-plugin-import": "2.20.2", + "mocha": "7.1.1", + "nyc": "15.0.1", + "request-promise": "4.2.5", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.18", + "terser-webpack-plugin": "2.3.5", + "ts-loader": "6.2.1", + "ts-node": "8.9.0", + "tsconfig-paths-webpack-plugin": "3.2.0", + "typedoc": "0.17.4", + "typedoc-plugin-markdown": "2.2.17", + "typescript": "3.8.3", + "webpack": "4.43.0", + "webpack-cli": "3.3.11", + "webpack-node-externals": "1.7.2" + }, + "engines": { + "node": ">=12.16.x", + "npm": ">=6.14.x" + }, + "eslintConfig": { + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "env": { + "mocha": true, + "node": true + }, + "overrides": [ + { + "files": [ + "**/**/*.ts" + ], + "excludedFiles": [ + "lexer/*.ts" + ] + } + ], + "extends": "airbnb-base", + "rules": { + "comma-dangle": [ + 2, + "never" + ], + "curly": [ + 2, + "all" + ], + "indent": [ + 1, + 4 + ], + "max-len": [ + 2, + { + "code": 200, + "ignoreTrailingComments": true + } + ], + "no-tabs": [ + 2 + ], + "quotes": [ + 2, + "single" + ], + "array-element-newline": [ + 2, + { + "multiline": true, + "minItems": 5 + } + ] + } + } +} diff --git a/ConseilJS-softsigner/src/KeyStoreUtils.ts b/ConseilJS-softsigner/src/KeyStoreUtils.ts new file mode 100644 index 00000000..ea338918 --- /dev/null +++ b/ConseilJS-softsigner/src/KeyStoreUtils.ts @@ -0,0 +1,123 @@ +import * as bip39 from 'bip39'; + +import { KeyStore, KeyStoreCurve, KeyStoreType } from 'conseiljs'; +import { TezosMessageUtils } from 'conseiljs'; + +import { CryptoUtils } from './utils/CryptoUtils' + +/** + * A set of helper functions for managing the Fundraiser and software-generated keys. + */ +export namespace KeyStoreUtils { + /** + * + * @param strength + * @param password + * @param mnemonic + */ + export async function generateIdentity(strength: number = 256, password: string = '', mnemonic?: string): Promise { + return restoreIdentityFromMnemonic((mnemonic || bip39.generateMnemonic(strength)), password); + } + + /** + * + * + * @param privateKey Secret key to restore public key and hash from. + */ + export async function restoreIdentityFromSecretKey(secretKey: string): Promise { + const secretKeyBytes = TezosMessageUtils.writeKeyWithHint(secretKey, 'edsk'); + const keys = await recoverKeys(secretKeyBytes); + + const publicKey = TezosMessageUtils.readKeyWithHint(keys.publicKey, 'edpk'); + const publicKeyHash = TezosMessageUtils.computeKeyHash(keys.publicKey, 'tz1'); + + return { publicKey, secretKey, publicKeyHash, curve: KeyStoreCurve.ED25519, storeType: KeyStoreType.Mnemonic }; + } + + /** + * + * + * @param mnemonic + * @param password + * @param pkh + * @param derivationPath + */ + export async function restoreIdentityFromMnemonic(mnemonic: string, password: string, pkh?: string, derivationPath?: string): Promise { + if (![12, 15, 18, 21, 24].includes(mnemonic.split(' ').length)) { throw new Error('Invalid mnemonic length.'); } + if (!bip39.validateMnemonic(mnemonic)) { throw new Error('The given mnemonic could not be validated.'); } + + const seed = (await bip39.mnemonicToSeed(mnemonic, password)).slice(0, 32); + const keys = await generateKeys(seed); + const secretKey = TezosMessageUtils.readKeyWithHint(keys.secretKey, 'edsk'); + const publicKey = TezosMessageUtils.readKeyWithHint(keys.publicKey, 'edpk'); + const publicKeyHash = TezosMessageUtils.computeKeyHash(keys.publicKey, 'tz1'); + + if (!!pkh && publicKeyHash !== pkh) { throw new Error('The given mnemonic and passphrase do not correspond to the supplied public key hash'); } + + return {publicKey, secretKey, publicKeyHash, curve: KeyStoreCurve.ED25519, storeType: KeyStoreType.Mnemonic, seed: mnemonic, derivationPath}; + } + + /** + * Unlocks an identity supplied during the 2017 Tezos fundraiser. + * + * To get a Tezos test nets account go to https://faucet.tzalpha.net + * + * @param {string} mnemonic Fifteen-word mnemonic phrase from fundraiser PDF. + * @param {string} email Email address from fundraiser PDF. + * @param {string} password Password from fundraiser PDF. + * @param {string} pkh The public key hash supposedly produced by the given mnemonic and passphrase + * @returns {Promise} Wallet file + */ + export async function restoreIdentityFromFundraiser(mnemonic: string, email: string, password: string, pkh: string): Promise { + return await restoreIdentityFromMnemonic(mnemonic, email + password, pkh); + } + + /** + * + * @param seed + */ + export async function generateKeys(seed: Buffer): Promise<{ publicKey: Buffer, secretKey: Buffer}> { + const keys = await CryptoUtils.generateKeys(seed); + return { publicKey: keys.publicKey, secretKey: keys.privateKey }; + } + + export async function recoverKeys(secretKey: Buffer): Promise<{ publicKey: Buffer, secretKey: Buffer}> { + const keys = await CryptoUtils.recoverPublicKey(secretKey); + return { publicKey: keys.publicKey, secretKey: keys.privateKey }; + } + + /** + * + * @param message + * @param passphrase + * @param salt + */ + export async function decryptMessage(message: Buffer, passphrase: string, salt: Buffer): Promise { + return CryptoUtils.decryptMessage(message, passphrase, salt); + } + + /** + * + * @param message + * @param passphrase + * @param salt + */ + export async function encryptMessage(message: Buffer, passphrase: string, salt: Buffer): Promise { + return CryptoUtils.encryptMessage(message, passphrase, salt); + } + + /** + * Convenience function that uses Tezos nomenclature to check signature of arbitrary text. + * + * @param signature + * @param message + * @param publicKey + * * @returns {Promise} + */ + export async function checkTextSignature(signature: string, message: string, publicKey: string): Promise { + const sig = TezosMessageUtils.writeSignatureWithHint(signature, 'edsig'); + const pk = TezosMessageUtils.writeKeyWithHint(publicKey, 'edpk'); + + return await CryptoUtils.checkSignature(sig, Buffer.from(message, 'utf8'), pk); + } +} diff --git a/ConseilJS-softsigner/src/SoftSigner.ts b/ConseilJS-softsigner/src/SoftSigner.ts new file mode 100644 index 00000000..a09b319d --- /dev/null +++ b/ConseilJS-softsigner/src/SoftSigner.ts @@ -0,0 +1,38 @@ +import { Signer, TezosMessageUtils } from 'conseiljs'; + +import { CryptoUtils } from './utils/CryptoUtils' + +/** + * libsodium/ed25519 + */ +export class SoftSigner implements Signer { + readonly secretKey: Buffer; + + constructor(secretKey: Buffer) { + this.secretKey = secretKey; + } + + /** + * Signs a + * + * @param {Buffer} bytes Bytes to sign + * @param {Buffer} secretKey Secret key + * @returns {Buffer} Signature + */ + public async sign(bytes: Buffer): Promise { + return CryptoUtils.signDetached(bytes, this.secretKey); + } + + /** + * Convenience function that uses Tezos nomenclature to sign arbitrary text. + * + * @param keyStore Key pair to use for signing + * @param message UTF-8 test + * @returns {Promise} base58check-encoded signature prefixed with 'edsig' + */ + public async signText(message: string): Promise { + const messageSig = await this.sign(Buffer.from(message, 'utf8')); + + return TezosMessageUtils.readSignatureWithHint(messageSig, 'edsig'); + } +} diff --git a/ConseilJS-softsigner/src/index.ts b/ConseilJS-softsigner/src/index.ts new file mode 100644 index 00000000..9e44a231 --- /dev/null +++ b/ConseilJS-softsigner/src/index.ts @@ -0,0 +1,2 @@ +export * from './KeyStoreUtils'; +export * from './SoftSigner'; diff --git a/src/utils/CryptoUtils.ts b/ConseilJS-softsigner/src/utils/CryptoUtils.ts similarity index 55% rename from src/utils/CryptoUtils.ts rename to ConseilJS-softsigner/src/utils/CryptoUtils.ts index 9cd5e75c..2d7f305c 100644 --- a/src/utils/CryptoUtils.ts +++ b/ConseilJS-softsigner/src/utils/CryptoUtils.ts @@ -1,13 +1,12 @@ -import * as blakejs from 'blakejs'; -import zxcvbn from 'zxcvbn'; const wrapper = require('./WrapperWrapper'); /** - * Cryptography helpers + * Tezos cryptography helpers for the ed25519 curve. */ export namespace CryptoUtils { /** * Generates a salt for key derivation. + * * @returns {Promise} Salt */ export async function generateSaltForPwHash() : Promise { @@ -17,20 +16,17 @@ export namespace CryptoUtils { /** * Encrypts a given message using a passphrase + * * @param {string} message Message to encrypt * @param {string} passphrase User-supplied passphrase * @param {Buffer} salt Salt for key derivation * @returns {Buffer} Concatenated bytes of nonce and cipher text */ - export async function encryptMessage(message: string, passphrase: string, salt: Buffer) : Promise { - const passwordStrength = getPasswordStrength(passphrase); - if (passwordStrength < 3) { throw new Error('The password strength should not be less than 3.'); } - - const messageBytes = Buffer.from(message); + export async function encryptMessage(message: Buffer, passphrase: string, salt: Buffer) : Promise { const keyBytes = await wrapper.pwhash(passphrase, salt) const n = await wrapper.nonce(); const nonce = Buffer.from(n); - const s = await wrapper.close(messageBytes, nonce, keyBytes); + const s = await wrapper.close(message, nonce, keyBytes); const cipherText = Buffer.from(s); return Buffer.concat([nonce, cipherText]); @@ -38,41 +34,52 @@ export namespace CryptoUtils { /** * Decrypts a given message using a passphrase - * @param {Buffer} nonce_and_ciphertext Concatenated bytes of nonce and cipher text + * + * @param {Buffer} message Concatenated bytes of nonce and cipher text * @param {string} passphrase User-supplied passphrase * @param {Buffer} salt Salt for key derivation * @returns {string} Decrypted message */ - export async function decryptMessage(nonce_and_ciphertext: Buffer, passphrase: string, salt: Buffer) : Promise { + export async function decryptMessage(message: Buffer, passphrase: string, salt: Buffer) : Promise { const keyBytes = await wrapper.pwhash(passphrase, salt) - const m = await wrapper.open(nonce_and_ciphertext, keyBytes); - return Buffer.from(m).toString(); + const m = await wrapper.open(message, keyBytes); + return Buffer.from(m); } /** - * Computes a BLAKE2b message hash of the requested length. + * Generate key pair from seed. + * + * @param seed */ - export function simpleHash(payload: Buffer, length: number) : Buffer { - return Buffer.from(blakejs.blake2b(payload, null, length)); // Same as libsodium.crypto_generichash + export async function generateKeys(seed: Buffer) { + const k = await wrapper.keys(seed); + + return { privateKey: k.privateKey, publicKey: k.publicKey }; } /** - * Checking the password strength using zxcvbn - * @returns {number} Password score + * Generate key pair from secret key by recovering the seed. + * + * @param secretKey */ - export function getPasswordStrength(password: string) : number { - const results = zxcvbn(password); - return results.score; - } - - export async function generateKeys(seed: Buffer) { - const k = await wrapper.keys(seed); + export async function recoverPublicKey(secretKey: Buffer) { + const k = await wrapper.publickey(secretKey); return { privateKey: k.privateKey, publicKey: k.publicKey }; } - export async function signDetached(payload: Buffer, secretKey: Buffer) : Promise { + /** + * Sign arbitrary bytes with a secret key. + * + * @param payload + * @param secretKey + */ + export async function signDetached(payload: Buffer, secretKey: Buffer): Promise { const b = await wrapper.sign(payload, secretKey) return Buffer.from(b); } -} \ No newline at end of file + + export async function checkSignature(signature: Buffer, payload: Buffer, publicKey: Buffer): Promise { + return await wrapper.checkSignature(signature, payload, publicKey); + } +} diff --git a/src/utils/WrapperWrapper.js b/ConseilJS-softsigner/src/utils/WrapperWrapper.js similarity index 74% rename from src/utils/WrapperWrapper.js rename to ConseilJS-softsigner/src/utils/WrapperWrapper.js index b90e318b..bd993574 100644 --- a/src/utils/WrapperWrapper.js +++ b/ConseilJS-softsigner/src/utils/WrapperWrapper.js @@ -9,10 +9,12 @@ const rand = async (length) => { } const salt = async () => { + await sodiumsumo.ready; return rand(sodiumsumo.crypto_pwhash_SALTBYTES); } const nonce = async () => { + await sodiumsumo.ready; return rand(sodiumsumo.crypto_box_NONCEBYTES); } @@ -21,6 +23,12 @@ const keys = async (seed) => { return sodiumsumo.crypto_sign_seed_keypair(seed, ''); } +const publickey = async (sk) => { + await sodiumsumo.ready; + const seed = sodiumsumo.crypto_sign_ed25519_sk_to_seed(sk) + return sodiumsumo.crypto_sign_seed_keypair(seed, ''); +} + const pwhash = async (passphrase, salt) => { await sodiumsumo.ready; return sodiumsumo.crypto_pwhash(sodiumsumo.crypto_box_SEEDBYTES, passphrase, salt, 4, 33554432, sodiumsumo.crypto_pwhash_ALG_ARGON2I13); @@ -45,4 +53,9 @@ const sign = async (message, key) => { return sodiumsumo.crypto_sign_detached(message, key); } -module.exports = {salt, nonce, keys, pwhash, close, open, sign}; +const checkSignature = async (sig, message, key) => { + await sodiumsumo.ready; + return sodiumsumo.crypto_sign_verify_detached(sig, message, key); +} + +module.exports = {salt, nonce, keys, publickey, pwhash, close, open, sign, checkSignature}; diff --git a/ConseilJS-softsigner/test/CryptoUtils.spec.ts b/ConseilJS-softsigner/test/CryptoUtils.spec.ts new file mode 100644 index 00000000..fc663807 --- /dev/null +++ b/ConseilJS-softsigner/test/CryptoUtils.spec.ts @@ -0,0 +1,86 @@ +import 'mocha'; +import { expect } from 'chai'; + +import * as bip39 from 'bip39'; +import { TezosMessageUtils } from 'conseiljs'; + +import { CryptoUtils } from '../src/utils/CryptoUtils'; +import { KeyStoreUtils } from '../src/KeyStoreUtils'; +import { SoftSigner } from '../src/SoftSigner'; + +describe('encryptMessage() and decryptMessage()', () => { + it('should correctly encrypt and decrypt text', async () => { + const salt = await CryptoUtils.generateSaltForPwHash(); + const message = Buffer.from('Tacos Nachos Burritos Guacamole', 'utf8'); + const passphrase = '$T3Z0s!'; + const encrypted = await CryptoUtils.encryptMessage(message, passphrase, salt); + const decrypted = await CryptoUtils.decryptMessage(encrypted, passphrase, salt); + expect(decrypted).to.equal(message); + }); + + it('fail encryption operation due to password strength', async () => { + const salt = await CryptoUtils.generateSaltForPwHash(); + const message = Buffer.from('hello', 'utf8'); + const passphrase = "password"; + try { + const encrypted = await CryptoUtils.encryptMessage(message, passphrase, salt); + await CryptoUtils.decryptMessage(encrypted, passphrase, salt); + } catch (err) { + expect(err.message).to.equal('The password strength should not be less than 3.'); + } + }); +}); + +describe('generateKeys() and recoverPublicKey()', () => { + it('generate keys from 24-word mnemonic', async () => { + const mnemonic = 'valve maple arrow chef leave ten camera parrot puzzle nut early meadow spy jeans poem disease corn stone either main empty blush permit pigeon'; + const seed = (await bip39.mnemonicToSeed(mnemonic, '')).slice(0, 32); + const keys = await CryptoUtils.generateKeys(seed); + const publicKeyHash = TezosMessageUtils.computeKeyHash(keys.publicKey, 'tz1'); + + expect(publicKeyHash).to.equal('tz1io3eJUT6C3heVaewJiDio18QzkNNHaE2v'); + }); + + it('generate keys from 15-word fundraiser mnemonic', async () => { + const mnemonic = 'flag obtain wrap joy obvious usual label capital month refuse misery crystal time security sun'; + const passphrase = 'yfzaknjf.mtmttysx@tezos.example.org' + 'KxdPIyrnCo'; + const seed = (await bip39.mnemonicToSeed(mnemonic, passphrase)).slice(0, 32); + const keys = await CryptoUtils.generateKeys(seed); + const publicKeyHash = TezosMessageUtils.computeKeyHash(keys.publicKey, 'tz1'); + + expect(publicKeyHash).to.equal('tz1QjhkVsnJtij4f353WEmSNvs3tByQhq3ea'); + }); + + it('recover public key from secret key', async () => { + const privateKey = TezosMessageUtils.writeKeyWithHint('edskRqLyhpmvk7PGg6zvbEV3n325UsLF2qKuNrDHit4zbJtqEpBE925Jdx13d7ax1uiewmg4FR2TVisnuDL6epbips9NMLtsMc', 'edsk'); + const keys = await CryptoUtils.recoverPublicKey(privateKey); + const publicKeyHash = TezosMessageUtils.computeKeyHash(keys.publicKey, 'tz1'); + + expect(publicKeyHash).to.equal('tz1io3eJUT6C3heVaewJiDio18QzkNNHaE2v'); + }); + + it('sign a message with secret key, verify signature with public key', async () => { + const privateKey = TezosMessageUtils.writeKeyWithHint('edskRqLyhpmvk7PGg6zvbEV3n325UsLF2qKuNrDHit4zbJtqEpBE925Jdx13d7ax1uiewmg4FR2TVisnuDL6epbips9NMLtsMc', 'edsk'); + const keys = await CryptoUtils.recoverPublicKey(privateKey); + const publicKey = keys.publicKey; + + const message = Buffer.from('Tacos Nachos Burritos Guacamole', 'utf8'); + const messageSig = await CryptoUtils.signDetached(message, privateKey); + const check = await CryptoUtils.checkSignature(messageSig, message, publicKey); + + expect(check).to.be.true; + }); + + it('sign a message with secret key, verify signature with public key (Tezos encoding)', async () => { + const signer = new SoftSigner(); + const keyStore = await KeyStoreUtils.RestoreIdentityFromSecretKey('edskRqLyhpmvk7PGg6zvbEV3n325UsLF2qKuNrDHit4zbJtqEpBE925Jdx13d7ax1uiewmg4FR2TVisnuDL6epbips9NMLtsMc', signer); + const privateKey = TezosMessageUtils.writeKeyWithHint(keyStore.privateKey, 'edsk'); + const publicKey = TezosMessageUtils.writeKeyWithHint(keyStore.publicKey, 'edpk'); + + const message = Buffer.from('Tacos Nachos Burritos Guacamole', 'utf8'); + const messageSig = await CryptoUtils.signDetached(message, privateKey); + const check = await CryptoUtils.checkSignature(messageSig, message, publicKey); + + expect(check).to.be.true; + }); +}); diff --git a/ConseilJS-softsigner/tsconfig.json b/ConseilJS-softsigner/tsconfig.json new file mode 100644 index 00000000..94ecf67a --- /dev/null +++ b/ConseilJS-softsigner/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "commonjs", + "declaration": true, + "sourceMap": true, + "outDir": "dist", + "removeComments": true, + "strict": true, + "noImplicitAny": false, + "baseUrl": "src", + "esModuleInterop": true + }, + "exclude": [ + "node_modules" + ], + "include": [ + "src" + ] +} \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 94a9ed02..00000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 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 General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is 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. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - 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. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - 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 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. Use with the GNU Affero General Public License. - - 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 Affero 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 special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU 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 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 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 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 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - 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 GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/README.md b/README.md deleted file mode 100644 index 639493fc..00000000 --- a/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# ConseilJS - -[![npm version](https://img.shields.io/npm/v/conseiljs.svg)](https://www.npmjs.com/package/conseiljs) -[![npm](https://img.shields.io/npm/dm/conseiljs.svg)](https://www.npmjs.com/package/conseiljs) -[![Build Status](https://travis-ci.org/Cryptonomic/ConseilJS.svg?branch=master)](https://travis-ci.org/Cryptonomic/ConseilJS) -[![Coverage Status](https://coveralls.io/repos/github/Cryptonomic/ConseilJS/badge.svg?branch=master)](https://coveralls.io/github/Cryptonomic/ConseilJS?branch=master) -[![dependencies](https://david-dm.org/Cryptonomic/ConseilJS/status.svg)](https://david-dm.org/Cryptonomic/ConseilJS) - -A library for building decentralized applications, currently focused on [Tezos](http://tezos.com/). - -ConseilJS connects to the [Nautilus](https://github.com/Cryptonomic/Nautilus) infrastructure for high-performance analytics provided by [Conseil](https://github.com/Cryptonomic/Conseil) and for live chain data and operations via the integrated Tezos node. - -## Use with Nodejs - -Add our [NPM package](https://www.npmjs.com/package/conseiljs) to your project, or include in your web project as: ``. - -```bash -$ npm i conseiljs -``` - -If you are using webpack in your project, add below lines to your `webpack.config.js` file: - -```javascript -node: { fs: 'empty' } -``` - -We have a complete [React application example](https://github.com/Cryptonomic/ConseilJS-Tutorials) for you to check out. - -## Use with Web -```html - -``` - -A fully functional sample [webpage example](https://github.com/Cryptonomic/ConseilJS-HTML-Example) is available too. - -## API Overview and Examples - -We have [ready-to-use examples](https://cryptonomic.github.io/ConseilJS/) to copy/paste. - -## Contribute - -There are many ways to contribute to this project. You can develop applications or dApps with it. You can submit bug reports or feature requests. You can ask questions about it on [r/Tezos](http://reddit.com/r/tezos/) or the [Tezos StackExchange](https://tezos.stackexchange.com). We certainly welcome pull requests as well. - -### Known Issues - -- Some of the P2P messages are not implemented, specifically those used in baking operations. - -### Dependency Requirements -- AWS-SDK dependency must remain as the Ledger Connect feature requires it. - -## Other references - -[Wiki](https://github.com/Cryptonomic/ConseilJS/wiki/Tutorial:-Querying-for-Tezos-alphanet-data-using-the-ConseilJS-v2-API) - -[Riot Dev Channel](https://matrix.to/#/!rUwpbdwWhWgKINPyOD:cryptonomic.tech?via=cryptonomic.tech&via=matrix.org&via=ostez.com) - -[Cryptonomic Reddit](https://www.reddit.com/r/cryptonomic) - -[The Cryptonomic Aperiodical](https://medium.com/the-cryptonomic-aperiodical) - -[@CryptonomicTech](https://twitter.com/CryptonomicTech) diff --git a/dist-web/conseiljs.min.js b/dist-web/conseiljs.min.js deleted file mode 100644 index 6b7681e7..00000000 --- a/dist-web/conseiljs.min.js +++ /dev/null @@ -1,8 +0,0 @@ -!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?exports.conseiljs=a():e.conseiljs=a()}(window,function(){return function(e){var a={};function r(i){if(a[i])return a[i].exports;var t=a[i]={i:i,l:!1,exports:{}};return e[i].call(t.exports,t,t.exports,r),t.l=!0,t.exports}return r.m=e,r.c=a,r.d=function(e,a,i){r.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,a){if(1&a&&(e=r(e)),8&a)return e;if(4&a&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&a&&"string"!=typeof e)for(var t in e)r.d(i,t,function(a){return e[a]}.bind(null,t));return i},r.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(a,"a",a),a},r.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},r.p="",r(r.s=92)}([function(e,a,r){var i=r(2),t=i.Buffer;function n(e,a){for(var r in e)a[r]=e[r]}function o(e,a,r){return t(e,a,r)}t.from&&t.alloc&&t.allocUnsafe&&t.allocUnsafeSlow?e.exports=i:(n(i,a),a.Buffer=o),n(t,o),o.from=function(e,a,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return t(e,a,r)},o.alloc=function(e,a,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=t(e);return void 0!==a?"string"==typeof r?i.fill(a,r):i.fill(a):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return t(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},function(e,a){"function"==typeof Object.create?e.exports=function(e,a){e.super_=a,e.prototype=Object.create(a.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,a){e.super_=a;var r=function(){};r.prototype=a.prototype,e.prototype=new r,e.prototype.constructor=e}},function(e,a,r){"use strict";(function(e){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -var i=r(93),t=r(94),n=r(45);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,a){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|e}function g(e,a){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var i=!1;;)switch(a){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return N(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return G(e).length;default:if(i)return N(e).length;a=(""+a).toLowerCase(),i=!0}}function p(e,a,r){var i=e[a];e[a]=e[r],e[r]=i}function m(e,a,r,i,t){if(0===e.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=t?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(t)return-1;r=e.length-1}else if(r<0){if(!t)return-1;r=0}if("string"==typeof a&&(a=l.from(a,i)),l.isBuffer(a))return 0===a.length?-1:f(e,a,r,i,t);if("number"==typeof a)return a&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?t?Uint8Array.prototype.indexOf.call(e,a,r):Uint8Array.prototype.lastIndexOf.call(e,a,r):f(e,[a],r,i,t);throw new TypeError("val must be string, number or Buffer")}function f(e,a,r,i,t){var n,o=1,s=e.length,l=a.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||a.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(e,a){return 1===o?e[a]:e.readUInt16BE(a*o)}if(t){var u=-1;for(n=r;ns&&(r=s-l),n=r;n>=0;n--){for(var d=!0,h=0;ht&&(i=t):i=t;var n=a.length;if(n%2!=0)throw new TypeError("Invalid hex string");i>n/2&&(i=n/2);for(var o=0;o>8,t=r%256,n.push(t),n.push(i);return n}(a,e.length-r),e,r,i)}function _(e,a,r){return 0===a&&r===e.length?i.fromByteArray(e):i.fromByteArray(e.slice(a,r))}function B(e,a,r){r=Math.min(e.length,r);for(var i=[],t=a;t239?4:c>223?3:c>191?2:1;if(t+d<=r)switch(d){case 1:c<128&&(u=c);break;case 2:128==(192&(n=e[t+1]))&&(l=(31&c)<<6|63&n)>127&&(u=l);break;case 3:n=e[t+1],o=e[t+2],128==(192&n)&&128==(192&o)&&(l=(15&c)<<12|(63&n)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:n=e[t+1],o=e[t+2],s=e[t+3],128==(192&n)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&n)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,d=1):u>65535&&(u-=65536,i.push(u>>>10&1023|55296),u=56320|1023&u),i.push(u),t+=d}return function(e){var a=e.length;if(a<=C)return String.fromCharCode.apply(String,e);var r="",i=0;for(;ithis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(a>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return x(this,a,r);case"utf8":case"utf-8":return B(this,a,r);case"ascii":return E(this,a,r);case"latin1":case"binary":return Q(this,a,r);case"base64":return _(this,a,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,a,r);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",r=a.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},l.prototype.compare=function(e,a,r,i,t){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===a&&(a=0),void 0===r&&(r=e?e.length:0),void 0===i&&(i=0),void 0===t&&(t=this.length),a<0||r>e.length||i<0||t>this.length)throw new RangeError("out of range index");if(i>=t&&a>=r)return 0;if(i>=t)return-1;if(a>=r)return 1;if(this===e)return 0;for(var n=(t>>>=0)-(i>>>=0),o=(r>>>=0)-(a>>>=0),s=Math.min(n,o),c=this.slice(i,t),u=e.slice(a,r),d=0;dt)&&(r=t),e.length>0&&(r<0||a<0)||a>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var n=!1;;)switch(i){case"hex":return y(this,e,a,r);case"utf8":case"utf-8":return b(this,e,a,r);case"ascii":return k(this,e,a,r);case"latin1":case"binary":return w(this,e,a,r);case"base64":return v(this,e,a,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,a,r);default:if(n)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),n=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function E(e,a,r){var i="";r=Math.min(e.length,r);for(var t=a;ti)&&(r=i);for(var t="",n=a;nr)throw new RangeError("Trying to access beyond buffer length")}function D(e,a,r,i,t,n){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(a>t||ae.length)throw new RangeError("Index out of range")}function S(e,a,r,i){a<0&&(a=65535+a+1);for(var t=0,n=Math.min(e.length-r,2);t>>8*(i?t:1-t)}function M(e,a,r,i){a<0&&(a=4294967295+a+1);for(var t=0,n=Math.min(e.length-r,4);t>>8*(i?t:3-t)&255}function q(e,a,r,i,t,n){if(r+i>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function F(e,a,r,i,n){return n||q(e,0,r,4),t.write(e,a,r,i,23,4),r+4}function U(e,a,r,i,n){return n||q(e,0,r,8),t.write(e,a,r,i,52,8),r+8}l.prototype.slice=function(e,a){var r,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(a=void 0===a?i:~~a)<0?(a+=i)<0&&(a=0):a>i&&(a=i),a0&&(t*=256);)i+=this[e+--a]*t;return i},l.prototype.readUInt8=function(e,a){return a||z(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,a){return a||z(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,a){return a||z(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,a){return a||z(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,a){return a||z(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,a,r){e|=0,a|=0,r||z(e,a,this.length);for(var i=this[e],t=1,n=0;++n=(t*=128)&&(i-=Math.pow(2,8*a)),i},l.prototype.readIntBE=function(e,a,r){e|=0,a|=0,r||z(e,a,this.length);for(var i=a,t=1,n=this[e+--i];i>0&&(t*=256);)n+=this[e+--i]*t;return n>=(t*=128)&&(n-=Math.pow(2,8*a)),n},l.prototype.readInt8=function(e,a){return a||z(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,a){a||z(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,a){a||z(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,a){return a||z(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,a){return a||z(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,a){return a||z(e,4,this.length),t.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,a){return a||z(e,4,this.length),t.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,a){return a||z(e,8,this.length),t.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,a){return a||z(e,8,this.length),t.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,a,r,i){(e=+e,a|=0,r|=0,i)||D(this,e,a,r,Math.pow(2,8*r)-1,0);var t=1,n=0;for(this[a]=255&e;++n=0&&(n*=256);)this[a+t]=e/n&255;return a+r},l.prototype.writeUInt8=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[a]=255&e,a+1},l.prototype.writeUInt16LE=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[a]=255&e,this[a+1]=e>>>8):S(this,e,a,!0),a+2},l.prototype.writeUInt16BE=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[a]=e>>>8,this[a+1]=255&e):S(this,e,a,!1),a+2},l.prototype.writeUInt32LE=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[a+3]=e>>>24,this[a+2]=e>>>16,this[a+1]=e>>>8,this[a]=255&e):M(this,e,a,!0),a+4},l.prototype.writeUInt32BE=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[a]=e>>>24,this[a+1]=e>>>16,this[a+2]=e>>>8,this[a+3]=255&e):M(this,e,a,!1),a+4},l.prototype.writeIntLE=function(e,a,r,i){if(e=+e,a|=0,!i){var t=Math.pow(2,8*r-1);D(this,e,a,r,t-1,-t)}var n=0,o=1,s=0;for(this[a]=255&e;++n>0)-s&255;return a+r},l.prototype.writeIntBE=function(e,a,r,i){if(e=+e,a|=0,!i){var t=Math.pow(2,8*r-1);D(this,e,a,r,t-1,-t)}var n=r-1,o=1,s=0;for(this[a+n]=255&e;--n>=0&&(o*=256);)e<0&&0===s&&0!==this[a+n+1]&&(s=1),this[a+n]=(e/o>>0)-s&255;return a+r},l.prototype.writeInt8=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[a]=255&e,a+1},l.prototype.writeInt16LE=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[a]=255&e,this[a+1]=e>>>8):S(this,e,a,!0),a+2},l.prototype.writeInt16BE=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[a]=e>>>8,this[a+1]=255&e):S(this,e,a,!1),a+2},l.prototype.writeInt32LE=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[a]=255&e,this[a+1]=e>>>8,this[a+2]=e>>>16,this[a+3]=e>>>24):M(this,e,a,!0),a+4},l.prototype.writeInt32BE=function(e,a,r){return e=+e,a|=0,r||D(this,e,a,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[a]=e>>>24,this[a+1]=e>>>16,this[a+2]=e>>>8,this[a+3]=255&e):M(this,e,a,!1),a+4},l.prototype.writeFloatLE=function(e,a,r){return F(this,e,a,!0,r)},l.prototype.writeFloatBE=function(e,a,r){return F(this,e,a,!1,r)},l.prototype.writeDoubleLE=function(e,a,r){return U(this,e,a,!0,r)},l.prototype.writeDoubleBE=function(e,a,r){return U(this,e,a,!1,r)},l.prototype.copy=function(e,a,r,i){if(r||(r=0),i||0===i||(i=this.length),a>=e.length&&(a=e.length),a||(a=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-a=0;--t)e[t+a]=this[t+r];else if(n<1e3||!l.TYPED_ARRAY_SUPPORT)for(t=0;t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(n=a;n55295&&r<57344){if(!t){if(r>56319){(a-=3)>-1&&n.push(239,191,189);continue}if(o+1===i){(a-=3)>-1&&n.push(239,191,189);continue}t=r;continue}if(r<56320){(a-=3)>-1&&n.push(239,191,189),t=r;continue}r=65536+(t-55296<<10|r-56320)}else t&&(a-=3)>-1&&n.push(239,191,189);if(t=null,r<128){if((a-=1)<0)break;n.push(r)}else if(r<2048){if((a-=2)<0)break;n.push(r>>6|192,63&r|128)}else if(r<65536){if((a-=3)<0)break;n.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((a-=4)<0)break;n.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return n}function G(e){return i.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(R,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Y(e,a,r,i){for(var t=0;t=a.length||t>=e.length);++t)a[t+r]=e[t];return t}}).call(this,r(6))},function(e,a,r){(function(e){!function(e,a){"use strict";function i(e,a){if(!e)throw new Error(a||"Assertion failed")}function t(e,a){e.super_=a;var r=function(){};r.prototype=a.prototype,e.prototype=new r,e.prototype.constructor=e}function n(e,a,r){if(n.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==a&&"be"!==a||(r=a,a=10),this._init(e||0,a||10,r||"be"))}var o;"object"==typeof e?e.exports=n:a.BN=n,n.BN=n,n.wordSize=26;try{o=r(151).Buffer}catch(e){}function s(e,a,r){for(var i=0,t=Math.min(e.length,r),n=a;n=49&&o<=54?o-49+10:o>=17&&o<=22?o-17+10:15&o}return i}function l(e,a,r,i){for(var t=0,n=Math.min(e.length,r),o=a;o=49?s-49+10:s>=17?s-17+10:s}return t}n.isBN=function(e){return e instanceof n||null!==e&&"object"==typeof e&&e.constructor.wordSize===n.wordSize&&Array.isArray(e.words)},n.max=function(e,a){return e.cmp(a)>0?e:a},n.min=function(e,a){return e.cmp(a)<0?e:a},n.prototype._init=function(e,a,r){if("number"==typeof e)return this._initNumber(e,a,r);if("object"==typeof e)return this._initArray(e,a,r);"hex"===a&&(a=16),i(a===(0|a)&&a>=2&&a<=36);var t=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&t++,16===a?this._parseHex(e,t):this._parseBase(e,a,t),"-"===e[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),a,r)},n.prototype._initNumber=function(e,a,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(i(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),a,r)},n.prototype._initArray=function(e,a,r){if(i("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var t=0;t=0;t-=3)o=e[t]|e[t-1]<<8|e[t-2]<<16,this.words[n]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,n++);else if("le"===r)for(t=0,n=0;t>>26-s&67108863,(s+=24)>=26&&(s-=26,n++);return this.strip()},n.prototype._parseHex=function(e,a){this.length=Math.ceil((e.length-a)/6),this.words=new Array(this.length);for(var r=0;r=a;r-=6)t=s(e,r,r+6),this.words[i]|=t<>>26-n&4194303,(n+=24)>=26&&(n-=26,i++);r+6!==a&&(t=s(e,a,r+6),this.words[i]|=t<>>26-n&4194303),this.strip()},n.prototype._parseBase=function(e,a,r){this.words=[0],this.length=1;for(var i=0,t=1;t<=67108863;t*=a)i++;i--,t=t/a|0;for(var n=e.length-r,o=n%i,s=Math.min(n,n-o)+r,c=0,u=r;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},n.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],u=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function h(e,a,r){r.negative=a.negative^e.negative;var i=e.length+a.length|0;r.length=i,i=i-1|0;var t=0|e.words[0],n=0|a.words[0],o=t*n,s=67108863&o,l=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,d=67108863&l,h=Math.min(c,a.length-1),A=Math.max(0,c-e.length+1);A<=h;A++){var g=c-A|0;u+=(o=(t=0|e.words[g])*(n=0|a.words[A])+d)/67108864|0,d=67108863&o}r.words[c]=0|d,l=0|u}return 0!==l?r.words[c]=0|l:r.length--,r.strip()}n.prototype.toString=function(e,a){var r;if(a=0|a||1,16===(e=e||10)||"hex"===e){r="";for(var t=0,n=0,o=0;o>>24-t&16777215)||o!==this.length-1?c[6-l.length]+l+r:l+r,(t+=2)>=26&&(t-=26,o--)}for(0!==n&&(r=n.toString(16)+r);r.length%a!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var h=u[e],A=d[e];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var p=g.modn(A).toString(e);r=(g=g.idivn(A)).isZero()?p+r:c[h-p.length]+p+r}for(this.isZero()&&(r="0"+r);r.length%a!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(e,a){return i(void 0!==o),this.toArrayLike(o,e,a)},n.prototype.toArray=function(e,a){return this.toArrayLike(Array,e,a)},n.prototype.toArrayLike=function(e,a,r){var t=this.byteLength(),n=r||Math.max(1,t);i(t<=n,"byte array longer than desired length"),i(n>0,"Requested array length <= 0"),this.strip();var o,s,l="le"===a,c=new e(n),u=this.clone();if(l){for(s=0;!u.isZero();s++)o=u.andln(255),u.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,a>>>=13),a>=64&&(r+=7,a>>>=7),a>=8&&(r+=4,a>>>=4),a>=2&&(r+=2,a>>>=2),r+a},n.prototype._zeroBits=function(e){if(0===e)return 26;var a=e,r=0;return 0==(8191&a)&&(r+=13,a>>>=13),0==(127&a)&&(r+=7,a>>>=7),0==(15&a)&&(r+=4,a>>>=4),0==(3&a)&&(r+=2,a>>>=2),0==(1&a)&&r++,r},n.prototype.bitLength=function(){var e=this.words[this.length-1],a=this._countBits(e);return 26*(this.length-1)+a},n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,a=0;ae.length?this.clone().ior(e):e.clone().ior(this)},n.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},n.prototype.iuand=function(e){var a;a=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},n.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},n.prototype.iuxor=function(e){var a,r;this.length>e.length?(a=this,r=e):(a=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},n.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},n.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var a=0|Math.ceil(e/26),r=e%26;this._expand(a),r>0&&a--;for(var t=0;t0&&(this.words[t]=~this.words[t]&67108863>>26-r),this.strip()},n.prototype.notn=function(e){return this.clone().inotn(e)},n.prototype.setn=function(e,a){i("number"==typeof e&&e>=0);var r=e/26|0,t=e%26;return this._expand(r+1),this.words[r]=a?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var t=0,n=0;n>>26;for(;0!==t&&n>>26;if(this.length=r.length,0!==t)this.words[this.length]=t,this.length++;else if(r!==this)for(;ne.length?this.clone().iadd(e):e.clone().iadd(this)},n.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var a=this.iadd(e);return e.negative=1,a._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,t=this.cmp(e);if(0===t)return this.negative=0,this.length=1,this.words[0]=0,this;t>0?(r=this,i=e):(r=e,i=this);for(var n=0,o=0;o>26,this.words[o]=67108863&a;for(;0!==n&&o>26,this.words[o]=67108863&a;if(0===n&&o>>13,A=0|o[1],g=8191&A,p=A>>>13,m=0|o[2],f=8191&m,y=m>>>13,b=0|o[3],k=8191&b,w=b>>>13,v=0|o[4],I=8191&v,_=v>>>13,B=0|o[5],C=8191&B,E=B>>>13,Q=0|o[6],x=8191&Q,j=Q>>>13,z=0|o[7],D=8191&z,S=z>>>13,M=0|o[8],q=8191&M,F=M>>>13,U=0|o[9],R=8191&U,H=U>>>13,N=0|s[0],G=8191&N,Y=N>>>13,J=0|s[1],P=8191&J,L=J>>>13,T=0|s[2],K=8191&T,$=T>>>13,O=0|s[3],X=8191&O,V=O>>>13,W=0|s[4],Z=8191&W,ee=W>>>13,ae=0|s[5],re=8191&ae,ie=ae>>>13,te=0|s[6],ne=8191&te,oe=te>>>13,se=0|s[7],le=8191&se,ce=se>>>13,ue=0|s[8],de=8191&ue,he=ue>>>13,Ae=0|s[9],ge=8191&Ae,pe=Ae>>>13;r.negative=e.negative^a.negative,r.length=19;var me=(c+(i=Math.imul(d,G))|0)+((8191&(t=(t=Math.imul(d,Y))+Math.imul(h,G)|0))<<13)|0;c=((n=Math.imul(h,Y))+(t>>>13)|0)+(me>>>26)|0,me&=67108863,i=Math.imul(g,G),t=(t=Math.imul(g,Y))+Math.imul(p,G)|0,n=Math.imul(p,Y);var fe=(c+(i=i+Math.imul(d,P)|0)|0)+((8191&(t=(t=t+Math.imul(d,L)|0)+Math.imul(h,P)|0))<<13)|0;c=((n=n+Math.imul(h,L)|0)+(t>>>13)|0)+(fe>>>26)|0,fe&=67108863,i=Math.imul(f,G),t=(t=Math.imul(f,Y))+Math.imul(y,G)|0,n=Math.imul(y,Y),i=i+Math.imul(g,P)|0,t=(t=t+Math.imul(g,L)|0)+Math.imul(p,P)|0,n=n+Math.imul(p,L)|0;var ye=(c+(i=i+Math.imul(d,K)|0)|0)+((8191&(t=(t=t+Math.imul(d,$)|0)+Math.imul(h,K)|0))<<13)|0;c=((n=n+Math.imul(h,$)|0)+(t>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(k,G),t=(t=Math.imul(k,Y))+Math.imul(w,G)|0,n=Math.imul(w,Y),i=i+Math.imul(f,P)|0,t=(t=t+Math.imul(f,L)|0)+Math.imul(y,P)|0,n=n+Math.imul(y,L)|0,i=i+Math.imul(g,K)|0,t=(t=t+Math.imul(g,$)|0)+Math.imul(p,K)|0,n=n+Math.imul(p,$)|0;var be=(c+(i=i+Math.imul(d,X)|0)|0)+((8191&(t=(t=t+Math.imul(d,V)|0)+Math.imul(h,X)|0))<<13)|0;c=((n=n+Math.imul(h,V)|0)+(t>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(I,G),t=(t=Math.imul(I,Y))+Math.imul(_,G)|0,n=Math.imul(_,Y),i=i+Math.imul(k,P)|0,t=(t=t+Math.imul(k,L)|0)+Math.imul(w,P)|0,n=n+Math.imul(w,L)|0,i=i+Math.imul(f,K)|0,t=(t=t+Math.imul(f,$)|0)+Math.imul(y,K)|0,n=n+Math.imul(y,$)|0,i=i+Math.imul(g,X)|0,t=(t=t+Math.imul(g,V)|0)+Math.imul(p,X)|0,n=n+Math.imul(p,V)|0;var ke=(c+(i=i+Math.imul(d,Z)|0)|0)+((8191&(t=(t=t+Math.imul(d,ee)|0)+Math.imul(h,Z)|0))<<13)|0;c=((n=n+Math.imul(h,ee)|0)+(t>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(C,G),t=(t=Math.imul(C,Y))+Math.imul(E,G)|0,n=Math.imul(E,Y),i=i+Math.imul(I,P)|0,t=(t=t+Math.imul(I,L)|0)+Math.imul(_,P)|0,n=n+Math.imul(_,L)|0,i=i+Math.imul(k,K)|0,t=(t=t+Math.imul(k,$)|0)+Math.imul(w,K)|0,n=n+Math.imul(w,$)|0,i=i+Math.imul(f,X)|0,t=(t=t+Math.imul(f,V)|0)+Math.imul(y,X)|0,n=n+Math.imul(y,V)|0,i=i+Math.imul(g,Z)|0,t=(t=t+Math.imul(g,ee)|0)+Math.imul(p,Z)|0,n=n+Math.imul(p,ee)|0;var we=(c+(i=i+Math.imul(d,re)|0)|0)+((8191&(t=(t=t+Math.imul(d,ie)|0)+Math.imul(h,re)|0))<<13)|0;c=((n=n+Math.imul(h,ie)|0)+(t>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(x,G),t=(t=Math.imul(x,Y))+Math.imul(j,G)|0,n=Math.imul(j,Y),i=i+Math.imul(C,P)|0,t=(t=t+Math.imul(C,L)|0)+Math.imul(E,P)|0,n=n+Math.imul(E,L)|0,i=i+Math.imul(I,K)|0,t=(t=t+Math.imul(I,$)|0)+Math.imul(_,K)|0,n=n+Math.imul(_,$)|0,i=i+Math.imul(k,X)|0,t=(t=t+Math.imul(k,V)|0)+Math.imul(w,X)|0,n=n+Math.imul(w,V)|0,i=i+Math.imul(f,Z)|0,t=(t=t+Math.imul(f,ee)|0)+Math.imul(y,Z)|0,n=n+Math.imul(y,ee)|0,i=i+Math.imul(g,re)|0,t=(t=t+Math.imul(g,ie)|0)+Math.imul(p,re)|0,n=n+Math.imul(p,ie)|0;var ve=(c+(i=i+Math.imul(d,ne)|0)|0)+((8191&(t=(t=t+Math.imul(d,oe)|0)+Math.imul(h,ne)|0))<<13)|0;c=((n=n+Math.imul(h,oe)|0)+(t>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(D,G),t=(t=Math.imul(D,Y))+Math.imul(S,G)|0,n=Math.imul(S,Y),i=i+Math.imul(x,P)|0,t=(t=t+Math.imul(x,L)|0)+Math.imul(j,P)|0,n=n+Math.imul(j,L)|0,i=i+Math.imul(C,K)|0,t=(t=t+Math.imul(C,$)|0)+Math.imul(E,K)|0,n=n+Math.imul(E,$)|0,i=i+Math.imul(I,X)|0,t=(t=t+Math.imul(I,V)|0)+Math.imul(_,X)|0,n=n+Math.imul(_,V)|0,i=i+Math.imul(k,Z)|0,t=(t=t+Math.imul(k,ee)|0)+Math.imul(w,Z)|0,n=n+Math.imul(w,ee)|0,i=i+Math.imul(f,re)|0,t=(t=t+Math.imul(f,ie)|0)+Math.imul(y,re)|0,n=n+Math.imul(y,ie)|0,i=i+Math.imul(g,ne)|0,t=(t=t+Math.imul(g,oe)|0)+Math.imul(p,ne)|0,n=n+Math.imul(p,oe)|0;var Ie=(c+(i=i+Math.imul(d,le)|0)|0)+((8191&(t=(t=t+Math.imul(d,ce)|0)+Math.imul(h,le)|0))<<13)|0;c=((n=n+Math.imul(h,ce)|0)+(t>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(q,G),t=(t=Math.imul(q,Y))+Math.imul(F,G)|0,n=Math.imul(F,Y),i=i+Math.imul(D,P)|0,t=(t=t+Math.imul(D,L)|0)+Math.imul(S,P)|0,n=n+Math.imul(S,L)|0,i=i+Math.imul(x,K)|0,t=(t=t+Math.imul(x,$)|0)+Math.imul(j,K)|0,n=n+Math.imul(j,$)|0,i=i+Math.imul(C,X)|0,t=(t=t+Math.imul(C,V)|0)+Math.imul(E,X)|0,n=n+Math.imul(E,V)|0,i=i+Math.imul(I,Z)|0,t=(t=t+Math.imul(I,ee)|0)+Math.imul(_,Z)|0,n=n+Math.imul(_,ee)|0,i=i+Math.imul(k,re)|0,t=(t=t+Math.imul(k,ie)|0)+Math.imul(w,re)|0,n=n+Math.imul(w,ie)|0,i=i+Math.imul(f,ne)|0,t=(t=t+Math.imul(f,oe)|0)+Math.imul(y,ne)|0,n=n+Math.imul(y,oe)|0,i=i+Math.imul(g,le)|0,t=(t=t+Math.imul(g,ce)|0)+Math.imul(p,le)|0,n=n+Math.imul(p,ce)|0;var _e=(c+(i=i+Math.imul(d,de)|0)|0)+((8191&(t=(t=t+Math.imul(d,he)|0)+Math.imul(h,de)|0))<<13)|0;c=((n=n+Math.imul(h,he)|0)+(t>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(R,G),t=(t=Math.imul(R,Y))+Math.imul(H,G)|0,n=Math.imul(H,Y),i=i+Math.imul(q,P)|0,t=(t=t+Math.imul(q,L)|0)+Math.imul(F,P)|0,n=n+Math.imul(F,L)|0,i=i+Math.imul(D,K)|0,t=(t=t+Math.imul(D,$)|0)+Math.imul(S,K)|0,n=n+Math.imul(S,$)|0,i=i+Math.imul(x,X)|0,t=(t=t+Math.imul(x,V)|0)+Math.imul(j,X)|0,n=n+Math.imul(j,V)|0,i=i+Math.imul(C,Z)|0,t=(t=t+Math.imul(C,ee)|0)+Math.imul(E,Z)|0,n=n+Math.imul(E,ee)|0,i=i+Math.imul(I,re)|0,t=(t=t+Math.imul(I,ie)|0)+Math.imul(_,re)|0,n=n+Math.imul(_,ie)|0,i=i+Math.imul(k,ne)|0,t=(t=t+Math.imul(k,oe)|0)+Math.imul(w,ne)|0,n=n+Math.imul(w,oe)|0,i=i+Math.imul(f,le)|0,t=(t=t+Math.imul(f,ce)|0)+Math.imul(y,le)|0,n=n+Math.imul(y,ce)|0,i=i+Math.imul(g,de)|0,t=(t=t+Math.imul(g,he)|0)+Math.imul(p,de)|0,n=n+Math.imul(p,he)|0;var Be=(c+(i=i+Math.imul(d,ge)|0)|0)+((8191&(t=(t=t+Math.imul(d,pe)|0)+Math.imul(h,ge)|0))<<13)|0;c=((n=n+Math.imul(h,pe)|0)+(t>>>13)|0)+(Be>>>26)|0,Be&=67108863,i=Math.imul(R,P),t=(t=Math.imul(R,L))+Math.imul(H,P)|0,n=Math.imul(H,L),i=i+Math.imul(q,K)|0,t=(t=t+Math.imul(q,$)|0)+Math.imul(F,K)|0,n=n+Math.imul(F,$)|0,i=i+Math.imul(D,X)|0,t=(t=t+Math.imul(D,V)|0)+Math.imul(S,X)|0,n=n+Math.imul(S,V)|0,i=i+Math.imul(x,Z)|0,t=(t=t+Math.imul(x,ee)|0)+Math.imul(j,Z)|0,n=n+Math.imul(j,ee)|0,i=i+Math.imul(C,re)|0,t=(t=t+Math.imul(C,ie)|0)+Math.imul(E,re)|0,n=n+Math.imul(E,ie)|0,i=i+Math.imul(I,ne)|0,t=(t=t+Math.imul(I,oe)|0)+Math.imul(_,ne)|0,n=n+Math.imul(_,oe)|0,i=i+Math.imul(k,le)|0,t=(t=t+Math.imul(k,ce)|0)+Math.imul(w,le)|0,n=n+Math.imul(w,ce)|0,i=i+Math.imul(f,de)|0,t=(t=t+Math.imul(f,he)|0)+Math.imul(y,de)|0,n=n+Math.imul(y,he)|0;var Ce=(c+(i=i+Math.imul(g,ge)|0)|0)+((8191&(t=(t=t+Math.imul(g,pe)|0)+Math.imul(p,ge)|0))<<13)|0;c=((n=n+Math.imul(p,pe)|0)+(t>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,i=Math.imul(R,K),t=(t=Math.imul(R,$))+Math.imul(H,K)|0,n=Math.imul(H,$),i=i+Math.imul(q,X)|0,t=(t=t+Math.imul(q,V)|0)+Math.imul(F,X)|0,n=n+Math.imul(F,V)|0,i=i+Math.imul(D,Z)|0,t=(t=t+Math.imul(D,ee)|0)+Math.imul(S,Z)|0,n=n+Math.imul(S,ee)|0,i=i+Math.imul(x,re)|0,t=(t=t+Math.imul(x,ie)|0)+Math.imul(j,re)|0,n=n+Math.imul(j,ie)|0,i=i+Math.imul(C,ne)|0,t=(t=t+Math.imul(C,oe)|0)+Math.imul(E,ne)|0,n=n+Math.imul(E,oe)|0,i=i+Math.imul(I,le)|0,t=(t=t+Math.imul(I,ce)|0)+Math.imul(_,le)|0,n=n+Math.imul(_,ce)|0,i=i+Math.imul(k,de)|0,t=(t=t+Math.imul(k,he)|0)+Math.imul(w,de)|0,n=n+Math.imul(w,he)|0;var Ee=(c+(i=i+Math.imul(f,ge)|0)|0)+((8191&(t=(t=t+Math.imul(f,pe)|0)+Math.imul(y,ge)|0))<<13)|0;c=((n=n+Math.imul(y,pe)|0)+(t>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(R,X),t=(t=Math.imul(R,V))+Math.imul(H,X)|0,n=Math.imul(H,V),i=i+Math.imul(q,Z)|0,t=(t=t+Math.imul(q,ee)|0)+Math.imul(F,Z)|0,n=n+Math.imul(F,ee)|0,i=i+Math.imul(D,re)|0,t=(t=t+Math.imul(D,ie)|0)+Math.imul(S,re)|0,n=n+Math.imul(S,ie)|0,i=i+Math.imul(x,ne)|0,t=(t=t+Math.imul(x,oe)|0)+Math.imul(j,ne)|0,n=n+Math.imul(j,oe)|0,i=i+Math.imul(C,le)|0,t=(t=t+Math.imul(C,ce)|0)+Math.imul(E,le)|0,n=n+Math.imul(E,ce)|0,i=i+Math.imul(I,de)|0,t=(t=t+Math.imul(I,he)|0)+Math.imul(_,de)|0,n=n+Math.imul(_,he)|0;var Qe=(c+(i=i+Math.imul(k,ge)|0)|0)+((8191&(t=(t=t+Math.imul(k,pe)|0)+Math.imul(w,ge)|0))<<13)|0;c=((n=n+Math.imul(w,pe)|0)+(t>>>13)|0)+(Qe>>>26)|0,Qe&=67108863,i=Math.imul(R,Z),t=(t=Math.imul(R,ee))+Math.imul(H,Z)|0,n=Math.imul(H,ee),i=i+Math.imul(q,re)|0,t=(t=t+Math.imul(q,ie)|0)+Math.imul(F,re)|0,n=n+Math.imul(F,ie)|0,i=i+Math.imul(D,ne)|0,t=(t=t+Math.imul(D,oe)|0)+Math.imul(S,ne)|0,n=n+Math.imul(S,oe)|0,i=i+Math.imul(x,le)|0,t=(t=t+Math.imul(x,ce)|0)+Math.imul(j,le)|0,n=n+Math.imul(j,ce)|0,i=i+Math.imul(C,de)|0,t=(t=t+Math.imul(C,he)|0)+Math.imul(E,de)|0,n=n+Math.imul(E,he)|0;var xe=(c+(i=i+Math.imul(I,ge)|0)|0)+((8191&(t=(t=t+Math.imul(I,pe)|0)+Math.imul(_,ge)|0))<<13)|0;c=((n=n+Math.imul(_,pe)|0)+(t>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(R,re),t=(t=Math.imul(R,ie))+Math.imul(H,re)|0,n=Math.imul(H,ie),i=i+Math.imul(q,ne)|0,t=(t=t+Math.imul(q,oe)|0)+Math.imul(F,ne)|0,n=n+Math.imul(F,oe)|0,i=i+Math.imul(D,le)|0,t=(t=t+Math.imul(D,ce)|0)+Math.imul(S,le)|0,n=n+Math.imul(S,ce)|0,i=i+Math.imul(x,de)|0,t=(t=t+Math.imul(x,he)|0)+Math.imul(j,de)|0,n=n+Math.imul(j,he)|0;var je=(c+(i=i+Math.imul(C,ge)|0)|0)+((8191&(t=(t=t+Math.imul(C,pe)|0)+Math.imul(E,ge)|0))<<13)|0;c=((n=n+Math.imul(E,pe)|0)+(t>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(R,ne),t=(t=Math.imul(R,oe))+Math.imul(H,ne)|0,n=Math.imul(H,oe),i=i+Math.imul(q,le)|0,t=(t=t+Math.imul(q,ce)|0)+Math.imul(F,le)|0,n=n+Math.imul(F,ce)|0,i=i+Math.imul(D,de)|0,t=(t=t+Math.imul(D,he)|0)+Math.imul(S,de)|0,n=n+Math.imul(S,he)|0;var ze=(c+(i=i+Math.imul(x,ge)|0)|0)+((8191&(t=(t=t+Math.imul(x,pe)|0)+Math.imul(j,ge)|0))<<13)|0;c=((n=n+Math.imul(j,pe)|0)+(t>>>13)|0)+(ze>>>26)|0,ze&=67108863,i=Math.imul(R,le),t=(t=Math.imul(R,ce))+Math.imul(H,le)|0,n=Math.imul(H,ce),i=i+Math.imul(q,de)|0,t=(t=t+Math.imul(q,he)|0)+Math.imul(F,de)|0,n=n+Math.imul(F,he)|0;var De=(c+(i=i+Math.imul(D,ge)|0)|0)+((8191&(t=(t=t+Math.imul(D,pe)|0)+Math.imul(S,ge)|0))<<13)|0;c=((n=n+Math.imul(S,pe)|0)+(t>>>13)|0)+(De>>>26)|0,De&=67108863,i=Math.imul(R,de),t=(t=Math.imul(R,he))+Math.imul(H,de)|0,n=Math.imul(H,he);var Se=(c+(i=i+Math.imul(q,ge)|0)|0)+((8191&(t=(t=t+Math.imul(q,pe)|0)+Math.imul(F,ge)|0))<<13)|0;c=((n=n+Math.imul(F,pe)|0)+(t>>>13)|0)+(Se>>>26)|0,Se&=67108863;var Me=(c+(i=Math.imul(R,ge))|0)+((8191&(t=(t=Math.imul(R,pe))+Math.imul(H,ge)|0))<<13)|0;return c=((n=Math.imul(H,pe))+(t>>>13)|0)+(Me>>>26)|0,Me&=67108863,l[0]=me,l[1]=fe,l[2]=ye,l[3]=be,l[4]=ke,l[5]=we,l[6]=ve,l[7]=Ie,l[8]=_e,l[9]=Be,l[10]=Ce,l[11]=Ee,l[12]=Qe,l[13]=xe,l[14]=je,l[15]=ze,l[16]=De,l[17]=Se,l[18]=Me,0!==c&&(l[19]=c,r.length++),r};function g(e,a,r){return(new p).mulp(e,a,r)}function p(e,a){this.x=e,this.y=a}Math.imul||(A=h),n.prototype.mulTo=function(e,a){var r=this.length+e.length;return 10===this.length&&10===e.length?A(this,e,a):r<63?h(this,e,a):r<1024?function(e,a,r){r.negative=a.negative^e.negative,r.length=e.length+a.length;for(var i=0,t=0,n=0;n>>26)|0)>>>26,o&=67108863}r.words[n]=s,i=o,o=t}return 0!==i?r.words[n]=i:r.length--,r.strip()}(this,e,a):g(this,e,a)},p.prototype.makeRBT=function(e){for(var a=new Array(e),r=n.prototype._countBits(e)-1,i=0;i>=1;return i},p.prototype.permute=function(e,a,r,i,t,n){for(var o=0;o>>=1)t++;return 1<>>=13,r[2*o+1]=8191&n,n>>>=13;for(o=2*a;o>=26,a+=t/67108864|0,a+=n>>>26,this.words[r]=67108863&n}return 0!==a&&(this.words[r]=a,this.length++),this},n.prototype.muln=function(e){return this.clone().imuln(e)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(e){var a=function(e){for(var a=new Array(e.bitLength()),r=0;r>>t}return a}(e);if(0===a.length)return new n(1);for(var r=this,i=0;i=0);var a,r=e%26,t=(e-r)/26,n=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(a=0;a>>26-r}o&&(this.words[a]=o,this.length++)}if(0!==t){for(a=this.length-1;a>=0;a--)this.words[a+t]=this.words[a];for(a=0;a=0),t=a?(a-a%26)/26:0;var n=e%26,o=Math.min((e-n)/26,this.length),s=67108863^67108863>>>n<o)for(this.length-=o,c=0;c=0&&(0!==u||c>=t);c--){var d=0|this.words[c];this.words[c]=u<<26-n|d>>>n,u=d&s}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(e,a,r){return i(0===this.negative),this.iushrn(e,a,r)},n.prototype.shln=function(e){return this.clone().ishln(e)},n.prototype.ushln=function(e){return this.clone().iushln(e)},n.prototype.shrn=function(e){return this.clone().ishrn(e)},n.prototype.ushrn=function(e){return this.clone().iushrn(e)},n.prototype.testn=function(e){i("number"==typeof e&&e>=0);var a=e%26,r=(e-a)/26,t=1<=0);var a=e%26,r=(e-a)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==a&&r++,this.length=Math.min(r,this.length),0!==a){var t=67108863^67108863>>>a<=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},n.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a>26)-(l/67108864|0),this.words[t+r]=67108863&n}for(;t>26,this.words[t+r]=67108863&n;if(0===s)return this.strip();for(i(-1===s),s=0,t=0;t>26,this.words[t]=67108863&n;return this.negative=1,this.strip()},n.prototype._wordDiv=function(e,a){var r=(this.length,e.length),i=this.clone(),t=e,o=0|t.words[t.length-1];0!==(r=26-this._countBits(o))&&(t=t.ushln(r),i.iushln(r),o=0|t.words[t.length-1]);var s,l=i.length-t.length;if("mod"!==a){(s=new n(null)).length=l+1,s.words=new Array(s.length);for(var c=0;c=0;d--){var h=67108864*(0|i.words[t.length+d])+(0|i.words[t.length+d-1]);for(h=Math.min(h/o|0,67108863),i._ishlnsubmul(t,h,d);0!==i.negative;)h--,i.negative=0,i._ishlnsubmul(t,1,d),i.isZero()||(i.negative^=1);s&&(s.words[d]=h)}return s&&s.strip(),i.strip(),"div"!==a&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},n.prototype.divmod=function(e,a,r){return i(!e.isZero()),this.isZero()?{div:new n(0),mod:new n(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,a),"mod"!==a&&(t=s.div.neg()),"div"!==a&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:t,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),a),"mod"!==a&&(t=s.div.neg()),{div:t,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),a),"div"!==a&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new n(0),mod:this}:1===e.length?"div"===a?{div:this.divn(e.words[0]),mod:null}:"mod"===a?{div:null,mod:new n(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new n(this.modn(e.words[0]))}:this._wordDiv(e,a);var t,o,s},n.prototype.div=function(e){return this.divmod(e,"div",!1).div},n.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},n.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},n.prototype.divRound=function(e){var a=this.divmod(e);if(a.mod.isZero())return a.div;var r=0!==a.div.negative?a.mod.isub(e):a.mod,i=e.ushrn(1),t=e.andln(1),n=r.cmp(i);return n<0||1===t&&0===n?a.div:0!==a.div.negative?a.div.isubn(1):a.div.iaddn(1)},n.prototype.modn=function(e){i(e<=67108863);for(var a=(1<<26)%e,r=0,t=this.length-1;t>=0;t--)r=(a*r+(0|this.words[t]))%e;return r},n.prototype.idivn=function(e){i(e<=67108863);for(var a=0,r=this.length-1;r>=0;r--){var t=(0|this.words[r])+67108864*a;this.words[r]=t/e|0,a=t%e}return this.strip()},n.prototype.divn=function(e){return this.clone().idivn(e)},n.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var a=this,r=e.clone();a=0!==a.negative?a.umod(e):a.clone();for(var t=new n(1),o=new n(0),s=new n(0),l=new n(1),c=0;a.isEven()&&r.isEven();)a.iushrn(1),r.iushrn(1),++c;for(var u=r.clone(),d=a.clone();!a.isZero();){for(var h=0,A=1;0==(a.words[0]&A)&&h<26;++h,A<<=1);if(h>0)for(a.iushrn(h);h-- >0;)(t.isOdd()||o.isOdd())&&(t.iadd(u),o.isub(d)),t.iushrn(1),o.iushrn(1);for(var g=0,p=1;0==(r.words[0]&p)&&g<26;++g,p<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(s.isOdd()||l.isOdd())&&(s.iadd(u),l.isub(d)),s.iushrn(1),l.iushrn(1);a.cmp(r)>=0?(a.isub(r),t.isub(s),o.isub(l)):(r.isub(a),s.isub(t),l.isub(o))}return{a:s,b:l,gcd:r.iushln(c)}},n.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var a=this,r=e.clone();a=0!==a.negative?a.umod(e):a.clone();for(var t,o=new n(1),s=new n(0),l=r.clone();a.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,u=1;0==(a.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(a.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var d=0,h=1;0==(r.words[0]&h)&&d<26;++d,h<<=1);if(d>0)for(r.iushrn(d);d-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);a.cmp(r)>=0?(a.isub(r),o.isub(s)):(r.isub(a),s.isub(o))}return(t=0===a.cmpn(1)?o:s).cmpn(0)<0&&t.iadd(e),t},n.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var a=this.clone(),r=e.clone();a.negative=0,r.negative=0;for(var i=0;a.isEven()&&r.isEven();i++)a.iushrn(1),r.iushrn(1);for(;;){for(;a.isEven();)a.iushrn(1);for(;r.isEven();)r.iushrn(1);var t=a.cmp(r);if(t<0){var n=a;a=r,r=n}else if(0===t||0===r.cmpn(1))break;a.isub(r)}return r.iushln(i)},n.prototype.invm=function(e){return this.egcd(e).a.umod(e)},n.prototype.isEven=function(){return 0==(1&this.words[0])},n.prototype.isOdd=function(){return 1==(1&this.words[0])},n.prototype.andln=function(e){return this.words[0]&e},n.prototype.bincn=function(e){i("number"==typeof e);var a=e%26,r=(e-a)/26,t=1<>>26,s&=67108863,this.words[o]=s}return 0!==n&&(this.words[o]=n,this.length++),this},n.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},n.prototype.cmpn=function(e){var a,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)a=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var t=0|this.words[0];a=t===e?0:te.length)return 1;if(this.length=0;r--){var i=0|this.words[r],t=0|e.words[r];if(i!==t){it&&(a=1);break}}return a},n.prototype.gtn=function(e){return 1===this.cmpn(e)},n.prototype.gt=function(e){return 1===this.cmp(e)},n.prototype.gten=function(e){return this.cmpn(e)>=0},n.prototype.gte=function(e){return this.cmp(e)>=0},n.prototype.ltn=function(e){return-1===this.cmpn(e)},n.prototype.lt=function(e){return-1===this.cmp(e)},n.prototype.lten=function(e){return this.cmpn(e)<=0},n.prototype.lte=function(e){return this.cmp(e)<=0},n.prototype.eqn=function(e){return 0===this.cmpn(e)},n.prototype.eq=function(e){return 0===this.cmp(e)},n.red=function(e){return new v(e)},n.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(e){return this.red=e,this},n.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},n.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},n.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},n.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},n.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},n.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},n.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},n.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var m={k256:null,p224:null,p192:null,p25519:null};function f(e,a){this.name=e,this.p=new n(a,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){f.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){f.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function k(){f.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function w(){f.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function v(e){if("string"==typeof e){var a=n._prime(e);this.m=a.p,this.prime=a}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function I(e){v.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}f.prototype._tmp=function(){var e=new n(null);return e.words=new Array(Math.ceil(this.n/13)),e},f.prototype.ireduce=function(e){var a,r=e;do{this.split(r,this.tmp),a=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(a>this.n);var i=a0?r.isub(this.p):r.strip(),r},f.prototype.split=function(e,a){e.iushrn(this.n,0,a)},f.prototype.imulK=function(e){return e.imul(this.k)},t(y,f),y.prototype.split=function(e,a){for(var r=Math.min(e.length,9),i=0;i>>22,t=n}t>>>=22,e.words[i-10]=t,0===t&&e.length>10?e.length-=10:e.length-=9},y.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var a=0,r=0;r>>=26,e.words[r]=t,a=i}return 0!==a&&(e.words[e.length++]=a),e},n._prime=function(e){if(m[e])return m[e];var a;if("k256"===e)a=new y;else if("p224"===e)a=new b;else if("p192"===e)a=new k;else{if("p25519"!==e)throw new Error("Unknown prime "+e);a=new w}return m[e]=a,a},v.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},v.prototype._verify2=function(e,a){i(0==(e.negative|a.negative),"red works only with positives"),i(e.red&&e.red===a.red,"red works only with red numbers")},v.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},v.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},v.prototype.add=function(e,a){this._verify2(e,a);var r=e.add(a);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},v.prototype.iadd=function(e,a){this._verify2(e,a);var r=e.iadd(a);return r.cmp(this.m)>=0&&r.isub(this.m),r},v.prototype.sub=function(e,a){this._verify2(e,a);var r=e.sub(a);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},v.prototype.isub=function(e,a){this._verify2(e,a);var r=e.isub(a);return r.cmpn(0)<0&&r.iadd(this.m),r},v.prototype.shl=function(e,a){return this._verify1(e),this.imod(e.ushln(a))},v.prototype.imul=function(e,a){return this._verify2(e,a),this.imod(e.imul(a))},v.prototype.mul=function(e,a){return this._verify2(e,a),this.imod(e.mul(a))},v.prototype.isqr=function(e){return this.imul(e,e.clone())},v.prototype.sqr=function(e){return this.mul(e,e)},v.prototype.sqrt=function(e){if(e.isZero())return e.clone();var a=this.m.andln(3);if(i(a%2==1),3===a){var r=this.m.add(new n(1)).iushrn(2);return this.pow(e,r)}for(var t=this.m.subn(1),o=0;!t.isZero()&&0===t.andln(1);)o++,t.iushrn(1);i(!t.isZero());var s=new n(1).toRed(this),l=s.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new n(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var d=this.pow(u,t),h=this.pow(e,t.addn(1).iushrn(1)),A=this.pow(e,t),g=o;0!==A.cmp(s);){for(var p=A,m=0;0!==p.cmp(s);m++)p=p.redSqr();i(m=0;i--){for(var c=a.words[i],u=l-1;u>=0;u--){var d=c>>u&1;t!==r[0]&&(t=this.sqr(t)),0!==d||0!==o?(o<<=1,o|=d,(4===++s||0===i&&0===u)&&(t=this.mul(t,r[o]),s=0,o=0)):s=0}l=26}return t},v.prototype.convertTo=function(e){var a=e.umod(this.m);return a===e?a.clone():a},v.prototype.convertFrom=function(e){var a=e.clone();return a.red=null,a},n.mont=function(e){return new I(e)},t(I,v),I.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},I.prototype.convertFrom=function(e){var a=this.imod(e.mul(this.rinv));return a.red=null,a},I.prototype.imul=function(e,a){if(e.isZero()||a.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(a),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=r.isub(i).iushrn(this.shift),n=t;return t.cmp(this.m)>=0?n=t.isub(this.m):t.cmpn(0)<0&&(n=t.iadd(this.m)),n._forceRed(this)},I.prototype.mul=function(e,a){if(e.isZero()||a.isZero())return new n(0)._forceRed(this);var r=e.mul(a),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=r.isub(i).iushrn(this.shift),o=t;return t.cmp(this.m)>=0?o=t.isub(this.m):t.cmpn(0)<0&&(o=t.iadd(this.m)),o._forceRed(this)},I.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e,this)}).call(this,r(48)(e))},function(e,a,r){"use strict";var i=a;i.version=r(157).version,i.utils=r(158),i.rand=r(74),i.curve=r(25),i.curves=r(163),i.ec=r(171),i.eddsa=r(175)},function(e,a){function r(e,a){if(!e)throw new Error(a||"Assertion failed")}e.exports=r,r.equal=function(e,a,r){if(e!=a)throw new Error(r||"Assertion failed: "+e+" != "+a)}},function(e,a){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,a){var r,i,t=e.exports={};function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(e){if(r===setTimeout)return setTimeout(e,0);if((r===n||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(a){try{return r.call(null,e,0)}catch(a){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:n}catch(e){r=n}try{i="function"==typeof clearTimeout?clearTimeout:o}catch(e){i=o}}();var l,c=[],u=!1,d=-1;function h(){u&&l&&(u=!1,l.length?c=l.concat(c):d=-1,c.length&&A())}function A(){if(!u){var e=s(h);u=!0;for(var a=c.length;a;){for(l=c,c=[];++d1)for(var r=1;r=e.length)&&56320==(64512&e.charCodeAt(a+1)))}function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function s(e){return 1===e.length?"0"+e:e}function l(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}a.inherits=t,a.toArray=function(e,a){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(a){if("hex"===a)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),t=0;t>6|192,r[i++]=63&o|128):n(e,t)?(o=65536+((1023&o)<<10)+(1023&e.charCodeAt(++t)),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=63&o|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=63&o|128)}else for(t=0;t>>0}return o},a.split32=function(e,a){for(var r=new Array(4*e.length),i=0,t=0;i>>24,r[t+1]=n>>>16&255,r[t+2]=n>>>8&255,r[t+3]=255&n):(r[t+3]=n>>>24,r[t+2]=n>>>16&255,r[t+1]=n>>>8&255,r[t]=255&n)}return r},a.rotr32=function(e,a){return e>>>a|e<<32-a},a.rotl32=function(e,a){return e<>>32-a},a.sum32=function(e,a){return e+a>>>0},a.sum32_3=function(e,a,r){return e+a+r>>>0},a.sum32_4=function(e,a,r,i){return e+a+r+i>>>0},a.sum32_5=function(e,a,r,i,t){return e+a+r+i+t>>>0},a.sum64=function(e,a,r,i){var t=e[a],n=i+e[a+1]>>>0,o=(n>>0,e[a+1]=n},a.sum64_hi=function(e,a,r,i){return(a+i>>>0>>0},a.sum64_lo=function(e,a,r,i){return a+i>>>0},a.sum64_4_hi=function(e,a,r,i,t,n,o,s){var l=0,c=a;return l+=(c=c+i>>>0)>>0)>>0)>>0},a.sum64_4_lo=function(e,a,r,i,t,n,o,s){return a+i+n+s>>>0},a.sum64_5_hi=function(e,a,r,i,t,n,o,s,l,c){var u=0,d=a;return u+=(d=d+i>>>0)>>0)>>0)>>0)>>0},a.sum64_5_lo=function(e,a,r,i,t,n,o,s,l,c){return a+i+n+s+c>>>0},a.rotr64_hi=function(e,a,r){return(a<<32-r|e>>>r)>>>0},a.rotr64_lo=function(e,a,r){return(e<<32-r|a>>>r)>>>0},a.shr64_hi=function(e,a,r){return e>>>r},a.shr64_lo=function(e,a,r){return(e<<32-r|a>>>r)>>>0}},function(e,a,r){var i=r(0).Buffer,t=r(29).Transform,n=r(33).StringDecoder;function o(e){t.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(1)(o,t),o.prototype.update=function(e,a,r){"string"==typeof e&&(e=i.from(e,a));var t=this._update(e);return this.hashMode?this:(r&&(t=this._toString(t,r)),t)},o.prototype.setAutoPadding=function(){},o.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},o.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},o.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},o.prototype._transform=function(e,a,r){var i;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){i=e}finally{r(i)}},o.prototype._flush=function(e){var a;try{this.push(this.__final())}catch(e){a=e}e(a)},o.prototype._finalOrDigest=function(e){var a=this.__final()||i.alloc(0);return e&&(a=this._toString(a,e,!0)),a},o.prototype._toString=function(e,a,r){if(this._decoder||(this._decoder=new n(a),this._encoding=a),this._encoding!==a)throw new Error("can't switch encodings");var i=this._decoder.write(e);return r&&(i+=this._decoder.end()),i},e.exports=o},function(e,a,r){"use strict";var i=r(1),t=r(28),n=r(34),o=r(35),s=r(9);function l(e){s.call(this,"digest"),this._hash=e}i(l,s),l.prototype._update=function(e){this._hash.update(e)},l.prototype._final=function(){return this._hash.digest()},e.exports=function(e){return"md5"===(e=e.toLowerCase())?new t:"rmd160"===e||"ripemd160"===e?new n:new l(o(e))}},function(e,a,r){"use strict";var i=r(22),t=Object.keys||function(e){var a=[];for(var r in e)a.push(r);return a};e.exports=d;var n=r(16);n.inherits=r(1);var o=r(50),s=r(32);n.inherits(d,o);for(var l=t(s.prototype),c=0;cn)throw new RangeError("requested too many random bytes");var r=o.allocUnsafe(e);if(e>0)if(e>t)for(var l=0;l("0"+e.toString(16)).slice(-2))});!function(a){function r(a){return l.decode(e.from(e.from(a,"hex").reverse().map((e,a)=>0===a?e:127&e)).toString("hex"))}function i(a){const r=!(64&e.from(a.slice(0,2),"hex")[0]),i=e.from(a,"hex").map((e,a)=>0===a?63&e:127&e);let t=o.default.zero;for(let e=i.length-1;e>=0;e--)t=0===e?t.or(i[e]):t.or(o.default(i[e]).shiftLeft(7*e-1));return r?t.toJSNumber():t.negate().toJSNumber()}function n(a){if(44!==a.length&&42!==a.length)throw new Error("Incorrect hex length to parse an address");let r=44===a.length?a.substring(0,4):"00"+a.substring(0,2),i=44===a.length?4:2;if("0000"===r)return t.default.encode(e.from("06a19f"+a.substring(i),"hex"));if("0001"===r)return t.default.encode(e.from("06a1a1"+a.substring(i),"hex"));if("0002"===r)return t.default.encode(e.from("06a1a4"+a.substring(i),"hex"));if("01"===a.substring(0,2)&&44===a.length)return t.default.encode(e.from("025a79"+a.substring(2,42),"hex"));throw new Error("Unrecognized address type")}function c(a,r){const i=a instanceof e?a:e.from(a);if("tz1"===r)return n(`0000${i.toString("hex")}`);if("tz2"===r)return n(`0001${i.toString("hex")}`);if("tz3"===r)return n(`0002${i.toString("hex")}`);if("kt1"===r)return n(`01${i.toString("hex")}00`);throw new Error(`Unrecognized address hint, '${r}'`)}function u(a){if(66!==a.length&&68!==a.length)throw new Error(`Incorrect hex length, ${a.length} to parse a key`);let r=a.substring(0,2);if("00"===r)return t.default.encode(e.from("0d0f25d9"+a.substring(2),"hex"));if("01"===r&&68===a.length)return t.default.encode(e.from("03fee256"+a.substring(2),"hex"));if("02"===r&&68===a.length)return t.default.encode(e.from("03b28b7f"+a.substring(2),"hex"));throw new Error("Unrecognized key type")}function d(a,r){const i=a instanceof e?a:e.from(a);if("op"===r)return t.default.encode(e.from("0574"+i.toString("hex"),"hex"));if("p"===r)return t.default.encode(e.from("02aa"+i.toString("hex"),"hex"));if(""===r)return t.default.encode(i);throw new Error(`Unsupported hint, '${r}'`)}a.writeBoolean=function(e){return e?"ff":"00"},a.readBoolean=function(e){return parseInt(e,16)>0},a.writeInt=function(a){if(a<0)throw new Error("Use writeSignedInt to encode negative numbers");return e.from(e.from(l.encode(a),"hex").map((e,a)=>0===a?e:128^e).reverse()).toString("hex")},a.writeSignedInt=function(e){if(0===e)return"00";const a=o.default(e).abs(),r=a.bitLength().toJSNumber();let i=[],t=a;for(let a=0;a("0"+e.toString(16)).slice(-2)).join("")},a.readInt=r,a.readSignedInt=i,a.findInt=function(e,a,t=!1){let n="",o=0;for(;a+2*o=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,t=(r-i)/4294967296;this._block.writeUInt32BE(t,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var n=this._hash();return e?n.toString(e):n},t.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=t},function(e,a,r){"use strict";Object.defineProperty(a,"__esModule",{value:!0});class i{static setFetch(e){this.fetch=e}static getFetch(){return this.fetch}}i.fetch=null,a.default=i},function(e,a,r){(function(e){function r(e){return Object.prototype.toString.call(e)}a.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===r(e)},a.isBoolean=function(e){return"boolean"==typeof e},a.isNull=function(e){return null===e},a.isNullOrUndefined=function(e){return null==e},a.isNumber=function(e){return"number"==typeof e},a.isString=function(e){return"string"==typeof e},a.isSymbol=function(e){return"symbol"==typeof e},a.isUndefined=function(e){return void 0===e},a.isRegExp=function(e){return"[object RegExp]"===r(e)},a.isObject=function(e){return"object"==typeof e&&null!==e},a.isDate=function(e){return"[object Date]"===r(e)},a.isError=function(e){return"[object Error]"===r(e)||e instanceof Error},a.isFunction=function(e){return"function"==typeof e},a.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},a.isBuffer=e.isBuffer}).call(this,r(2).Buffer)},function(e,a,r){"use strict";(function(e){var i=this&&this.__awaiter||function(e,a,r,i){return new(r||(r=Promise))(function(t,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function s(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){e.done?t(e.value):new r(function(a){a(e.value)}).then(o,s)}l((i=i.apply(e,a||[])).next())})},t=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var a={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(a[r]=e[r]);return a.default=e,a},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});const o=t(r(119)),s=n(r(122)),l=r(127);!function(a){function r(e){return s.default(e).score}a.generateSaltForPwHash=function(){return i(this,void 0,void 0,function*(){return yield l.salt()})},a.encryptMessage=function(a,t,n){return i(this,void 0,void 0,function*(){if(r(t)<3)throw new Error("The password strength should not be less than 3.");const i=e.from(a),o=yield l.pwhash(t,n),s=yield l.nonce(),c=e.from(s),u=yield l.close(i,c,o),d=e.from(u);return e.concat([c,d])})},a.decryptMessage=function(a,r,t){return i(this,void 0,void 0,function*(){const i=yield l.pwhash(r,t),n=yield l.open(a,i);return e.from(n).toString()})},a.simpleHash=function(a,r){return e.from(o.blake2b(a,null,r))},a.getPasswordStrength=r,a.generateKeys=function(e){return i(this,void 0,void 0,function*(){const a=yield l.keys(e);return{privateKey:a.privateKey,publicKey:a.publicKey}})},a.signDetached=function(a,r){return i(this,void 0,void 0,function*(){const i=yield l.sign(a,r);return e.from(i)})}}(a.CryptoUtils||(a.CryptoUtils={}))}).call(this,r(2).Buffer)},function(e,a,r){(function(a){e.exports=function(e,r){for(var i=Math.min(e.length,r.length),t=new a(i),n=0;n=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=i.join32(e,0,e.length-r,this.endian);for(var t=0;t>>24&255,i[t++]=e>>>16&255,i[t++]=e>>>8&255,i[t++]=255&e}else for(i[t++]=255&e,i[t++]=e>>>8&255,i[t++]=e>>>16&255,i[t++]=e>>>24&255,i[t++]=0,i[t++]=0,i[t++]=0,i[t++]=0,n=8;n>>24]^u[g>>>16&255]^d[p>>>8&255]^h[255&m]^a[f++],o=c[g>>>24]^u[p>>>16&255]^d[m>>>8&255]^h[255&A]^a[f++],s=c[p>>>24]^u[m>>>16&255]^d[A>>>8&255]^h[255&g]^a[f++],l=c[m>>>24]^u[A>>>16&255]^d[g>>>8&255]^h[255&p]^a[f++],A=n,g=o,p=s,m=l;return n=(i[A>>>24]<<24|i[g>>>16&255]<<16|i[p>>>8&255]<<8|i[255&m])^a[f++],o=(i[g>>>24]<<24|i[p>>>16&255]<<16|i[m>>>8&255]<<8|i[255&A])^a[f++],s=(i[p>>>24]<<24|i[m>>>16&255]<<16|i[A>>>8&255]<<8|i[255&g])^a[f++],l=(i[m>>>24]<<24|i[A>>>16&255]<<16|i[g>>>8&255]<<8|i[255&p])^a[f++],[n>>>=0,o>>>=0,s>>>=0,l>>>=0]}var s=[0,1,2,4,8,16,32,64,128,27,54],l=function(){for(var e=new Array(256),a=0;a<256;a++)e[a]=a<128?a<<1:a<<1^283;for(var r=[],i=[],t=[[],[],[],[]],n=[[],[],[],[]],o=0,s=0,l=0;l<256;++l){var c=s^s<<1^s<<2^s<<3^s<<4;c=c>>>8^255&c^99,r[o]=c,i[c]=o;var u=e[o],d=e[u],h=e[d],A=257*e[c]^16843008*c;t[0][o]=A<<24|A>>>8,t[1][o]=A<<16|A>>>16,t[2][o]=A<<8|A>>>24,t[3][o]=A,A=16843009*h^65537*d^257*u^16843008*o,n[0][c]=A<<24|A>>>8,n[1][c]=A<<16|A>>>16,n[2][c]=A<<8|A>>>24,n[3][c]=A,0===o?o=s=1:(o=u^e[e[e[h^u]]],s^=e[e[s]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:t,INV_SUB_MIX:n}}();function c(e){this._key=t(e),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var e=this._key,a=e.length,r=a+6,i=4*(r+1),t=[],n=0;n>>24,o=l.SBOX[o>>>24]<<24|l.SBOX[o>>>16&255]<<16|l.SBOX[o>>>8&255]<<8|l.SBOX[255&o],o^=s[n/a|0]<<24):a>6&&n%a==4&&(o=l.SBOX[o>>>24]<<24|l.SBOX[o>>>16&255]<<16|l.SBOX[o>>>8&255]<<8|l.SBOX[255&o]),t[n]=t[n-a]^o}for(var c=[],u=0;u>>24]]^l.INV_SUB_MIX[1][l.SBOX[h>>>16&255]]^l.INV_SUB_MIX[2][l.SBOX[h>>>8&255]]^l.INV_SUB_MIX[3][l.SBOX[255&h]]}this._nRounds=r,this._keySchedule=t,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(e){return o(e=t(e),this._keySchedule,l.SUB_MIX,l.SBOX,this._nRounds)},c.prototype.encryptBlock=function(e){var a=this.encryptBlockRaw(e),r=i.allocUnsafe(16);return r.writeUInt32BE(a[0],0),r.writeUInt32BE(a[1],4),r.writeUInt32BE(a[2],8),r.writeUInt32BE(a[3],12),r},c.prototype.decryptBlock=function(e){var a=(e=t(e))[1];e[1]=e[3],e[3]=a;var r=o(e,this._invKeySchedule,l.INV_SUB_MIX,l.INV_SBOX,this._nRounds),n=i.allocUnsafe(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[3],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[1],12),n},c.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},e.exports.AES=c},function(e,a,r){var i=r(0).Buffer,t=r(28);e.exports=function(e,a,r,n){if(i.isBuffer(e)||(e=i.from(e,"binary")),a&&(i.isBuffer(a)||(a=i.from(a,"binary")),8!==a.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var o=r/8,s=i.alloc(o),l=i.alloc(n||0),c=i.alloc(0);o>0||n>0;){var u=new t;u.update(c),u.update(e),a&&u.update(a),c=u.digest();var d=0;if(o>0){var h=s.length-o;d=Math.min(o,c.length),c.copy(s,h,0,d),o-=d}if(d0){var A=l.length-n,g=Math.min(n,c.length-d);c.copy(l,A,d,d+g),n-=g}}return c.fill(0),{key:s,iv:l}}},function(e,a,r){"use strict";var i=a;i.base=r(159),i.short=r(160),i.mont=r(161),i.edwards=r(162)},function(e,a,r){var i=r(178),t=r(190),n=r(191),o=r(39),s=r(37),l=r(0).Buffer;function c(e){var a;"object"!=typeof e||l.isBuffer(e)||(a=e.passphrase,e=e.key),"string"==typeof e&&(e=l.from(e));var r,c,u=n(e,a),d=u.tag,h=u.data;switch(d){case"CERTIFICATE":c=i.certificate.decode(h,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(c||(c=i.PublicKey.decode(h,"der")),r=c.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPublicKey.decode(c.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return c.subjectPrivateKey=c.subjectPublicKey,{type:"ec",data:c};case"1.2.840.10040.4.1":return c.algorithm.params.pub_key=i.DSAparam.decode(c.subjectPublicKey.data,"der"),{type:"dsa",data:c.algorithm.params};default:throw new Error("unknown key id "+r)}throw new Error("unknown key type "+d);case"ENCRYPTED PRIVATE KEY":h=function(e,a){var r=e.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),n=t[e.algorithm.decrypt.cipher.algo.join(".")],c=e.algorithm.decrypt.cipher.iv,u=e.subjectPrivateKey,d=parseInt(n.split("-")[1],10)/8,h=s.pbkdf2Sync(a,r,i,d,"sha1"),A=o.createDecipheriv(n,h,c),g=[];return g.push(A.update(u)),g.push(A.final()),l.concat(g)}(h=i.EncryptedPrivateKey.decode(h,"der"),a);case"PRIVATE KEY":switch(r=(c=i.PrivateKey.decode(h,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPrivateKey.decode(c.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:c.algorithm.curve,privateKey:i.ECPrivateKey.decode(c.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return c.algorithm.params.priv_key=i.DSAparam.decode(c.subjectPrivateKey,"der"),{type:"dsa",params:c.algorithm.params};default:throw new Error("unknown key id "+r)}throw new Error("unknown key type "+d);case"RSA PUBLIC KEY":return i.RSAPublicKey.decode(h,"der");case"RSA PRIVATE KEY":return i.RSAPrivateKey.decode(h,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:i.DSAPrivateKey.decode(h,"der")};case"EC PRIVATE KEY":return{curve:(h=i.ECPrivateKey.decode(h,"der")).parameters.value,privateKey:h.privateKey};default:throw new Error("unknown key type "+d)}}e.exports=c,c.signature=i.signature},function(e,a,r){"use strict";(function(e){var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var a={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(a[r]=e[r]);return a.default=e,a};Object.defineProperty(a,"__esModule",{value:!0});const t=i(r(95)),n=i(r(96)),o=i(r(97)),s=r(13),l=['"parameter"','"storage"','"code"','"False"','"Elt"','"Left"','"None"','"Pair"','"Right"','"Some"','"True"','"Unit"','"PACK"','"UNPACK"','"BLAKE2B"','"SHA256"','"SHA512"','"ABS"','"ADD"','"AMOUNT"','"AND"','"BALANCE"','"CAR"','"CDR"','"CHECK_SIGNATURE"','"COMPARE"','"CONCAT"','"CONS"','"CREATE_ACCOUNT"','"CREATE_CONTRACT"','"IMPLICIT_ACCOUNT"','"DIP"','"DROP"','"DUP"','"EDIV"','"EMPTY_MAP"','"EMPTY_SET"','"EQ"','"EXEC"','"FAILWITH"','"GE"','"GET"','"GT"','"HASH_KEY"','"IF"','"IF_CONS"','"IF_LEFT"','"IF_NONE"','"INT"','"LAMBDA"','"LE"','"LEFT"','"LOOP"','"LSL"','"LSR"','"LT"','"MAP"','"MEM"','"MUL"','"NEG"','"NEQ"','"NIL"','"NONE"','"NOT"','"NOW"','"OR"','"PAIR"','"PUSH"','"RIGHT"','"SIZE"','"SOME"','"SOURCE"','"SENDER"','"SELF"','"STEPS_TO_QUOTA"','"SUB"','"SWAP"','"TRANSFER_TOKENS"','"SET_DELEGATE"','"UNIT"','"UPDATE"','"XOR"','"ITER"','"LOOP_LEFT"','"ADDRESS"','"CONTRACT"','"ISNAT"','"CAST"','"RENAME"','"bool"','"contract"','"int"','"key"','"key_hash"','"lambda"','"list"','"map"','"big_map"','"nat"','"option"','"or"','"pair"','"set"','"signature"','"string"','"bytes"','"mutez"','"timestamp"','"unit"','"operation"','"address"','"SLICE"','"DEFAULT_ACCOUNT"','"tez"'];!function(a){function r(e){const a=new o.Parser(o.Grammar.fromCompiled(n));return A(e).forEach(e=>{a.feed(e)}),a.results[0]}function i(e,a){let r=e;e.script&&(r=e.script);for(let e=0;e`"${e}"`).join(", "),consumed:a.consumed}}function A(e){let a=new Map;a.parameter=e.search(/parameter/),a.storage=e.search(/storage/),a.code=e.search(/code/);const r=Object.values(a).sort((e,a)=>Number(e)-Number(a));return a[Object.keys(a).find(e=>a[e]===r[0])+""]=e.substring(r[0],r[1]),a[Object.keys(a).find(e=>a[e]===r[1])+""]=e.substring(r[1],r[2]),a[Object.keys(a).find(e=>a[e]===r[2])+""]=e.substring(r[2]),[a.parameter,a.storage,a.code].map(e=>e.trim().split("\n").map(e=>e.replace(/\#[\s\S]+$/,"").trim()).filter(e=>e.length>0).join(" "))}function g(e){return e.replace(/\n/g," ").replace(/ +/g," ").replace(/\[{/g,"[ {").replace(/}\]/g,"} ]").replace(/},{/g,"}, {").replace(/\]}/g,"] }").replace(/":"/g,'": "').replace(/":\[/g,'": [').replace(/{"/g,'{ "').replace(/"}/g,'" }').replace(/","/g,'", "').replace(/\[\[/g,"[ [").replace(/\]\]/g,"] ]")}a.hexToMicheline=function e(a){if(a.length<2)throw new Error(`Malformed Micheline fragment '${a}'`);let r="",i=0,t=a.substring(i,i+2);switch(i+=2,t){case"00":{const e=s.TezosMessageUtils.findInt(a.substring(i),0,!0);r+=`{ "int": "${e.value}" }`,i+=e.length;break}case"01":{const e=u(a.substring(i));r+=`{ "string": "${e.code}" }`,i+=e.consumed;break}case"02":{const t=parseInt(a.substring(i,i+8),16);i+=8;let n=[],o=0;for(;o2&&(r+=`, "annots": [ ${e.code} ] }`),i+=e.consumed}else r+=" }",i+=8;break}case"0a":{const e=parseInt(a.substring(i,i+8),16);i+=8,r+=`{ "bytes": "${a.substring(i,i+2*e)}" }`,i+=2*e;break}default:throw new Error(`Unknown Micheline field type '${t}'`)}return{code:r,consumed:i}},a.translateMichelsonToMicheline=r,a.translateMichelsonToHex=function(e){return function(e){const a=JSON.parse(e);let r=[];return r.push(i(a,"code")),r.push(i(a,"storage")),r}(r(e)).map(e=>{var a=g(e);return console.log(`--- C ${a}`),a}).map(e=>c(e)).reduce((e,a)=>e+(("0000000"+(a.length/2).toString(16)).slice(-8)+a),"")},a.translateMichelineToHex=c,a.preProcessMichelsonScript=A,a.normalizeMichelineWhiteSpace=g}(a.TezosLanguageUtil||(a.TezosLanguageUtil={}))}).call(this,r(2).Buffer)},function(e,a,r){"use strict";var i=r(1),t=r(49),n=r(0).Buffer,o=new Array(16);function s(){t.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function l(e,a){return e<>>32-a}function c(e,a,r,i,t,n,o){return l(e+(a&r|~a&i)+t+n|0,o)+a|0}function u(e,a,r,i,t,n,o){return l(e+(a&i|r&~i)+t+n|0,o)+a|0}function d(e,a,r,i,t,n,o){return l(e+(a^r^i)+t+n|0,o)+a|0}function h(e,a,r,i,t,n,o){return l(e+(r^(a|~i))+t+n|0,o)+a|0}i(s,t),s.prototype._update=function(){for(var e=o,a=0;a<16;++a)e[a]=this._block.readInt32LE(4*a);var r=this._a,i=this._b,t=this._c,n=this._d;r=c(r,i,t,n,e[0],3614090360,7),n=c(n,r,i,t,e[1],3905402710,12),t=c(t,n,r,i,e[2],606105819,17),i=c(i,t,n,r,e[3],3250441966,22),r=c(r,i,t,n,e[4],4118548399,7),n=c(n,r,i,t,e[5],1200080426,12),t=c(t,n,r,i,e[6],2821735955,17),i=c(i,t,n,r,e[7],4249261313,22),r=c(r,i,t,n,e[8],1770035416,7),n=c(n,r,i,t,e[9],2336552879,12),t=c(t,n,r,i,e[10],4294925233,17),i=c(i,t,n,r,e[11],2304563134,22),r=c(r,i,t,n,e[12],1804603682,7),n=c(n,r,i,t,e[13],4254626195,12),t=c(t,n,r,i,e[14],2792965006,17),r=u(r,i=c(i,t,n,r,e[15],1236535329,22),t,n,e[1],4129170786,5),n=u(n,r,i,t,e[6],3225465664,9),t=u(t,n,r,i,e[11],643717713,14),i=u(i,t,n,r,e[0],3921069994,20),r=u(r,i,t,n,e[5],3593408605,5),n=u(n,r,i,t,e[10],38016083,9),t=u(t,n,r,i,e[15],3634488961,14),i=u(i,t,n,r,e[4],3889429448,20),r=u(r,i,t,n,e[9],568446438,5),n=u(n,r,i,t,e[14],3275163606,9),t=u(t,n,r,i,e[3],4107603335,14),i=u(i,t,n,r,e[8],1163531501,20),r=u(r,i,t,n,e[13],2850285829,5),n=u(n,r,i,t,e[2],4243563512,9),t=u(t,n,r,i,e[7],1735328473,14),r=d(r,i=u(i,t,n,r,e[12],2368359562,20),t,n,e[5],4294588738,4),n=d(n,r,i,t,e[8],2272392833,11),t=d(t,n,r,i,e[11],1839030562,16),i=d(i,t,n,r,e[14],4259657740,23),r=d(r,i,t,n,e[1],2763975236,4),n=d(n,r,i,t,e[4],1272893353,11),t=d(t,n,r,i,e[7],4139469664,16),i=d(i,t,n,r,e[10],3200236656,23),r=d(r,i,t,n,e[13],681279174,4),n=d(n,r,i,t,e[0],3936430074,11),t=d(t,n,r,i,e[3],3572445317,16),i=d(i,t,n,r,e[6],76029189,23),r=d(r,i,t,n,e[9],3654602809,4),n=d(n,r,i,t,e[12],3873151461,11),t=d(t,n,r,i,e[15],530742520,16),r=h(r,i=d(i,t,n,r,e[2],3299628645,23),t,n,e[0],4096336452,6),n=h(n,r,i,t,e[7],1126891415,10),t=h(t,n,r,i,e[14],2878612391,15),i=h(i,t,n,r,e[5],4237533241,21),r=h(r,i,t,n,e[12],1700485571,6),n=h(n,r,i,t,e[3],2399980690,10),t=h(t,n,r,i,e[10],4293915773,15),i=h(i,t,n,r,e[1],2240044497,21),r=h(r,i,t,n,e[8],1873313359,6),n=h(n,r,i,t,e[15],4264355552,10),t=h(t,n,r,i,e[6],2734768916,15),i=h(i,t,n,r,e[13],1309151649,21),r=h(r,i,t,n,e[4],4149444226,6),n=h(n,r,i,t,e[11],3174756917,10),t=h(t,n,r,i,e[2],718787259,15),i=h(i,t,n,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+t|0,this._d=this._d+n|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=n.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=s},function(e,a,r){e.exports=t;var i=r(30).EventEmitter;function t(){i.call(this)}r(1)(t,i),t.Readable=r(31),t.Writable=r(106),t.Duplex=r(107),t.Transform=r(108),t.PassThrough=r(109),t.Stream=t,t.prototype.pipe=function(e,a){var r=this;function t(a){e.writable&&!1===e.write(a)&&r.pause&&r.pause()}function n(){r.readable&&r.resume&&r.resume()}r.on("data",t),e.on("drain",n),e._isStdio||a&&!1===a.end||(r.on("end",s),r.on("close",l));var o=!1;function s(){o||(o=!0,e.end())}function l(){o||(o=!0,"function"==typeof e.destroy&&e.destroy())}function c(e){if(u(),0===i.listenerCount(this,"error"))throw e}function u(){r.removeListener("data",t),e.removeListener("drain",n),r.removeListener("end",s),r.removeListener("close",l),r.removeListener("error",c),e.removeListener("error",c),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("error",c),e.on("error",c),r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e}},function(e,a,r){"use strict";var i,t="object"==typeof Reflect?Reflect:null,n=t&&"function"==typeof t.apply?t.apply:function(e,a,r){return Function.prototype.apply.call(e,a,r)};i=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var l=10;function c(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function u(e,a,r,i){var t,n,o,s;if("function"!=typeof r)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r);if(void 0===(n=e._events)?(n=e._events=Object.create(null),e._eventsCount=0):(void 0!==n.newListener&&(e.emit("newListener",a,r.listener?r.listener:r),n=e._events),o=n[a]),void 0===o)o=n[a]=r,++e._eventsCount;else if("function"==typeof o?o=n[a]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),(t=c(e))>0&&o.length>t&&!o.warned){o.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(a)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=a,l.count=o.length,s=l,console&&console.warn&&console.warn(s)}return e}function d(e,a,r){var i={fired:!1,wrapFn:void 0,target:e,type:a,listener:r},t=function(){for(var e=[],a=0;a0&&(o=a[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=t[e];if(void 0===l)return!1;if("function"==typeof l)n(l,this,a);else{var c=l.length,u=g(l,c);for(r=0;r=0;n--)if(r[n]===a||r[n].listener===a){o=r[n].listener,t=n;break}if(t<0)return this;0===t?r.shift():function(e,a){for(;a+1=0;i--)this.removeListener(e,a[i]);return this},s.prototype.listeners=function(e){return h(this,e,!0)},s.prototype.rawListeners=function(e){return h(this,e,!1)},s.listenerCount=function(e,a){return"function"==typeof e.listenerCount?e.listenerCount(a):A.call(e,a)},s.prototype.listenerCount=A,s.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},function(e,a,r){(a=e.exports=r(50)).Stream=a,a.Readable=a,a.Writable=r(32),a.Duplex=r(11),a.Transform=r(53),a.PassThrough=r(105)},function(e,a,r){"use strict";(function(a,i,t){var n=r(22);function o(e){var a=this;this.next=null,this.entry=null,this.finish=function(){!function(e,a,r){var i=e.entry;e.entry=null;for(;i;){var t=i.callback;a.pendingcb--,t(r),i=i.next}a.corkedRequestsFree?a.corkedRequestsFree.next=e:a.corkedRequestsFree=e}(a,e)}}e.exports=y;var s,l=!a.browser&&["v0.10","v0.9."].indexOf(a.version.slice(0,5))>-1?i:n.nextTick;y.WritableState=f;var c=r(16);c.inherits=r(1);var u={deprecate:r(104)},d=r(51),h=r(0).Buffer,A=t.Uint8Array||function(){};var g,p=r(52);function m(){}function f(e,a){s=s||r(11),e=e||{};var i=a instanceof s;this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var t=e.highWaterMark,c=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=t||0===t?t:i&&(c||0===c)?c:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var d=!1===e.decodeStrings;this.decodeStrings=!d,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,a){var r=e._writableState,i=r.sync,t=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),a)!function(e,a,r,i,t){--a.pendingcb,r?(n.nextTick(t,i),n.nextTick(_,e,a),e._writableState.errorEmitted=!0,e.emit("error",i)):(t(i),e._writableState.errorEmitted=!0,e.emit("error",i),_(e,a))}(e,r,i,a,t);else{var o=v(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),i?l(k,e,r,o,t):k(e,r,o,t)}}(a,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function y(e){if(s=s||r(11),!(g.call(y,this)||this instanceof s))return new y(e);this._writableState=new f(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),d.call(this)}function b(e,a,r,i,t,n,o){a.writelen=i,a.writecb=o,a.writing=!0,a.sync=!0,r?e._writev(t,a.onwrite):e._write(t,n,a.onwrite),a.sync=!1}function k(e,a,r,i){r||function(e,a){0===a.length&&a.needDrain&&(a.needDrain=!1,e.emit("drain"))}(e,a),a.pendingcb--,i(),_(e,a)}function w(e,a){a.bufferProcessing=!0;var r=a.bufferedRequest;if(e._writev&&r&&r.next){var i=a.bufferedRequestCount,t=new Array(i),n=a.corkedRequestsFree;n.entry=r;for(var s=0,l=!0;r;)t[s]=r,r.isBuf||(l=!1),r=r.next,s+=1;t.allBuffers=l,b(e,a,!0,a.length,t,"",n.finish),a.pendingcb++,a.lastBufferedRequest=null,n.next?(a.corkedRequestsFree=n.next,n.next=null):a.corkedRequestsFree=new o(a),a.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,u=r.encoding,d=r.callback;if(b(e,a,!1,a.objectMode?1:c.length,c,u,d),r=r.next,a.bufferedRequestCount--,a.writing)break}null===r&&(a.lastBufferedRequest=null)}a.bufferedRequest=r,a.bufferProcessing=!1}function v(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function I(e,a){e._final(function(r){a.pendingcb--,r&&e.emit("error",r),a.prefinished=!0,e.emit("prefinish"),_(e,a)})}function _(e,a){var r=v(a);return r&&(!function(e,a){a.prefinished||a.finalCalled||("function"==typeof e._final?(a.pendingcb++,a.finalCalled=!0,n.nextTick(I,e,a)):(a.prefinished=!0,e.emit("prefinish")))}(e,a),0===a.pendingcb&&(a.finished=!0,e.emit("finish"))),r}c.inherits(y,d),f.prototype.getBuffer=function(){for(var e=this.bufferedRequest,a=[];e;)a.push(e),e=e.next;return a},function(){try{Object.defineProperty(f.prototype,"buffer",{get:u.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(g=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!g.call(this,e)||this===y&&(e&&e._writableState instanceof f)}})):g=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},y.prototype.write=function(e,a,r){var i,t=this._writableState,o=!1,s=!t.objectMode&&(i=e,h.isBuffer(i)||i instanceof A);return s&&!h.isBuffer(e)&&(e=function(e){return h.from(e)}(e)),"function"==typeof a&&(r=a,a=null),s?a="buffer":a||(a=t.defaultEncoding),"function"!=typeof r&&(r=m),t.ended?function(e,a){var r=new Error("write after end");e.emit("error",r),n.nextTick(a,r)}(this,r):(s||function(e,a,r,i){var t=!0,o=!1;return null===r?o=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||a.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(e.emit("error",o),n.nextTick(i,o),t=!1),t}(this,t,e,r))&&(t.pendingcb++,o=function(e,a,r,i,t,n){if(!r){var o=function(e,a,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof a||(a=h.from(a,r));return a}(a,i,t);i!==o&&(r=!0,t="buffer",i=o)}var s=a.objectMode?1:i.length;a.length+=s;var l=a.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(y.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),y.prototype._write=function(e,a,r){r(new Error("_write() is not implemented"))},y.prototype._writev=null,y.prototype.end=function(e,a,r){var i=this._writableState;"function"==typeof e?(r=e,e=null,a=null):"function"==typeof a&&(r=a,a=null),null!=e&&this.write(e,a),i.corked&&(i.corked=1,this.uncork()),i.ending||i.finished||function(e,a,r){a.ending=!0,_(e,a),r&&(a.finished?n.nextTick(r):e.once("finish",r));a.ended=!0,e.writable=!1}(this,i,r)},Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=p.destroy,y.prototype._undestroy=p.undestroy,y.prototype._destroy=function(e,a){this.end(),a(e)}}).call(this,r(7),r(102).setImmediate,r(6))},function(e,a,r){"use strict";var i=r(0).Buffer,t=i.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function n(e){var a;switch(this.encoding=function(e){var a=function(e){if(!e)return"utf8";for(var a;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(a)return;e=(""+e).toLowerCase(),a=!0}}(e);if("string"!=typeof a&&(i.isEncoding===t||!t(e)))throw new Error("Unknown encoding: "+e);return a||e}(e),this.encoding){case"utf16le":this.text=l,this.end=c,a=4;break;case"utf8":this.fillLast=s,a=4;break;case"base64":this.text=u,this.end=d,a=3;break;default:return this.write=h,void(this.end=A)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(a)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var a=this.lastTotal-this.lastNeed,r=function(e,a,r){if(128!=(192&a[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&a.length>1){if(128!=(192&a[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&a.length>2&&128!=(192&a[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,a,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,a,0,e.length),void(this.lastNeed-=e.length))}function l(e,a){if((e.length-a)%2==0){var r=e.toString("utf16le",a);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",a,e.length-1)}function c(e){var a=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return a+this.lastChar.toString("utf16le",0,r)}return a}function u(e,a){var r=(e.length-a)%3;return 0===r?e.toString("base64",a):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",a,e.length-r))}function d(e){var a=e&&e.length?this.write(e):"";return this.lastNeed?a+this.lastChar.toString("base64",0,3-this.lastNeed):a}function h(e){return e.toString(this.encoding)}function A(e){return e&&e.length?this.write(e):""}a.StringDecoder=n,n.prototype.write=function(e){if(0===e.length)return"";var a,r;if(this.lastNeed){if(void 0===(a=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return t>0&&(e.lastNeed=t-1),t;if(--i=0)return t>0&&(e.lastNeed=t-2),t;if(--i=0)return t>0&&(2===t?t=0:e.lastNeed=t-3),t;return 0}(this,e,a);if(!this.lastNeed)return e.toString("utf8",a);this.lastTotal=r;var i=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,i),e.toString("utf8",a,i)},n.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,a,r){"use strict";var i=r(2).Buffer,t=r(1),n=r(49),o=new Array(16),s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],l=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],c=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],u=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],d=[0,1518500249,1859775393,2400959708,2840853838],h=[1352829926,1548603684,1836072691,2053994217,0];function A(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function g(e,a){return e<>>32-a}function p(e,a,r,i,t,n,o,s){return g(e+(a^r^i)+n+o|0,s)+t|0}function m(e,a,r,i,t,n,o,s){return g(e+(a&r|~a&i)+n+o|0,s)+t|0}function f(e,a,r,i,t,n,o,s){return g(e+((a|~r)^i)+n+o|0,s)+t|0}function y(e,a,r,i,t,n,o,s){return g(e+(a&i|r&~i)+n+o|0,s)+t|0}function b(e,a,r,i,t,n,o,s){return g(e+(a^(r|~i))+n+o|0,s)+t|0}t(A,n),A.prototype._update=function(){for(var e=o,a=0;a<16;++a)e[a]=this._block.readInt32LE(4*a);for(var r=0|this._a,i=0|this._b,t=0|this._c,n=0|this._d,A=0|this._e,k=0|this._a,w=0|this._b,v=0|this._c,I=0|this._d,_=0|this._e,B=0;B<80;B+=1){var C,E;B<16?(C=p(r,i,t,n,A,e[s[B]],d[0],c[B]),E=b(k,w,v,I,_,e[l[B]],h[0],u[B])):B<32?(C=m(r,i,t,n,A,e[s[B]],d[1],c[B]),E=y(k,w,v,I,_,e[l[B]],h[1],u[B])):B<48?(C=f(r,i,t,n,A,e[s[B]],d[2],c[B]),E=f(k,w,v,I,_,e[l[B]],h[2],u[B])):B<64?(C=y(r,i,t,n,A,e[s[B]],d[3],c[B]),E=m(k,w,v,I,_,e[l[B]],h[3],u[B])):(C=b(r,i,t,n,A,e[s[B]],d[4],c[B]),E=p(k,w,v,I,_,e[l[B]],h[4],u[B])),r=A,A=n,n=g(t,10),t=i,i=C,k=_,_=I,I=g(v,10),v=w,w=E}var Q=this._b+t+I|0;this._b=this._c+n+_|0,this._c=this._d+A+k|0,this._d=this._e+r+w|0,this._e=this._a+i+v|0,this._a=Q},A.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=i.alloc?i.alloc(20):new i(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=A},function(e,a,r){(a=e.exports=function(e){e=e.toLowerCase();var r=a[e];if(!r)throw new Error(e+" is not supported (we accept pull requests)");return new r}).sha=r(110),a.sha1=r(111),a.sha224=r(112),a.sha256=r(54),a.sha384=r(113),a.sha512=r(55)},function(e,a,r){var i,t,n,o;i=r(57),t=function(e){var a,r,i,t,n;for(i in a=0,e)n=e[i],a+=function(){var e,a,r;for(r=[],a=0,e=n.length;ae)return 0;if(0===a)return 1;for(t=1,r=i=1,n=a;1<=n?i<=n:i>=n;r=1<=n?++i:--i)t*=e,t/=r,e-=1;return t},log10:function(e){return Math.log(e)/Math.log(10)},log2:function(e){return Math.log(e)/Math.log(2)},factorial:function(e){var a,r,i,t;if(e<2)return 1;for(a=1,r=i=2,t=e;2<=t?i<=t:i>=t;r=2<=t?++i:--i)a*=r;return a},most_guessable_match_sequence:function(e,a,r){var i,t,n,o,s,l,c,u,d,h,A,g,p,m,f,y,b,k,w,v,I,_,B;for(null==r&&(r=!1),A=e.length,h=function(){var e,a,r;for(r=[],e=0,a=A;0<=a?ea;0<=a?++e:--e)r.push([]);return r}(),g=0,s=a.length;ge;0<=e?++r:--r)a.push({});return a}(),pi:function(){var e,a,r;for(a=[],r=0,e=A;0<=e?re;0<=e?++r:--r)a.push({});return a}(),g:function(){var e,a,r;for(a=[],r=0,e=A;0<=e?re;0<=e?++r:--r)a.push({});return a}()},B=this,I=function(a,i){var t,n,o,s,l,c;for(n in s=a.j,l=B.estimate_guesses(a,e),i>1&&(l*=p.pi[a.i-1][i-1]),o=B.factorial(i)*l,r||(o+=Math.pow(1e4,i-1)),c=p.g[s])if(t=c[n],!(n>i)&&t<=o)return;return p.g[s][i]=o,p.m[s][i]=a,p.pi[s][i]=l},i=function(e){var a,r,i,t,n,o;for(u=d(0,e),I(u,1),n=[],a=o=1,t=e;1<=t?o<=t:o>=t;a=1<=t?++o:--o)u=d(a,e),n.push(function(){var e,t;for(r in t=[],e=p.m[a-1])i=e[r],r=parseInt(r),"bruteforce"!==i.pattern&&t.push(I(u,r+1));return t}());return n},d=function(a,r){return{pattern:"bruteforce",token:e.slice(a,+r+1||9e9),i:a,j:r}},v=function(e){var a,r,i,t,n,o,s;for(r in o=[],t=e-1,n=void 0,i=1/0,s=p.g[t])(a=s[r])=0;)u=p.m[t][n],o.unshift(u),t=u.i-1,n--;return o},n=w=0,b=A;0<=b?wb;n=0<=b?++w:--w){for(_=0,c=(k=h[n]).length;_0)for(o in p.m[u.i-1])o=parseInt(o),I(u,o+1);else I(u,1);i(n)}return m=(f=v(A)).length,t=0===e.length?1:p.g[A-1][m],{password:e,guesses:t,guesses_log10:this.log10(t),sequence:f}},estimate_guesses:function(e,a){var r,i;return null!=e.guesses?e.guesses:(i=1,e.token.length=d;o=2<=d?++l:--l)for(s=c=1,h=Math.min(m,o-1);1<=h?c<=h:c>=h;s=1<=h?++c:--c)n+=this.nCk(o-1,s-1)*g*Math.pow(t,s);if(e.shifted_count)if(r=e.shifted_count,i=e.token.length-e.shifted_count,0===r||0===i)n*=2;else{for(p=0,o=f=1,A=Math.min(r,i);1<=A?f<=A:f>=A;o=1<=A?++f:--f)p+=this.nCk(r+i,o);n*=p}return n},dictionary_guesses:function(e){var a;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),a=e.reversed?2:1,e.base_guesses*e.uppercase_variations*e.l33t_variations*a},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var a,r,i,t,n,o,s,l,c,u,d,h;if((h=e.token).match(this.ALL_LOWER)||h.toLowerCase()===h)return 1;for(o=0,n=(l=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER]).length;o=c;t=1<=c?++s:--s)d+=this.nCk(r+a,t);return d},l33t_variations:function(e){var a,r,i,t,n,o,s,l,c,u,d,h;if(!e.l33t)return 1;for(u in h=1,l=e.sub)if(d=l[u],t=e.token.toLowerCase().split(""),a=function(){var e,a,r;for(r=[],a=0,e=t.length;a=c;n=1<=c?++o:--o)s+=this.nCk(r+a,n);h*=s}return h}},e.exports=o},function(e,a,r){a.pbkdf2=r(132),a.pbkdf2Sync=r(66)},function(e,a,r){"use strict";a.utils=r(135),a.Cipher=r(136),a.DES=r(137),a.CBC=r(138),a.EDE=r(139)},function(e,a,r){var i=r(140),t=r(148),n=r(69);a.createCipher=a.Cipher=i.createCipher,a.createCipheriv=a.Cipheriv=i.createCipheriv,a.createDecipher=a.Decipher=t.createDecipher,a.createDecipheriv=a.Decipheriv=t.createDecipheriv,a.listCiphers=a.getCiphers=function(){return Object.keys(n)}},function(e,a,r){var i={ECB:r(141),CBC:r(142),CFB:r(143),CFB8:r(144),CFB1:r(145),OFB:r(146),CTR:r(67),GCM:r(67)},t=r(69);for(var n in t)t[n].module=i[t[n].mode];e.exports=t},function(e,a,r){(function(a){var i=r(3),t=r(12);function n(e,r){var t=function(e){var a=o(e);return{blinder:a.toRed(i.mont(e.modulus)).redPow(new i(e.publicExponent)).fromRed(),unblinder:a.invm(e.modulus)}}(r),n=r.modulus.byteLength(),s=(i.mont(r.modulus),new i(e).mul(t.blinder).umod(r.modulus)),l=s.toRed(i.mont(r.prime1)),c=s.toRed(i.mont(r.prime2)),u=r.coefficient,d=r.prime1,h=r.prime2,A=l.redPow(r.exponent1),g=c.redPow(r.exponent2);A=A.fromRed(),g=g.fromRed();var p=A.isub(g).imul(u).umod(d);return p.imul(h),g.iadd(p),new a(g.imul(t.unblinder).umod(r.modulus).toArray(!1,n))}function o(e){for(var a=e.modulus.byteLength(),r=new i(t(a));r.cmp(e.modulus)>=0||!r.umod(e.prime1)||!r.umod(e.prime2);)r=new i(t(a));return r}e.exports=n,n.getr=o}).call(this,r(2).Buffer)},function(e,a,r){var i=a;i.utils=r(8),i.common=r(19),i.sha=r(164),i.ripemd=r(168),i.hmac=r(169),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},function(e,a,r){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),function(e){e[e.Mnemonic=0]="Mnemonic",e[e.Fundraiser=1]="Fundraiser",e[e.Hardware=2]="Hardware"}(a.StoreType||(a.StoreType={}))},function(e,a,r){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),function(e){e.ASC="asc",e.DESC="desc"}(a.ConseilSortDirection||(a.ConseilSortDirection={})),function(e){e.BETWEEN="between",e.EQ="eq",e.IN="in",e.LIKE="like",e.LT="lt",e.BEFORE="before",e.GT="gt",e.AFTER="after",e.STARTSWITH="startsWith",e.ENDSWITH="endsWith",e.ISNULL="isnull"}(a.ConseilOperator||(a.ConseilOperator={})),function(e){e.avg="avg",e.count="count",e.max="max",e.min="min",e.sum="sum"}(a.ConseilFunction||(a.ConseilFunction={})),function(e){e.csv="csv",e.json="json"}(a.ConseilOutput||(a.ConseilOutput={}))},function(e,a){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,a,r){var i,t,n;t=[],void 0===(n="function"==typeof(i=function(){"use strict";var e=Object.prototype.hasOwnProperty,a=Object.prototype.toString,r="boolean"==typeof(new RegExp).sticky;function i(e){return e&&"[object RegExp]"===a.call(e)}function t(e){return e&&"object"==typeof e&&!i(e)&&!Array.isArray(e)}function n(e){return"("+e+")"}function o(e){if(!e.length)return"(?!)";var a=e.map(function(e){return"(?:"+e+")"}).join("|");return"(?:"+a+")"}function s(e){if("string"==typeof e)return"(?:"+e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+")";if(i(e)){if(e.ignoreCase)throw new Error("RegExp /i flag not allowed");if(e.global)throw new Error("RegExp /g flag is implied");if(e.sticky)throw new Error("RegExp /y flag is implied");if(e.multiline)throw new Error("RegExp /m flag is implied");if(e.unicode)throw new Error("RegExp /u flag is not allowed");return e.source}throw new Error("Not a pattern: "+e)}function l(a,r){if(t(r)||(r={match:r}),r.include)throw new Error("Matching rules cannot also include states");var n={defaultType:a,lineBreaks:!!r.error||!!r.fallback,pop:!1,next:null,push:null,error:!1,fallback:!1,value:null,type:null,shouldThrow:!1};for(var o in r)e.call(r,o)&&(n[o]=r[o]);if("string"==typeof n.type&&a!==n.type)throw new Error("Type transform cannot be a string (type '"+n.type+"' for token '"+a+"')");var s=n.match;return n.match=Array.isArray(s)?s:s?[s]:[],n.match.sort(function(e,a){return i(e)&&i(a)?0:i(a)?-1:i(e)?1:a.length-e.length}),n}function c(e){return Array.isArray(e)?function(e){for(var a=[],r=0;r0)throw new Error("RegExp has capture groups: "+f+"\nUse (?: … ) instead");if(!A.lineBreaks&&f.test("\n"))throw new Error("Rule should declare lineBreaks: "+f);d.push(n(m))}}var b=i&&i.fallback,k=r&&!b?"ym":"gm",w=r||b?"":"|",v=new RegExp(o(d)+w,k);return{regexp:v,groups:c,fast:t,error:i||u}}function h(e,a,r){var i=e&&(e.push||e.next);if(i&&!r[i])throw new Error("Missing state '"+i+"' (in token '"+e.defaultType+"' of state '"+a+"')");if(e&&e.pop&&1!=+e.pop)throw new Error("pop must be 1 (in token '"+e.defaultType+"' of state '"+a+"')")}var A=function(e,a){this.startState=a,this.states=e,this.buffer="",this.stack=[],this.reset()};A.prototype.reset=function(e,a){return this.buffer=e||"",this.index=0,this.line=a?a.line:1,this.col=a?a.col:1,this.queuedToken=a?a.queuedToken:null,this.queuedThrow=a?a.queuedThrow:null,this.setState(a?a.state:this.startState),this.stack=a&&a.stack?a.stack.slice():[],this},A.prototype.save=function(){return{line:this.line,col:this.col,state:this.state,stack:this.stack.slice(),queuedToken:this.queuedToken,queuedThrow:this.queuedThrow}},A.prototype.setState=function(e){if(e&&this.state!==e){this.state=e;var a=this.states[e];this.groups=a.groups,this.error=a.error,this.re=a.regexp,this.fast=a.fast}},A.prototype.popState=function(){this.setState(this.stack.pop())},A.prototype.pushState=function(e){this.stack.push(this.state),this.setState(e)};var g=r?function(e,a){return e.exec(a)}:function(e,a){var r=e.exec(a);return 0===r[0].length?null:r};function p(){return this.value}if(A.prototype._getGroup=function(e){for(var a=this.groups.length,r=0;r0?Math.floor(e):Math.ceil(e)}function y(e,r){var i,t,n=e.length,o=r.length,s=new Array(n),l=0,c=a;for(t=0;t=c?1:0,s[t]=i-l*c;for(;t0&&s.push(l),s}function b(e,a){return e.length>=a.length?y(e,a):y(a,e)}function k(e,r){var i,t,n=e.length,o=new Array(n),s=a;for(t=0;t0;)o[t++]=r%s,r=Math.floor(r/s);return o}function w(e,r){var i,t,n=e.length,o=r.length,s=new Array(n),l=0,c=a;for(i=0;i0;)o[t++]=l%s,l=Math.floor(l/s);return o}function B(e,a){for(var r=[];a-- >0;)r.push(0);return r.concat(e)}function C(e,r,i){return new c(e=0;--i)n=(o=n*c+e[i])-(t=f(o/r))*r,l[i]=0|t;return[l,0|n]}function x(e,r){var i,t=O(r);if(s)return[new d(e.value/t.value),new d(e.value%t.value)];var n,o=e.value,h=t.value;if(0===h)throw new Error("Cannot divide by zero");if(e.isSmall)return t.isSmall?[new u(f(o/h)),new u(o%h)]:[l[0],e];if(t.isSmall){if(1===h)return[e,l[0]];if(-1==h)return[e.negate(),l[0]];var y=Math.abs(h);if(y=0;t--){for(i=h-1,y[t+d]!==p&&(i=Math.floor((y[t+d]*h+y[t+d-1])/p)),n=0,o=0,l=b.length,s=0;sc&&(n=(n+1)*h),i=Math.ceil(n/o);do{if(j(s=_(r,i),d)<=0)break;i--}while(i);u.push(i),d=w(d,s)}return u.reverse(),[g(u),g(d)]}(o,h))[0];var v=e.sign!==t.sign,I=i[1],B=e.sign;return"number"==typeof n?(v&&(n=-n),n=new u(n)):n=new c(n,v),"number"==typeof I?(B&&(I=-I),I=new u(I)):I=new c(I,B),[n,I]}function j(e,a){if(e.length!==a.length)return e.length>a.length?1:-1;for(var r=e.length-1;r>=0;r--)if(e[r]!==a[r])return e[r]>a[r]?1:-1;return 0}function z(e){var a=e.abs();return!a.isUnit()&&(!!(a.equals(2)||a.equals(3)||a.equals(5))||!(a.isEven()||a.isDivisibleBy(3)||a.isDivisibleBy(5))&&(!!a.lesser(49)||void 0))}function D(e,a){for(var r,t,n,o=e.prev(),s=o,l=0;s.isEven();)s=s.divide(2),l++;e:for(t=0;t=0?i=w(e,a):(i=w(a,e),r=!r),"number"==typeof(i=g(i))?(r&&(i=-i),new u(i)):new c(i,r)}(r,i,this.sign)},c.prototype.minus=c.prototype.subtract,u.prototype.subtract=function(e){var a=O(e),r=this.value;if(r<0!==a.sign)return this.add(a.negate());var i=a.value;return a.isSmall?new u(r-i):v(i,Math.abs(r),r>=0)},u.prototype.minus=u.prototype.subtract,d.prototype.subtract=function(e){return new d(this.value-O(e).value)},d.prototype.minus=d.prototype.subtract,c.prototype.negate=function(){return new c(this.value,!this.sign)},u.prototype.negate=function(){var e=this.sign,a=new u(-this.value);return a.sign=!e,a},d.prototype.negate=function(){return new d(-this.value)},c.prototype.abs=function(){return new c(this.value,!1)},u.prototype.abs=function(){return new u(Math.abs(this.value))},d.prototype.abs=function(){return new d(this.value>=0?this.value:-this.value)},c.prototype.multiply=function(e){var r,i,t,n=O(e),o=this.value,s=n.value,u=this.sign!==n.sign;if(n.isSmall){if(0===s)return l[0];if(1===s)return this;if(-1===s)return this.negate();if((r=Math.abs(s))0?function e(a,r){var i=Math.max(a.length,r.length);if(i<=30)return I(a,r);i=Math.ceil(i/2);var t=a.slice(i),n=a.slice(0,i),o=r.slice(i),s=r.slice(0,i),l=e(n,s),c=e(t,o),u=e(b(n,t),b(s,o)),d=b(b(l,B(w(w(u,l),c),i)),B(c,2*i));return p(d),d}(o,s):I(o,s),u)},c.prototype.times=c.prototype.multiply,u.prototype._multiplyBySmall=function(e){return h(e.value*this.value)?new u(e.value*this.value):C(Math.abs(e.value),A(Math.abs(this.value)),this.sign!==e.sign)},c.prototype._multiplyBySmall=function(e){return 0===e.value?l[0]:1===e.value?this:-1===e.value?this.negate():C(Math.abs(e.value),this.value,this.sign!==e.sign)},u.prototype.multiply=function(e){return O(e)._multiplyBySmall(this)},u.prototype.times=u.prototype.multiply,d.prototype.multiply=function(e){return new d(this.value*O(e).value)},d.prototype.times=d.prototype.multiply,c.prototype.square=function(){return new c(E(this.value),!1)},u.prototype.square=function(){var e=this.value*this.value;return h(e)?new u(e):new c(E(A(Math.abs(this.value))),!1)},d.prototype.square=function(e){return new d(this.value*this.value)},c.prototype.divmod=function(e){var a=x(this,e);return{quotient:a[0],remainder:a[1]}},d.prototype.divmod=u.prototype.divmod=c.prototype.divmod,c.prototype.divide=function(e){return x(this,e)[0]},d.prototype.over=d.prototype.divide=function(e){return new d(this.value/O(e).value)},u.prototype.over=u.prototype.divide=c.prototype.over=c.prototype.divide,c.prototype.mod=function(e){return x(this,e)[1]},d.prototype.mod=d.prototype.remainder=function(e){return new d(this.value%O(e).value)},u.prototype.remainder=u.prototype.mod=c.prototype.remainder=c.prototype.mod,c.prototype.pow=function(e){var a,r,i,t=O(e),n=this.value,o=t.value;if(0===o)return l[1];if(0===n)return l[0];if(1===n)return l[1];if(-1===n)return t.isEven()?l[1]:l[-1];if(t.sign)return l[0];if(!t.isSmall)throw new Error("The exponent "+t.toString()+" is too large.");if(this.isSmall&&h(a=Math.pow(n,o)))return new u(f(a));for(r=this,i=l[1];!0&o&&(i=i.times(r),--o),0!==o;)o/=2,r=r.square();return i},u.prototype.pow=c.prototype.pow,d.prototype.pow=function(e){var a=O(e),r=this.value,i=a.value,t=BigInt(0),n=BigInt(1),o=BigInt(2);if(i===t)return l[1];if(r===t)return l[0];if(r===n)return l[1];if(r===BigInt(-1))return a.isEven()?l[1]:l[-1];if(a.isNegative())return new d(t);for(var s=this,c=l[1];(i&n)===n&&(c=c.times(s),--i),i!==t;)i/=o,s=s.square();return c},c.prototype.modPow=function(e,a){if(e=O(e),(a=O(a)).isZero())throw new Error("Cannot take modPow with modulus 0");for(var r=l[1],i=this.mod(a);e.isPositive();){if(i.isZero())return l[0];e.isOdd()&&(r=r.multiply(i).mod(a)),e=e.divide(2),i=i.square().mod(a)}return r},d.prototype.modPow=u.prototype.modPow=c.prototype.modPow,c.prototype.compareAbs=function(e){var a=O(e),r=this.value,i=a.value;return a.isSmall?1:j(r,i)},u.prototype.compareAbs=function(e){var a=O(e),r=Math.abs(this.value),i=a.value;return a.isSmall?r===(i=Math.abs(i))?0:r>i?1:-1:-1},d.prototype.compareAbs=function(e){var a=this.value,r=O(e).value;return(a=a>=0?a:-a)===(r=r>=0?r:-r)?0:a>r?1:-1},c.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var a=O(e),r=this.value,i=a.value;return this.sign!==a.sign?a.sign?1:-1:a.isSmall?this.sign?-1:1:j(r,i)*(this.sign?-1:1)},c.prototype.compareTo=c.prototype.compare,u.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var a=O(e),r=this.value,i=a.value;return a.isSmall?r==i?0:r>i?1:-1:r<0!==a.sign?r<0?-1:1:r<0?1:-1},u.prototype.compareTo=u.prototype.compare,d.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var a=this.value,r=O(e).value;return a===r?0:a>r?1:-1},d.prototype.compareTo=d.prototype.compare,c.prototype.equals=function(e){return 0===this.compare(e)},d.prototype.eq=d.prototype.equals=u.prototype.eq=u.prototype.equals=c.prototype.eq=c.prototype.equals,c.prototype.notEquals=function(e){return 0!==this.compare(e)},d.prototype.neq=d.prototype.notEquals=u.prototype.neq=u.prototype.notEquals=c.prototype.neq=c.prototype.notEquals,c.prototype.greater=function(e){return this.compare(e)>0},d.prototype.gt=d.prototype.greater=u.prototype.gt=u.prototype.greater=c.prototype.gt=c.prototype.greater,c.prototype.lesser=function(e){return this.compare(e)<0},d.prototype.lt=d.prototype.lesser=u.prototype.lt=u.prototype.lesser=c.prototype.lt=c.prototype.lesser,c.prototype.greaterOrEquals=function(e){return this.compare(e)>=0},d.prototype.geq=d.prototype.greaterOrEquals=u.prototype.geq=u.prototype.greaterOrEquals=c.prototype.geq=c.prototype.greaterOrEquals,c.prototype.lesserOrEquals=function(e){return this.compare(e)<=0},d.prototype.leq=d.prototype.lesserOrEquals=u.prototype.leq=u.prototype.lesserOrEquals=c.prototype.leq=c.prototype.lesserOrEquals,c.prototype.isEven=function(){return 0==(1&this.value[0])},u.prototype.isEven=function(){return 0==(1&this.value)},d.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)},c.prototype.isOdd=function(){return 1==(1&this.value[0])},u.prototype.isOdd=function(){return 1==(1&this.value)},d.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)},c.prototype.isPositive=function(){return!this.sign},u.prototype.isPositive=function(){return this.value>0},d.prototype.isPositive=u.prototype.isPositive,c.prototype.isNegative=function(){return this.sign},u.prototype.isNegative=function(){return this.value<0},d.prototype.isNegative=u.prototype.isNegative,c.prototype.isUnit=function(){return!1},u.prototype.isUnit=function(){return 1===Math.abs(this.value)},d.prototype.isUnit=function(){return this.abs().value===BigInt(1)},c.prototype.isZero=function(){return!1},u.prototype.isZero=function(){return 0===this.value},d.prototype.isZero=function(){return this.value===BigInt(0)},c.prototype.isDivisibleBy=function(e){var a=O(e);return!a.isZero()&&(!!a.isUnit()||(0===a.compareAbs(2)?this.isEven():this.mod(a).isZero()))},d.prototype.isDivisibleBy=u.prototype.isDivisibleBy=c.prototype.isDivisibleBy,c.prototype.isPrime=function(e){var a=z(this);if(void 0!==a)return a;var r=this.abs(),t=r.bitLength();if(t<=64)return D(r,[2,3,5,7,11,13,17,19,23,29,31,37]);for(var n=Math.log(2)*t.toJSNumber(),o=Math.ceil(!0===e?2*Math.pow(n,2):n),s=[],l=0;l-t?new u(e-1):new c(n,!0)},d.prototype.prev=function(){return new d(this.value-BigInt(1))};for(var S=[1];2*S[S.length-1]<=a;)S.push(2*S[S.length-1]);var M=S.length,q=S[M-1];function F(e){return Math.abs(e)<=a}function U(e,a,r){a=O(a);for(var t=e.isNegative(),n=a.isNegative(),o=t?e.not():e,s=n?a.not():a,l=0,c=0,u=null,d=null,h=[];!o.isZero()||!s.isZero();)l=(u=x(o,q))[1].toJSNumber(),t&&(l=q-1-l),c=(d=x(s,q))[1].toJSNumber(),n&&(c=q-1-c),o=u[0],s=d[0],h.push(r(l,c));for(var A=0!==r(t?1:0,n?1:0)?i(-1):i(0),g=h.length-1;g>=0;g-=1)A=A.multiply(q).add(i(h[g]));return A}c.prototype.shiftLeft=function(e){var a=O(e).toJSNumber();if(!F(a))throw new Error(String(a)+" is too large for shifting.");if(a<0)return this.shiftRight(-a);var r=this;if(r.isZero())return r;for(;a>=M;)r=r.multiply(q),a-=M-1;return r.multiply(S[a])},d.prototype.shiftLeft=u.prototype.shiftLeft=c.prototype.shiftLeft,c.prototype.shiftRight=function(e){var a,r=O(e).toJSNumber();if(!F(r))throw new Error(String(r)+" is too large for shifting.");if(r<0)return this.shiftLeft(-r);for(var i=this;r>=M;){if(i.isZero()||i.isNegative()&&i.isUnit())return i;i=(a=x(i,q))[1].isNegative()?a[0].prev():a[0],r-=M-1}return(a=x(i,S[r]))[1].isNegative()?a[0].prev():a[0]},d.prototype.shiftRight=u.prototype.shiftRight=c.prototype.shiftRight,c.prototype.not=function(){return this.negate().prev()},d.prototype.not=u.prototype.not=c.prototype.not,c.prototype.and=function(e){return U(this,e,function(e,a){return e&a})},d.prototype.and=u.prototype.and=c.prototype.and,c.prototype.or=function(e){return U(this,e,function(e,a){return e|a})},d.prototype.or=u.prototype.or=c.prototype.or,c.prototype.xor=function(e){return U(this,e,function(e,a){return e^a})},d.prototype.xor=u.prototype.xor=c.prototype.xor;var R=1<<30,H=(a&-a)*(a&-a)|R;function N(e){var r=e.value,i="number"==typeof r?r|R:"bigint"==typeof r?r|BigInt(R):r[0]+r[1]*a|H;return i&-i}function G(e,a){return e=O(e),a=O(a),e.greater(a)?e:a}function Y(e,a){return e=O(e),a=O(a),e.lesser(a)?e:a}function J(e,a){if(e=O(e).abs(),a=O(a).abs(),e.equals(a))return e;if(e.isZero())return a;if(a.isZero())return e;for(var r,i,t=l[1];e.isEven()&&a.isEven();)r=Y(N(e),N(a)),e=e.divide(r),a=a.divide(r),t=t.multiply(r);for(;e.isEven();)e=e.divide(N(e));do{for(;a.isEven();)a=a.divide(N(a));e.greater(a)&&(i=a,a=e,e=i),a=a.subtract(e)}while(!a.isZero());return t.isUnit()?e:e.multiply(t)}c.prototype.bitLength=function(){var e=this;return e.compareTo(i(0))<0&&(e=e.negate().subtract(i(1))),0===e.compareTo(i(0))?i(0):i(function e(a,r){if(r.compareTo(a)<=0){var t=e(a,r.square(r)),n=t.p,o=t.e,s=n.multiply(r);return s.compareTo(a)<=0?{p:s,e:2*o+1}:{p:n,e:2*o}}return{p:i(1),e:0}}(e,i(2)).e).add(i(1))},d.prototype.bitLength=u.prototype.bitLength=c.prototype.bitLength;var P=function(e,a,r,i){r=r||o,e=String(e),i||(e=e.toLowerCase(),r=r.toLowerCase());var t,n=e.length,s=Math.abs(a),l={};for(t=0;t=s)){if("1"===d&&1===s)continue;throw new Error(d+" is not a valid digit in base "+a+".")}}a=O(a);var c=[],u="-"===e[0];for(t=u?1:0;t"!==e[t]&&t=0;i--)t=t.add(e[i].times(n)),n=n.times(a);return r?t.negate():t}function T(e,a){if((a=i(a)).isZero()){if(e.isZero())return{value:[0],isNegative:!1};throw new Error("Cannot convert nonzero numbers to base 0.")}if(a.equals(-1)){if(e.isZero())return{value:[0],isNegative:!1};if(e.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-e.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:!1};var r=Array.apply(null,Array(e.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);return r.unshift([1]),{value:[].concat.apply([],r),isNegative:!1}}var t=!1;if(e.isNegative()&&a.isPositive()&&(t=!0,e=e.abs()),a.isUnit())return e.isZero()?{value:[0],isNegative:!1}:{value:Array.apply(null,Array(e.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:t};for(var n,o=[],s=e;s.isNegative()||s.compareAbs(a)>=0;){n=s.divmod(a),s=n.quotient;var l=n.remainder;l.isNegative()&&(l=a.minus(l).abs(),s=s.next()),o.push(l.toJSNumber())}return o.push(s.toJSNumber()),{value:o.reverse(),isNegative:t}}function K(e,a,r){var i=T(e,a);return(i.isNegative?"-":"")+i.value.map(function(e){return function(e,a){return e<(a=a||o).length?a[e]:"<"+e+">"}(e,r)}).join("")}function $(e){if(h(+e)){var a=+e;if(a===f(a))return s?new d(BigInt(a)):new u(a);throw new Error("Invalid integer: "+e)}var i="-"===e[0];i&&(e=e.slice(1));var t=e.split(/e/i);if(t.length>2)throw new Error("Invalid integer: "+t.join("e"));if(2===t.length){var n=t[1];if("+"===n[0]&&(n=n.slice(1)),(n=+n)!==f(n)||!h(n))throw new Error("Invalid integer: "+n+" is not a valid exponent.");var o=t[0],l=o.indexOf(".");if(l>=0&&(n-=o.length-l-1,o=o.slice(0,l)+o.slice(l+1)),n<0)throw new Error("Cannot include negative exponent part for integers");e=o+=new Array(n+1).join("0")}if(!/^([0-9][0-9]*)$/.test(e))throw new Error("Invalid integer: "+e);if(s)return new d(BigInt(i?"-"+e:e));for(var A=[],g=e.length,m=r,y=g-m;g>0;)A.push(+e.slice(y,g)),(y-=m)<0&&(y=0),g-=m;return p(A),new c(A,i)}function O(e){return"number"==typeof e?function(e){if(s)return new d(BigInt(e));if(h(e)){if(e!==f(e))throw new Error(e+" is not an integer.");return new u(e)}return $(e.toString())}(e):"string"==typeof e?$(e):"bigint"==typeof e?new d(e):e}c.prototype.toArray=function(e){return T(this,e)},u.prototype.toArray=function(e){return T(this,e)},d.prototype.toArray=function(e){return T(this,e)},c.prototype.toString=function(e,a){if(void 0===e&&(e=10),10!==e)return K(this,e,a);for(var r,i=this.value,t=i.length,n=String(i[--t]);--t>=0;)r=String(i[t]),n+="0000000".slice(r.length)+r;return(this.sign?"-":"")+n},u.prototype.toString=function(e,a){return void 0===e&&(e=10),10!=e?K(this,e,a):String(this.value)},d.prototype.toString=u.prototype.toString,d.prototype.toJSON=c.prototype.toJSON=u.prototype.toJSON=function(){return this.toString()},c.prototype.valueOf=function(){return parseInt(this.toString(),10)},c.prototype.toJSNumber=c.prototype.valueOf,u.prototype.valueOf=function(){return this.value},u.prototype.toJSNumber=u.prototype.valueOf,d.prototype.valueOf=d.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};for(var X=0;X<1e3;X++)l[X]=O(X),X>0&&(l[-X]=O(-X));return l.one=l[1],l.zero=l[0],l.minusOne=l[-1],l.max=G,l.min=Y,l.gcd=J,l.lcm=function(e,a){return e=O(e).abs(),a=O(a).abs(),e.divide(J(e,a)).multiply(a)},l.isInstance=function(e){return e instanceof c||e instanceof u||e instanceof d},l.randBetween=function(e,r){var i=Y(e=O(e),r=O(r)),t=G(e,r).subtract(i).add(1);if(t.isSmall)return i.add(Math.floor(Math.random()*t));for(var n=T(t,a).value,o=[],s=!0,c=0;c=this._blockSize;){for(var n=this._blockOffset;n0;++o)this._length[o]+=s,(s=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*s);return this},n.prototype._update=function(){throw new Error("_update is not implemented")},n.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var a=this._digest();void 0!==e&&(a=a.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return a},n.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=n},function(e,a,r){"use strict";(function(a,i){var t=r(22);e.exports=b;var n,o=r(45);b.ReadableState=y;r(30).EventEmitter;var s=function(e,a){return e.listeners(a).length},l=r(51),c=r(0).Buffer,u=a.Uint8Array||function(){};var d=r(16);d.inherits=r(1);var h=r(99),A=void 0;A=h&&h.debuglog?h.debuglog("stream"):function(){};var g,p=r(100),m=r(52);d.inherits(b,l);var f=["error","close","destroy","pause","resume"];function y(e,a){e=e||{};var i=a instanceof(n=n||r(11));this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var t=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=t||0===t?t:i&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(g||(g=r(33).StringDecoder),this.decoder=new g(e.encoding),this.encoding=e.encoding)}function b(e){if(n=n||r(11),!(this instanceof b))return new b(e);this._readableState=new y(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function k(e,a,r,i,t){var n,o=e._readableState;null===a?(o.reading=!1,function(e,a){if(a.ended)return;if(a.decoder){var r=a.decoder.end();r&&r.length&&(a.buffer.push(r),a.length+=a.objectMode?1:r.length)}a.ended=!0,_(e)}(e,o)):(t||(n=function(e,a){var r;i=a,c.isBuffer(i)||i instanceof u||"string"==typeof a||void 0===a||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));var i;return r}(o,a)),n?e.emit("error",n):o.objectMode||a&&a.length>0?("string"==typeof a||o.objectMode||Object.getPrototypeOf(a)===c.prototype||(a=function(e){return c.from(e)}(a)),i?o.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):w(e,o,a,!0):o.ended?e.emit("error",new Error("stream.push() after EOF")):(o.reading=!1,o.decoder&&!r?(a=o.decoder.write(a),o.objectMode||0!==a.length?w(e,o,a,!1):C(e,o)):w(e,o,a,!1))):i||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtha.highWaterMark&&(a.highWaterMark=function(e){return e>=v?e=v:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=a.length?e:a.ended?a.length:(a.needReadable=!0,0))}function _(e){var a=e._readableState;a.needReadable=!1,a.emittedReadable||(A("emitReadable",a.flowing),a.emittedReadable=!0,a.sync?t.nextTick(B,e):B(e))}function B(e){A("emit readable"),e.emit("readable"),j(e)}function C(e,a){a.readingMore||(a.readingMore=!0,t.nextTick(E,e,a))}function E(e,a){for(var r=a.length;!a.reading&&!a.flowing&&!a.ended&&a.length=a.length?(r=a.decoder?a.buffer.join(""):1===a.buffer.length?a.buffer.head.data:a.buffer.concat(a.length),a.buffer.clear()):r=function(e,a,r){var i;en.length?n.length:e;if(o===n.length?t+=n:t+=n.slice(0,e),0===(e-=o)){o===n.length?(++i,r.next?a.head=r.next:a.head=a.tail=null):(a.head=r,r.data=n.slice(o));break}++i}return a.length-=i,t}(e,a):function(e,a){var r=c.allocUnsafe(e),i=a.head,t=1;i.data.copy(r),e-=i.data.length;for(;i=i.next;){var n=i.data,o=e>n.length?n.length:e;if(n.copy(r,r.length-e,0,o),0===(e-=o)){o===n.length?(++t,i.next?a.head=i.next:a.head=a.tail=null):(a.head=i,i.data=n.slice(o));break}++t}return a.length-=t,r}(e,a);return i}(e,a.buffer,a.decoder),r);var r}function D(e){var a=e._readableState;if(a.length>0)throw new Error('"endReadable()" called on non-empty stream');a.endEmitted||(a.ended=!0,t.nextTick(S,a,e))}function S(e,a){e.endEmitted||0!==e.length||(e.endEmitted=!0,a.readable=!1,a.emit("end"))}function M(e,a){for(var r=0,i=e.length;r=a.highWaterMark||a.ended))return A("read: emitReadable",a.length,a.ended),0===a.length&&a.ended?D(this):_(this),null;if(0===(e=I(e,a))&&a.ended)return 0===a.length&&D(this),null;var i,t=a.needReadable;return A("need readable",t),(0===a.length||a.length-e0?z(e,a):null)?(a.needReadable=!0,e=0):a.length-=e,0===a.length&&(a.ended||(a.needReadable=!0),r!==e&&a.ended&&D(this)),null!==i&&this.emit("data",i),i},b.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},b.prototype.pipe=function(e,a){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,A("pipe count=%d opts=%j",n.pipesCount,a);var l=(!a||!1!==a.end)&&e!==i.stdout&&e!==i.stderr?u:b;function c(a,i){A("onunpipe"),a===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,A("cleanup"),e.removeListener("close",f),e.removeListener("finish",y),e.removeListener("drain",d),e.removeListener("error",m),e.removeListener("unpipe",c),r.removeListener("end",u),r.removeListener("end",b),r.removeListener("data",p),h=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||d())}function u(){A("onend"),e.end()}n.endEmitted?t.nextTick(l):r.once("end",l),e.on("unpipe",c);var d=function(e){return function(){var a=e._readableState;A("pipeOnDrain",a.awaitDrain),a.awaitDrain&&a.awaitDrain--,0===a.awaitDrain&&s(e,"data")&&(a.flowing=!0,j(e))}}(r);e.on("drain",d);var h=!1;var g=!1;function p(a){A("ondata"),g=!1,!1!==e.write(a)||g||((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==M(n.pipes,e))&&!h&&(A("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,g=!0),r.pause())}function m(a){A("onerror",a),b(),e.removeListener("error",m),0===s(e,"error")&&e.emit("error",a)}function f(){e.removeListener("finish",y),b()}function y(){A("onfinish"),e.removeListener("close",f),b()}function b(){A("unpipe"),r.unpipe(e)}return r.on("data",p),function(e,a,r){if("function"==typeof e.prependListener)return e.prependListener(a,r);e._events&&e._events[a]?o(e._events[a])?e._events[a].unshift(r):e._events[a]=[r,e._events[a]]:e.on(a,r)}(e,"error",m),e.once("close",f),e.once("finish",y),e.emit("pipe",r),n.flowing||(A("pipe resume"),r.resume()),e},b.prototype.unpipe=function(e){var a=this._readableState,r={hasUnpiped:!1};if(0===a.pipesCount)return this;if(1===a.pipesCount)return e&&e!==a.pipes?this:(e||(e=a.pipes),a.pipes=null,a.pipesCount=0,a.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var i=a.pipes,t=a.pipesCount;a.pipes=null,a.pipesCount=0,a.flowing=!1;for(var n=0;n>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function h(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function A(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}i(l,t),l.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},l.prototype._update=function(e){for(var a,r=this._w,i=0|this._a,t=0|this._b,n=0|this._c,s=0|this._d,l=0|this._e,g=0|this._f,p=0|this._g,m=0|this._h,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<64;++f)r[f]=0|(((a=r[f-2])>>>17|a<<15)^(a>>>19|a<<13)^a>>>10)+r[f-7]+A(r[f-15])+r[f-16];for(var y=0;y<64;++y){var b=m+h(l)+c(l,g,p)+o[y]+r[y]|0,k=d(i)+u(i,t,n)|0;m=p,p=g,g=l,l=s+b|0,s=n,n=t,t=i,i=b+k|0}this._a=i+this._a|0,this._b=t+this._b|0,this._c=n+this._c|0,this._d=s+this._d|0,this._e=l+this._e|0,this._f=g+this._f|0,this._g=p+this._g|0,this._h=m+this._h|0},l.prototype._hash=function(){var e=n.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=l},function(e,a,r){var i=r(1),t=r(14),n=r(0).Buffer,o=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function l(){this.init(),this._w=s,t.call(this,128,112)}function c(e,a,r){return r^e&(a^r)}function u(e,a,r){return e&a|r&(e|a)}function d(e,a){return(e>>>28|a<<4)^(a>>>2|e<<30)^(a>>>7|e<<25)}function h(e,a){return(e>>>14|a<<18)^(e>>>18|a<<14)^(a>>>9|e<<23)}function A(e,a){return(e>>>1|a<<31)^(e>>>8|a<<24)^e>>>7}function g(e,a){return(e>>>1|a<<31)^(e>>>8|a<<24)^(e>>>7|a<<25)}function p(e,a){return(e>>>19|a<<13)^(a>>>29|e<<3)^e>>>6}function m(e,a){return(e>>>19|a<<13)^(a>>>29|e<<3)^(e>>>6|a<<26)}function f(e,a){return e>>>0>>0?1:0}i(l,t),l.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},l.prototype._update=function(e){for(var a=this._w,r=0|this._ah,i=0|this._bh,t=0|this._ch,n=0|this._dh,s=0|this._eh,l=0|this._fh,y=0|this._gh,b=0|this._hh,k=0|this._al,w=0|this._bl,v=0|this._cl,I=0|this._dl,_=0|this._el,B=0|this._fl,C=0|this._gl,E=0|this._hl,Q=0;Q<32;Q+=2)a[Q]=e.readInt32BE(4*Q),a[Q+1]=e.readInt32BE(4*Q+4);for(;Q<160;Q+=2){var x=a[Q-30],j=a[Q-30+1],z=A(x,j),D=g(j,x),S=p(x=a[Q-4],j=a[Q-4+1]),M=m(j,x),q=a[Q-14],F=a[Q-14+1],U=a[Q-32],R=a[Q-32+1],H=D+F|0,N=z+q+f(H,D)|0;N=(N=N+S+f(H=H+M|0,M)|0)+U+f(H=H+R|0,R)|0,a[Q]=N,a[Q+1]=H}for(var G=0;G<160;G+=2){N=a[G],H=a[G+1];var Y=u(r,i,t),J=u(k,w,v),P=d(r,k),L=d(k,r),T=h(s,_),K=h(_,s),$=o[G],O=o[G+1],X=c(s,l,y),V=c(_,B,C),W=E+K|0,Z=b+T+f(W,E)|0;Z=(Z=(Z=Z+X+f(W=W+V|0,V)|0)+$+f(W=W+O|0,O)|0)+N+f(W=W+H|0,H)|0;var ee=L+J|0,ae=P+Y+f(ee,L)|0;b=y,E=C,y=l,C=B,l=s,B=_,s=n+Z+f(_=I+W|0,I)|0,n=t,I=v,t=i,v=w,i=r,w=k,r=Z+ae+f(k=W+ee|0,W)|0}this._al=this._al+k|0,this._bl=this._bl+w|0,this._cl=this._cl+v|0,this._dl=this._dl+I|0,this._el=this._el+_|0,this._fl=this._fl+B|0,this._gl=this._gl+C|0,this._hl=this._hl+E|0,this._ah=this._ah+r+f(this._al,k)|0,this._bh=this._bh+i+f(this._bl,w)|0,this._ch=this._ch+t+f(this._cl,v)|0,this._dh=this._dh+n+f(this._dl,I)|0,this._eh=this._eh+s+f(this._el,_)|0,this._fh=this._fh+l+f(this._fl,B)|0,this._gh=this._gh+y+f(this._gl,C)|0,this._hh=this._hh+b+f(this._hl,E)|0},l.prototype._hash=function(){var e=n.allocUnsafe(64);function a(a,r,i){e.writeInt32BE(a,i),e.writeInt32BE(r,i+4)}return a(this._ah,this._al,0),a(this._bh,this._bl,8),a(this._ch,this._cl,16),a(this._dh,this._dl,24),a(this._eh,this._el,32),a(this._fh,this._fl,40),a(this._gh,this._gl,48),a(this._hh,this._hl,56),e},e.exports=l},function(e,a,r){(function(a){var r="Input must be an string, Buffer or Uint8Array";function i(e){return(4294967296+e).toString(16).substring(1)}e.exports={normalizeInput:function(e){var i;if(e instanceof Uint8Array)i=e;else if(e instanceof a)i=new Uint8Array(e);else{if("string"!=typeof e)throw new Error(r);i=new Uint8Array(a.from(e,"utf8"))}return i},toHex:function(e){return Array.prototype.map.call(e,function(e){return(e<16?"0":"")+e.toString(16)}).join("")},debugPrint:function(e,a,r){for(var t="\n"+e+" = ",n=0;n",null,null],"-":["0)",null,null,"=+","[{","pP"],".":[",<","lL",";:","/?",null,null],"/":[".>",";:","'\"",null,null,null],0:["9(",null,null,"-_","pP","oO"],1:["`~",null,null,"2@","qQ",null],2:["1!",null,null,"3#","wW","qQ"],3:["2@",null,null,"4$","eE","wW"],4:["3#",null,null,"5%","rR","eE"],5:["4$",null,null,"6^","tT","rR"],6:["5%",null,null,"7&","yY","tT"],7:["6^",null,null,"8*","uU","yY"],8:["7&",null,null,"9(","iI","uU"],9:["8*",null,null,"0)","oO","iI"],":":["lL","pP","[{","'\"","/?",".>"],";":["lL","pP","[{","'\"","/?",".>"],"<":["mM","kK","lL",".>",null,null],"=":["-_",null,null,null,"]}","[{"],">":[",<","lL",";:","/?",null,null],"?":[".>",";:","'\"",null,null,null],"@":["1!",null,null,"3#","wW","qQ"],A:[null,"qQ","wW","sS","zZ",null],B:["vV","gG","hH","nN",null,null],C:["xX","dD","fF","vV",null,null],D:["sS","eE","rR","fF","cC","xX"],E:["wW","3#","4$","rR","dD","sS"],F:["dD","rR","tT","gG","vV","cC"],G:["fF","tT","yY","hH","bB","vV"],H:["gG","yY","uU","jJ","nN","bB"],I:["uU","8*","9(","oO","kK","jJ"],J:["hH","uU","iI","kK","mM","nN"],K:["jJ","iI","oO","lL",",<","mM"],L:["kK","oO","pP",";:",".>",",<"],M:["nN","jJ","kK",",<",null,null],N:["bB","hH","jJ","mM",null,null],O:["iI","9(","0)","pP","lL","kK"],P:["oO","0)","-_","[{",";:","lL"],Q:[null,"1!","2@","wW","aA",null],R:["eE","4$","5%","tT","fF","dD"],S:["aA","wW","eE","dD","xX","zZ"],T:["rR","5%","6^","yY","gG","fF"],U:["yY","7&","8*","iI","jJ","hH"],V:["cC","fF","gG","bB",null,null],W:["qQ","2@","3#","eE","sS","aA"],X:["zZ","sS","dD","cC",null,null],Y:["tT","6^","7&","uU","hH","gG"],Z:[null,"aA","sS","xX",null,null],"[":["pP","-_","=+","]}","'\"",";:"],"\\":["]}",null,null,null,null,null],"]":["[{","=+",null,"\\|",null,"'\""],"^":["5%",null,null,"7&","yY","tT"],_:["0)",null,null,"=+","[{","pP"],"`":[null,null,null,"1!",null,null],a:[null,"qQ","wW","sS","zZ",null],b:["vV","gG","hH","nN",null,null],c:["xX","dD","fF","vV",null,null],d:["sS","eE","rR","fF","cC","xX"],e:["wW","3#","4$","rR","dD","sS"],f:["dD","rR","tT","gG","vV","cC"],g:["fF","tT","yY","hH","bB","vV"],h:["gG","yY","uU","jJ","nN","bB"],i:["uU","8*","9(","oO","kK","jJ"],j:["hH","uU","iI","kK","mM","nN"],k:["jJ","iI","oO","lL",",<","mM"],l:["kK","oO","pP",";:",".>",",<"],m:["nN","jJ","kK",",<",null,null],n:["bB","hH","jJ","mM",null,null],o:["iI","9(","0)","pP","lL","kK"],p:["oO","0)","-_","[{",";:","lL"],q:[null,"1!","2@","wW","aA",null],r:["eE","4$","5%","tT","fF","dD"],s:["aA","wW","eE","dD","xX","zZ"],t:["rR","5%","6^","yY","gG","fF"],u:["yY","7&","8*","iI","jJ","hH"],v:["cC","fF","gG","bB",null,null],w:["qQ","2@","3#","eE","sS","aA"],x:["zZ","sS","dD","cC",null,null],y:["tT","6^","7&","uU","hH","gG"],z:[null,"aA","sS","xX",null,null],"{":["pP","-_","=+","]}","'\"",";:"],"|":["]}",null,null,null,null,null],"}":["[{","=+",null,"\\|",null,"'\""],"~":[null,null,null,"1!",null,null]},dvorak:{"!":["`~",null,null,"2@","'\"",null],'"':[null,"1!","2@",",<","aA",null],"#":["2@",null,null,"4$",".>",",<"],$:["3#",null,null,"5%","pP",".>"],"%":["4$",null,null,"6^","yY","pP"],"&":["6^",null,null,"8*","gG","fF"],"'":[null,"1!","2@",",<","aA",null],"(":["8*",null,null,"0)","rR","cC"],")":["9(",null,null,"[{","lL","rR"],"*":["7&",null,null,"9(","cC","gG"],"+":["/?","]}",null,"\\|",null,"-_"],",":["'\"","2@","3#",".>","oO","aA"],"-":["sS","/?","=+",null,null,"zZ"],".":[",<","3#","4$","pP","eE","oO"],"/":["lL","[{","]}","=+","-_","sS"],0:["9(",null,null,"[{","lL","rR"],1:["`~",null,null,"2@","'\"",null],2:["1!",null,null,"3#",",<","'\""],3:["2@",null,null,"4$",".>",",<"],4:["3#",null,null,"5%","pP",".>"],5:["4$",null,null,"6^","yY","pP"],6:["5%",null,null,"7&","fF","yY"],7:["6^",null,null,"8*","gG","fF"],8:["7&",null,null,"9(","cC","gG"],9:["8*",null,null,"0)","rR","cC"],":":[null,"aA","oO","qQ",null,null],";":[null,"aA","oO","qQ",null,null],"<":["'\"","2@","3#",".>","oO","aA"],"=":["/?","]}",null,"\\|",null,"-_"],">":[",<","3#","4$","pP","eE","oO"],"?":["lL","[{","]}","=+","-_","sS"],"@":["1!",null,null,"3#",",<","'\""],A:[null,"'\"",",<","oO",";:",null],B:["xX","dD","hH","mM",null,null],C:["gG","8*","9(","rR","tT","hH"],D:["iI","fF","gG","hH","bB","xX"],E:["oO",".>","pP","uU","jJ","qQ"],F:["yY","6^","7&","gG","dD","iI"],G:["fF","7&","8*","cC","hH","dD"],H:["dD","gG","cC","tT","mM","bB"],I:["uU","yY","fF","dD","xX","kK"],J:["qQ","eE","uU","kK",null,null],K:["jJ","uU","iI","xX",null,null],L:["rR","0)","[{","/?","sS","nN"],M:["bB","hH","tT","wW",null,null],N:["tT","rR","lL","sS","vV","wW"],O:["aA",",<",".>","eE","qQ",";:"],P:[".>","4$","5%","yY","uU","eE"],Q:[";:","oO","eE","jJ",null,null],R:["cC","9(","0)","lL","nN","tT"],S:["nN","lL","/?","-_","zZ","vV"],T:["hH","cC","rR","nN","wW","mM"],U:["eE","pP","yY","iI","kK","jJ"],V:["wW","nN","sS","zZ",null,null],W:["mM","tT","nN","vV",null,null],X:["kK","iI","dD","bB",null,null],Y:["pP","5%","6^","fF","iI","uU"],Z:["vV","sS","-_",null,null,null],"[":["0)",null,null,"]}","/?","lL"],"\\":["=+",null,null,null,null,null],"]":["[{",null,null,null,"=+","/?"],"^":["5%",null,null,"7&","fF","yY"],_:["sS","/?","=+",null,null,"zZ"],"`":[null,null,null,"1!",null,null],a:[null,"'\"",",<","oO",";:",null],b:["xX","dD","hH","mM",null,null],c:["gG","8*","9(","rR","tT","hH"],d:["iI","fF","gG","hH","bB","xX"],e:["oO",".>","pP","uU","jJ","qQ"],f:["yY","6^","7&","gG","dD","iI"],g:["fF","7&","8*","cC","hH","dD"],h:["dD","gG","cC","tT","mM","bB"],i:["uU","yY","fF","dD","xX","kK"],j:["qQ","eE","uU","kK",null,null],k:["jJ","uU","iI","xX",null,null],l:["rR","0)","[{","/?","sS","nN"],m:["bB","hH","tT","wW",null,null],n:["tT","rR","lL","sS","vV","wW"],o:["aA",",<",".>","eE","qQ",";:"],p:[".>","4$","5%","yY","uU","eE"],q:[";:","oO","eE","jJ",null,null],r:["cC","9(","0)","lL","nN","tT"],s:["nN","lL","/?","-_","zZ","vV"],t:["hH","cC","rR","nN","wW","mM"],u:["eE","pP","yY","iI","kK","jJ"],v:["wW","nN","sS","zZ",null,null],w:["mM","tT","nN","vV",null,null],x:["kK","iI","dD","bB",null,null],y:["pP","5%","6^","fF","iI","uU"],z:["vV","sS","-_",null,null,null],"{":["0)",null,null,"]}","/?","lL"],"|":["=+",null,null,null,null,null],"}":["[{",null,null,null,"=+","/?"],"~":[null,null,null,"1!",null,null]},keypad:{"*":["/",null,null,null,"-","+","9","8"],"+":["9","*","-",null,null,null,null,"6"],"-":["*",null,null,null,null,null,"+","9"],".":["0","2","3",null,null,null,null,null],"/":[null,null,null,null,"*","9","8","7"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6",null,null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","+",null,null,"3","2"],7:[null,null,null,"/","8","5","4",null],8:["7",null,"/","*","9","6","5","4"],9:["8","/","*","-","+",null,"6","5"]},mac_keypad:{"*":["/",null,null,null,null,null,"-","9"],"+":["6","9","-",null,null,null,null,"3"],"-":["9","/","*",null,null,null,"+","6"],".":["0","2","3",null,null,null,null,null],"/":["=",null,null,null,"*","-","9","8"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6","+",null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","-","+",null,"3","2"],7:[null,null,null,"=","8","5","4",null],8:["7",null,"=","/","9","6","5","4"],9:["8","=","/","*","-","+","6","5"],"=":[null,null,null,null,"/","9","8","7"]}},e.exports=r},function(e,a){},function(e,a,r){(function(e){function r(e,a){for(var r=0,i=e.length-1;i>=0;i--){var t=e[i];"."===t?e.splice(i,1):".."===t?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(a)for(;r--;r)e.unshift("..");return e}var i=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,t=function(e){return i.exec(e).slice(1)};function n(e,a){if(e.filter)return e.filter(a);for(var r=[],i=0;i=-1&&!i;t--){var o=t>=0?arguments[t]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(a=o+"/"+a,i="/"===o.charAt(0))}return(i?"/":"")+(a=r(n(a.split("/"),function(e){return!!e}),!i).join("/"))||"."},a.normalize=function(e){var i=a.isAbsolute(e),t="/"===o(e,-1);return(e=r(n(e.split("/"),function(e){return!!e}),!i).join("/"))||i||(e="."),e&&t&&(e+="/"),(i?"/":"")+e},a.isAbsolute=function(e){return"/"===e.charAt(0)},a.join=function(){var e=Array.prototype.slice.call(arguments,0);return a.normalize(n(e,function(e,a){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},a.relative=function(e,r){function i(e){for(var a=0;a=0&&""===e[r];r--);return a>r?[]:e.slice(a,r-a+1)}e=a.resolve(e).substr(1),r=a.resolve(r).substr(1);for(var t=i(e.split("/")),n=i(r.split("/")),o=Math.min(t.length,n.length),s=o,l=0;lr)?a=("rmd160"===e?new l:c(e)).update(a).digest():a.lengthr||n!=n)throw new TypeError("Bad key length")}}).call(this,r(2).Buffer)},function(e,a,r){(function(a){var r;a.browser?r="utf-8":r=parseInt(a.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary";e.exports=r}).call(this,r(7))},function(e,a,r){var i=r(62),t=r(34),n=r(35),o=r(64),s=r(65),l=r(0).Buffer,c=l.alloc(128),u={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function d(e,a,r){var o=function(e){return"rmd160"===e||"ripemd160"===e?function(e){return(new t).update(e).digest()}:"md5"===e?i:function(a){return n(e).update(a).digest()}}(e),s="sha512"===e||"sha384"===e?128:64;a.length>s?a=o(a):a.lengthe;)r.ishrn(1);if(r.isEven()&&r.iadd(s),r.testn(1)||r.iadd(l),a.cmp(l)){if(!a.cmp(c))for(;r.mod(u).cmp(d);)r.iadd(A)}else for(;r.mod(n).cmp(h);)r.iadd(A);if(m(g=r.shrn(1))&&m(r)&&f(g)&&f(r)&&o.test(g)&&o.test(r))return r}}},function(e,a,r){var i=r(3),t=r(74);function n(e){this.rand=e||new t.Rand}e.exports=n,n.create=function(e){return new n(e)},n.prototype._randbelow=function(e){var a=e.bitLength(),r=Math.ceil(a/8);do{var t=new i(this.rand.generate(r))}while(t.cmp(e)>=0);return t},n.prototype._randrange=function(e,a){var r=a.sub(e);return e.add(this._randbelow(r))},n.prototype.test=function(e,a,r){var t=e.bitLength(),n=i.mont(e),o=new i(1).toRed(n);a||(a=Math.max(1,t/48|0));for(var s=e.subn(1),l=0;!s.testn(l);l++);for(var c=e.shrn(l),u=s.toRed(n);a>0;a--){var d=this._randrange(new i(2),s);r&&r(d);var h=d.toRed(n).redPow(c);if(0!==h.cmp(o)&&0!==h.cmp(u)){for(var A=1;A0;a--){var u=this._randrange(new i(2),o),d=e.gcd(u);if(0!==d.cmpn(1))return d;var h=u.toRed(t).redPow(l);if(0!==h.cmp(n)&&0!==h.cmp(c)){for(var A=1;A>8,o=255&t;n?r.push(n,o):r.push(o)}return r},i.zero2=t,i.toHex=n,i.encode=function(e,a){return"hex"===a?n(e):e}},function(e,a,r){"use strict";var i=r(8).rotr32;function t(e,a,r){return e&a^~e&r}function n(e,a,r){return e&a^e&r^a&r}function o(e,a,r){return e^a^r}a.ft_1=function(e,a,r,i){return 0===e?t(a,r,i):1===e||3===e?o(a,r,i):2===e?n(a,r,i):void 0},a.ch32=t,a.maj32=n,a.p32=o,a.s0_256=function(e){return i(e,2)^i(e,13)^i(e,22)},a.s1_256=function(e){return i(e,6)^i(e,11)^i(e,25)},a.g0_256=function(e){return i(e,7)^i(e,18)^e>>>3},a.g1_256=function(e){return i(e,17)^i(e,19)^e>>>10}},function(e,a,r){"use strict";var i=r(8),t=r(19),n=r(76),o=r(5),s=i.sum32,l=i.sum32_4,c=i.sum32_5,u=n.ch32,d=n.maj32,h=n.s0_256,A=n.s1_256,g=n.g0_256,p=n.g1_256,m=t.BlockHash,f=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function y(){if(!(this instanceof y))return new y;m.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=f,this.W=new Array(64)}i.inherits(y,m),e.exports=y,y.blockSize=512,y.outSize=256,y.hmacStrength=192,y.padLength=64,y.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;i>6],t=0==(32&r);if(31==(31&r)){var n=r;for(r=0;128==(128&n);){if(n=e.readUInt8(a),e.isError(n))return n;r<<=7,r|=127&n}}else r&=31;return{cls:i,primitive:t,tag:r,tagStr:s.tag[r]}}function d(e,a,r){var i=e.readUInt8(r);if(e.isError(i))return i;if(!a&&128===i)return null;if(0==(128&i))return i;var t=127&i;if(t>4)return e.error("length octect is too long");i=0;for(var n=0;n=31)return i.error("Multi-octet tag encoding unsupported");a||(t|=32);return t|=s.tagClassByName[r||"universal"]<<6}(e,a,r,this.reporter);if(i.length<128)return(n=new t(2))[0]=o,n[1]=i.length,this._createEncoderBuffer([n,i]);for(var l=1,c=i.length;c>=256;c>>=8)l++;(n=new t(2+l))[0]=o,n[1]=128|l;c=1+l;for(var u=i.length;u>0;c--,u>>=8)n[c]=255&u;return this._createEncoderBuffer([n,i])},c.prototype._encodeStr=function(e,a){if("bitstr"===a)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===a){for(var r=new t(2*e.length),i=0;i=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}var n=0;for(i=0;i=128;o>>=7)n++}var s=new t(n),l=s.length-1;for(i=e.length-1;i>=0;i--){o=e[i];for(s[l--]=127&o;(o>>=7)>0;)s[l--]=128|127&o}return this._createEncoderBuffer(s)},c.prototype._encodeTime=function(e,a){var r,i=new Date(e);return"gentime"===a?r=[u(i.getFullYear()),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):"utctime"===a?r=[u(i.getFullYear()%100),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+a+" time is not supported yet"),this._encodeStr(r,"octstr")},c.prototype._encodeNull=function(){return this._createEncoderBuffer("")},c.prototype._encodeInt=function(e,a){if("string"==typeof e){if(!a)return this.reporter.error("String int or enum given, but no values map");if(!a.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=a[e]}if("number"!=typeof e&&!t.isBuffer(e)){var r=e.toArray();!e.sign&&128&r[0]&&r.unshift(0),e=new t(r)}if(t.isBuffer(e)){var i=e.length;0===e.length&&i++;var n=new t(i);return e.copy(n),0===e.length&&(n[0]=0),this._createEncoderBuffer(n)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);i=1;for(var o=e;o>=256;o>>=8)i++;for(o=(n=new Array(i)).length-1;o>=0;o--)n[o]=255&e,e>>=8;return 128&n[0]&&n.unshift(0),this._createEncoderBuffer(new t(n))},c.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},c.prototype._use=function(e,a){return"function"==typeof e&&(e=e(a)),e._getEncoder("der").tree},c.prototype._skipDefault=function(e,a,r){var i,t=this._baseState;if(null===t.default)return!1;var n=e.join();if(void 0===t.defaultBuffer&&(t.defaultBuffer=this._encodeValue(t.default,a,r).join()),n.length!==t.defaultBuffer.length)return!1;for(i=0;i{if(!e.ok)throw new n.ServiceRequestError(e.status,e.statusText,r,null);return e}).then(e=>e.json())}function r(e,r){return a(e,`chains/main/blocks/${r}`).then(e=>e)}e.getBlock=r,e.getBlockHead=function(e){return r(e,"head")},e.getAccountForBlock=function(e,r,i){return a(e,`chains/main/blocks/${r}/context/contracts/${i}`).then(e=>e)},e.getAccountManagerForBlock=function(e,r,i){return a(e,`chains/main/blocks/${r}/context/contracts/${i}/manager_key`).then(e=>e)},e.isImplicitAndEmpty=function(a,r){return i(this,void 0,void 0,function*(){const i=yield e.getBlockHead(a),t=yield e.getAccountForBlock(a,i.hash,r),n=r.toLowerCase().startsWith("tz"),o=0===Number(t.balance);return n&&o})},e.isManagerKeyRevealedForAccount=function(a,r){return i(this,void 0,void 0,function*(){const i=yield e.getBlockHead(a);return null!=(yield e.getAccountManagerForBlock(a,i.hash,r.publicKeyHash)).key})}}(a.TezosNodeReader||(a.TezosNodeReader={}))},function(e,a,r){"use strict";Object.defineProperty(a,"__esModule",{value:!0});class i extends Error{constructor(e,a,r,i){super(),this.httpStatus=e,this.httpMessage=a,this.conseilURL=r,this.data=i}}a.ServiceRequestError=i;a.ConseilRequestError=class extends i{constructor(e,a,r,i){super(e,a,r,null),this.conseilQuery=i}};class t extends Error{constructor(e,a,r,i,t){super(),this.httpStatus=e,this.httpMessage=a,this.conseilURL=r,this.data=i,this.response=t}}a.ServiceResponseError=t;a.ConseilResponseError=class extends t{constructor(e,a,r,i,t){super(e,a,r,null,t),this.conseilQuery=i}}},function(e,a,r){"use strict";Object.defineProperty(a,"__esModule",{value:!0});const i={};let t;a.wordlists=i,a._default=t,["chinese_simplified","chinese_traditional","korean","french","italian","spanish","japanese","english"].forEach(e=>{try{a._default=t=r(203)("./"+e+".json"),i[e]=t,"japanese"===e&&(i.JA=t),"english"===e&&(i.EN=t)}catch(e){}})},function(e,a,r){"use strict";Object.defineProperty(a,"__esModule",{value:!0});const i=r(44);!function(e){e.blankQuery=function(){return{fields:[],predicates:[],orderBy:[],limit:100}},e.addFields=function(e,...a){let r=Object.assign({},e),i=new Set(e.fields);return a.forEach(e=>i.add(e)),r.fields=Array.from(i.values()),r},e.addPredicate=function(e,a,r,t,n=!1){if(r===i.ConseilOperator.BETWEEN&&2!==t.length)throw new Error("BETWEEN operation requires a list of two values.");if(r===i.ConseilOperator.IN&&t.length<2)throw new Error("IN operation requires a list of two or more values.");if(1!==t.length&&r!==i.ConseilOperator.IN&&r!==i.ConseilOperator.BETWEEN)throw new Error(`invalid values list for ${r}.`);let o=Object.assign({},e);return o.predicates.push({field:a,operation:r,set:t,inverse:n}),o},e.addOrdering=function(e,a,r=i.ConseilSortDirection.ASC){let t=Object.assign({},e);return t.orderBy.push({field:a,direction:r}),t},e.setLimit=function(e,a){if(a<1)throw new Error("Limit cannot be less than one.");let r=Object.assign({},e);return r.limit=a,r},e.setOutputType=function(e,a){let r=Object.assign({},e);return r.output=a,r},e.addAggregationFunction=function(e,a,r){if(!e.fields.includes(a))throw new Error("Cannot apply an aggregation function on a field not being returned.");if(1===e.fields.length)throw new Error("Cannot apply an aggregation function on the only field being returned.");let i=Object.assign({},e);return i.aggregation={field:a,function:r},i}}(a.ConseilQueryBuilder||(a.ConseilQueryBuilder={}))},function(e,a,r){"use strict";var i=this&&this.__awaiter||function(e,a,r,i){return new(r||(r=Promise))(function(t,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function s(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){e.done?t(e.value):new r(function(a){a(e.value)}).then(o,s)}l((i=i.apply(e,a||[])).next())})},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});const n=r(88),o=t(r(15)).default.getFetch();!function(e){e.executeEntityQuery=function(e,a,r,t,s){return i(this,void 0,void 0,function*(){const i=`${e.url}/v2/data/${a}/${r}/${t}`;return o(i,{method:"post",headers:{apiKey:e.apiKey,"Content-Type":"application/json"},body:JSON.stringify(s)}).then(e=>{if(!e.ok)throw new n.ConseilRequestError(e.status,e.statusText,i,s);return e}).then(e=>e.headers.get("content-type").toLowerCase().includes("application/json")?e.json():e.text())})}}(a.ConseilDataClient||(a.ConseilDataClient={}))},function(e,a,r){"use strict";function i(e){for(var r in e)a.hasOwnProperty(r)||(a[r]=e[r])}var t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),t(r(15)).default.setFetch(window.fetch),i(r(27)),i(r(13)),i(r(87)),i(r(198)),i(r(201)),i(r(212)),i(r(214)),i(r(91)),i(r(215)),i(r(90)),i(r(44)),i(r(43)),i(r(17))},function(e,a,r){"use strict";a.byteLength=function(e){var a=c(e),r=a[0],i=a[1];return 3*(r+i)/4-i},a.toByteArray=function(e){for(var a,r=c(e),i=r[0],o=r[1],s=new n(function(e,a,r){return 3*(a+r)/4-r}(0,i,o)),l=0,u=o>0?i-4:i,d=0;d>16&255,s[l++]=a>>8&255,s[l++]=255&a;2===o&&(a=t[e.charCodeAt(d)]<<2|t[e.charCodeAt(d+1)]>>4,s[l++]=255&a);1===o&&(a=t[e.charCodeAt(d)]<<10|t[e.charCodeAt(d+1)]<<4|t[e.charCodeAt(d+2)]>>2,s[l++]=a>>8&255,s[l++]=255&a);return s},a.fromByteArray=function(e){for(var a,r=e.length,t=r%3,n=[],o=0,s=r-t;os?s:o+16383));1===t?(a=e[r-1],n.push(i[a>>2]+i[a<<4&63]+"==")):2===t&&(a=(e[r-2]<<8)+e[r-1],n.push(i[a>>10]+i[a>>4&63]+i[a<<2&63]+"="));return n.join("")};for(var i=[],t=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=a),[r,r===a?0:4-r%4]}function u(e,a,r){for(var t,n,o=[],s=a;s>18&63]+i[n>>12&63]+i[n>>6&63]+i[63&n]);return o.join("")}t["-".charCodeAt(0)]=62,t["_".charCodeAt(0)]=63},function(e,a){a.read=function(e,a,r,i,t){var n,o,s=8*t-i-1,l=(1<>1,u=-7,d=r?t-1:0,h=r?-1:1,A=e[a+d];for(d+=h,n=A&(1<<-u)-1,A>>=-u,u+=s;u>0;n=256*n+e[a+d],d+=h,u-=8);for(o=n&(1<<-u)-1,n>>=-u,u+=i;u>0;o=256*o+e[a+d],d+=h,u-=8);if(0===n)n=1-c;else{if(n===l)return o?NaN:1/0*(A?-1:1);o+=Math.pow(2,i),n-=c}return(A?-1:1)*o*Math.pow(2,n-i)},a.write=function(e,a,r,i,t,n){var o,s,l,c=8*n-t-1,u=(1<>1,h=23===t?Math.pow(2,-24)-Math.pow(2,-77):0,A=i?0:n-1,g=i?1:-1,p=a<0||0===a&&1/a<0?1:0;for(a=Math.abs(a),isNaN(a)||a===1/0?(s=isNaN(a)?1:0,o=u):(o=Math.floor(Math.log(a)/Math.LN2),a*(l=Math.pow(2,-o))<1&&(o--,l*=2),(a+=o+d>=1?h/l:h*Math.pow(2,1-d))*l>=2&&(o++,l/=2),o+d>=u?(s=0,o=u):o+d>=1?(s=(a*l-1)*Math.pow(2,t),o+=d):(s=a*Math.pow(2,d-1)*Math.pow(2,t),o=0));t>=8;e[r+A]=255&s,A+=g,s/=256,t-=8);for(o=o<0;e[r+A]=255&o,A+=g,o/=256,c-=8);e[r+A-g]|=128*p}},function(e,a,r){!function(){function a(e){return e[0]}const i=r(46),t=r(47),n=['"parameter"','"storage"','"code"','"False"','"Elt"','"Left"','"None"','"Pair"','"Right"','"Some"','"True"','"Unit"','"PACK"','"UNPACK"','"BLAKE2B"','"SHA256"','"SHA512"','"ABS"','"ADD"','"AMOUNT"','"AND"','"BALANCE"','"CAR"','"CDR"','"CHECK_SIGNATURE"','"COMPARE"','"CONCAT"','"CONS"','"CREATE_ACCOUNT"','"CREATE_CONTRACT"','"IMPLICIT_ACCOUNT"','"DIP"','"DROP"','"DUP"','"EDIV"','"EMPTY_MAP"','"EMPTY_SET"','"EQ"','"EXEC"','"FAILWITH"','"GE"','"GET"','"GT"','"HASH_KEY"','"IF"','"IF_CONS"','"IF_LEFT"','"IF_NONE"','"INT"','"LAMBDA"','"LE"','"LEFT"','"LOOP"','"LSL"','"LSR"','"LT"','"MAP"','"MEM"','"MUL"','"NEG"','"NEQ"','"NIL"','"NONE"','"NOT"','"NOW"','"OR"','"PAIR"','"PUSH"','"RIGHT"','"SIZE"','"SOME"','"SOURCE"','"SENDER"','"SELF"','"STEPS_TO_QUOTA"','"SUB"','"SWAP"','"TRANSFER_TOKENS"','"SET_DELEGATE"','"UNIT"','"UPDATE"','"XOR"','"ITER"','"LOOP_LEFT"','"ADDRESS"','"CONTRACT"','"ISNAT"','"CAST"','"RENAME"','"bool"','"contract"','"int"','"key"','"key_hash"','"lambda"','"list"','"map"','"big_map"','"nat"','"option"','"or"','"pair"','"set"','"signature"','"string"','"bytes"','"mutez"','"timestamp"','"unit"','"operation"','"address"','"SLICE"'],o=i.compile({keyword:n,lbrace:"{",rbrace:"}",lbracket:"[",rbracket:"]",colon:":",comma:",",_:/[ \t]+/,quotedValue:/\"[\S\s]*?\"/}),s=e=>("00"+n.indexOf(e).toString(16)).slice(-2),l=e=>("0000000"+e.toString(16)).slice(-8),c=e=>{if(0===e)return"00";const a=t(e).abs(),r=a.bitLength().toJSNumber();let i=[],n=a;for(let a=0;a("0"+e.toString(16)).slice(-2)).join("")};var u={Lexer:o,ParserRules:[{name:"main",symbols:["staticObject"],postprocess:a},{name:"main",symbols:["primBare"],postprocess:a},{name:"main",symbols:["primArg"],postprocess:a},{name:"main",symbols:["primAnn"],postprocess:a},{name:"main",symbols:["primArgAnn"],postprocess:a},{name:"main",symbols:["anyArray"],postprocess:a},{name:"staticInt$ebnf$1",symbols:[]},{name:"staticInt$ebnf$1",symbols:["staticInt$ebnf$1",o.has("_")?{type:"_"}:_],postprocess:function(e){return e[0].concat([e[1]])}},{name:"staticInt",symbols:[o.has("lbrace")?{type:"lbrace"}:lbrace,o.has("_")?{type:"_"}:_,{literal:'"int"'},"staticInt$ebnf$1",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("quotedValue")?{type:"quotedValue"}:quotedValue,o.has("_")?{type:"_"}:_,o.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{const a=e[6].toString();return"00"+c(parseInt(a.substring(1,a.length-1)))}},{name:"staticString$ebnf$1",symbols:[]},{name:"staticString$ebnf$1",symbols:["staticString$ebnf$1",o.has("_")?{type:"_"}:_],postprocess:function(e){return e[0].concat([e[1]])}},{name:"staticString",symbols:[o.has("lbrace")?{type:"lbrace"}:lbrace,o.has("_")?{type:"_"}:_,{literal:'"string"'},"staticString$ebnf$1",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("quotedValue")?{type:"quotedValue"}:quotedValue,o.has("_")?{type:"_"}:_,o.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{let a=e[6].toString();return a=a.substring(1,a.length-1),"01"+l(a.length)+(a=a.split("").map(e=>e.charCodeAt(0).toString(16)).join(""))}},{name:"staticBytes$ebnf$1",symbols:[]},{name:"staticBytes$ebnf$1",symbols:["staticBytes$ebnf$1",o.has("_")?{type:"_"}:_],postprocess:function(e){return e[0].concat([e[1]])}},{name:"staticBytes",symbols:[o.has("lbrace")?{type:"lbrace"}:lbrace,o.has("_")?{type:"_"}:_,{literal:'"bytes"'},"staticBytes$ebnf$1",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("quotedValue")?{type:"quotedValue"}:quotedValue,o.has("_")?{type:"_"}:_,o.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{let a=e[6].toString();return a=a.substring(1,a.length-1),"0a"+l(a.length/2)+a}},{name:"staticObject",symbols:["staticInt"],postprocess:a},{name:"staticObject",symbols:["staticString"],postprocess:a},{name:"staticObject",symbols:["staticBytes"],postprocess:a},{name:"primBare$ebnf$1",symbols:[]},{name:"primBare$ebnf$1",symbols:["primBare$ebnf$1",o.has("_")?{type:"_"}:_],postprocess:function(e){return e[0].concat([e[1]])}},{name:"primBare",symbols:[o.has("lbrace")?{type:"lbrace"}:lbrace,o.has("_")?{type:"_"}:_,{literal:'"prim"'},"primBare$ebnf$1",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("keyword")?{type:"keyword"}:keyword,o.has("_")?{type:"_"}:_,o.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{return"03"+s(e[6].toString())}},{name:"primArg$ebnf$1",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArg$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primArg$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArg$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primArg$ebnf$3$subexpression$1$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"primArg$ebnf$3$subexpression$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primArg$ebnf$3$subexpression$1$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArg$ebnf$3$subexpression$1$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primArg$ebnf$3$subexpression$1",symbols:["any","primArg$ebnf$3$subexpression$1$ebnf$1","primArg$ebnf$3$subexpression$1$ebnf$2"]},{name:"primArg$ebnf$3",symbols:["primArg$ebnf$3$subexpression$1"]},{name:"primArg$ebnf$3$subexpression$2$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"primArg$ebnf$3$subexpression$2$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primArg$ebnf$3$subexpression$2$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArg$ebnf$3$subexpression$2$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primArg$ebnf$3$subexpression$2",symbols:["any","primArg$ebnf$3$subexpression$2$ebnf$1","primArg$ebnf$3$subexpression$2$ebnf$2"]},{name:"primArg$ebnf$3",symbols:["primArg$ebnf$3","primArg$ebnf$3$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"primArg",symbols:[o.has("lbrace")?{type:"lbrace"}:lbrace,o.has("_")?{type:"_"}:_,{literal:'"prim"'},"primArg$ebnf$1",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("keyword")?{type:"keyword"}:keyword,o.has("comma")?{type:"comma"}:comma,o.has("_")?{type:"_"}:_,{literal:'"args"'},"primArg$ebnf$2",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("lbracket")?{type:"lbracket"}:lbracket,o.has("_")?{type:"_"}:_,"primArg$ebnf$3",o.has("_")?{type:"_"}:_,o.has("rbracket")?{type:"rbracket"}:rbracket,o.has("_")?{type:"_"}:_,o.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{let a="05";2==e[15].length?a="07":e[15].length>2&&(a="09");const r=s(e[6].toString());let i=e[15].map(e=>e[0]).join("");return"09"===a&&(i=("0000000"+(i.length/2).toString(16)).slice(-8)+i,i+="00000000"),a+r+i}},{name:"primAnn$ebnf$1",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primAnn$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primAnn$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primAnn$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primAnn$ebnf$3$subexpression$1$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"primAnn$ebnf$3$subexpression$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primAnn$ebnf$3$subexpression$1$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primAnn$ebnf$3$subexpression$1$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primAnn$ebnf$3$subexpression$1",symbols:[o.has("quotedValue")?{type:"quotedValue"}:quotedValue,"primAnn$ebnf$3$subexpression$1$ebnf$1","primAnn$ebnf$3$subexpression$1$ebnf$2"]},{name:"primAnn$ebnf$3",symbols:["primAnn$ebnf$3$subexpression$1"]},{name:"primAnn$ebnf$3$subexpression$2$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"primAnn$ebnf$3$subexpression$2$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primAnn$ebnf$3$subexpression$2$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primAnn$ebnf$3$subexpression$2$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primAnn$ebnf$3$subexpression$2",symbols:[o.has("quotedValue")?{type:"quotedValue"}:quotedValue,"primAnn$ebnf$3$subexpression$2$ebnf$1","primAnn$ebnf$3$subexpression$2$ebnf$2"]},{name:"primAnn$ebnf$3",symbols:["primAnn$ebnf$3","primAnn$ebnf$3$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"primAnn",symbols:[o.has("lbrace")?{type:"lbrace"}:lbrace,o.has("_")?{type:"_"}:_,{literal:'"prim"'},"primAnn$ebnf$1",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("keyword")?{type:"keyword"}:keyword,o.has("comma")?{type:"comma"}:comma,o.has("_")?{type:"_"}:_,{literal:'"annots"'},"primAnn$ebnf$2",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("lbracket")?{type:"lbracket"}:lbracket,o.has("_")?{type:"_"}:_,"primAnn$ebnf$3",o.has("_")?{type:"_"}:_,o.has("rbracket")?{type:"rbracket"}:rbracket,o.has("_")?{type:"_"}:_,o.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{const a=s(e[6].toString());let r=e[15].map(e=>{let a=e[0].toString();return a=a.substring(1,a.length-1)}).join(" ");return r=r.split("").map(e=>e.charCodeAt(0).toString(16)).join(""),"04"+a+(r=l(r.length/2)+r)}},{name:"primArgAnn$ebnf$1",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArgAnn$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArgAnn$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$3$subexpression$1$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"primArgAnn$ebnf$3$subexpression$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$3$subexpression$1$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArgAnn$ebnf$3$subexpression$1$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$3$subexpression$1",symbols:["any","primArgAnn$ebnf$3$subexpression$1$ebnf$1","primArgAnn$ebnf$3$subexpression$1$ebnf$2"]},{name:"primArgAnn$ebnf$3",symbols:["primArgAnn$ebnf$3$subexpression$1"]},{name:"primArgAnn$ebnf$3$subexpression$2$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"primArgAnn$ebnf$3$subexpression$2$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$3$subexpression$2$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArgAnn$ebnf$3$subexpression$2$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$3$subexpression$2",symbols:["any","primArgAnn$ebnf$3$subexpression$2$ebnf$1","primArgAnn$ebnf$3$subexpression$2$ebnf$2"]},{name:"primArgAnn$ebnf$3",symbols:["primArgAnn$ebnf$3","primArgAnn$ebnf$3$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"primArgAnn$ebnf$4",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArgAnn$ebnf$4",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$5$subexpression$1$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"primArgAnn$ebnf$5$subexpression$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$5$subexpression$1$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArgAnn$ebnf$5$subexpression$1$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$5$subexpression$1",symbols:[o.has("quotedValue")?{type:"quotedValue"}:quotedValue,"primArgAnn$ebnf$5$subexpression$1$ebnf$1","primArgAnn$ebnf$5$subexpression$1$ebnf$2"]},{name:"primArgAnn$ebnf$5",symbols:["primArgAnn$ebnf$5$subexpression$1"]},{name:"primArgAnn$ebnf$5$subexpression$2$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"primArgAnn$ebnf$5$subexpression$2$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$5$subexpression$2$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"primArgAnn$ebnf$5$subexpression$2$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"primArgAnn$ebnf$5$subexpression$2",symbols:[o.has("quotedValue")?{type:"quotedValue"}:quotedValue,"primArgAnn$ebnf$5$subexpression$2$ebnf$1","primArgAnn$ebnf$5$subexpression$2$ebnf$2"]},{name:"primArgAnn$ebnf$5",symbols:["primArgAnn$ebnf$5","primArgAnn$ebnf$5$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"primArgAnn",symbols:[o.has("lbrace")?{type:"lbrace"}:lbrace,o.has("_")?{type:"_"}:_,{literal:'"prim"'},"primArgAnn$ebnf$1",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("keyword")?{type:"keyword"}:keyword,o.has("comma")?{type:"comma"}:comma,o.has("_")?{type:"_"}:_,{literal:'"args"'},"primArgAnn$ebnf$2",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("lbracket")?{type:"lbracket"}:lbracket,o.has("_")?{type:"_"}:_,"primArgAnn$ebnf$3",o.has("_")?{type:"_"}:_,o.has("rbracket")?{type:"rbracket"}:rbracket,o.has("comma")?{type:"comma"}:comma,o.has("_")?{type:"_"}:_,{literal:'"annots"'},"primArgAnn$ebnf$4",o.has("colon")?{type:"colon"}:colon,o.has("_")?{type:"_"}:_,o.has("lbracket")?{type:"lbracket"}:lbracket,o.has("_")?{type:"_"}:_,"primArgAnn$ebnf$5",o.has("_")?{type:"_"}:_,o.has("rbracket")?{type:"rbracket"}:rbracket,o.has("_")?{type:"_"}:_,o.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>{let a="06";2==e[15].length?a="08":e[15].length>2&&(a="09");const r=s(e[6].toString());let i=e[15].map(e=>e[0]).join(""),t=e[26].map(e=>{let a=e[0].toString();return a=a.substring(1,a.length-1)}).join(" ");return t=t.split("").map(e=>e.charCodeAt(0).toString(16)).join(""),t=l(t.length/2)+t,"09"===a&&(i=("0000000"+(i.length/2).toString(16)).slice(-8)+i),a+r+i+t}},{name:"primAny",symbols:["primBare"],postprocess:a},{name:"primAny",symbols:["primArg"],postprocess:a},{name:"primAny",symbols:["primAnn"],postprocess:a},{name:"primAny",symbols:["primArgAnn"],postprocess:a},{name:"any",symbols:["primAny"],postprocess:a},{name:"any",symbols:["staticObject"],postprocess:a},{name:"any",symbols:["anyArray"],postprocess:a},{name:"anyArray",symbols:[o.has("lbracket")?{type:"lbracket"}:lbracket,o.has("rbracket")?{type:"rbracket"}:rbracket],postprocess:function(e){return"0200000000"}},{name:"anyArray$ebnf$1$subexpression$1$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"anyArray$ebnf$1$subexpression$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"anyArray$ebnf$1$subexpression$1$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"anyArray$ebnf$1$subexpression$1$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"anyArray$ebnf$1$subexpression$1",symbols:["any","anyArray$ebnf$1$subexpression$1$ebnf$1","anyArray$ebnf$1$subexpression$1$ebnf$2"]},{name:"anyArray$ebnf$1",symbols:["anyArray$ebnf$1$subexpression$1"]},{name:"anyArray$ebnf$1$subexpression$2$ebnf$1",symbols:[o.has("comma")?{type:"comma"}:comma],postprocess:a},{name:"anyArray$ebnf$1$subexpression$2$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"anyArray$ebnf$1$subexpression$2$ebnf$2",symbols:[o.has("_")?{type:"_"}:_],postprocess:a},{name:"anyArray$ebnf$1$subexpression$2$ebnf$2",symbols:[],postprocess:function(e){return null}},{name:"anyArray$ebnf$1$subexpression$2",symbols:["any","anyArray$ebnf$1$subexpression$2$ebnf$1","anyArray$ebnf$1$subexpression$2$ebnf$2"]},{name:"anyArray$ebnf$1",symbols:["anyArray$ebnf$1","anyArray$ebnf$1$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"anyArray",symbols:[o.has("lbracket")?{type:"lbracket"}:lbracket,o.has("_")?{type:"_"}:_,"anyArray$ebnf$1",o.has("_")?{type:"_"}:_,o.has("rbracket")?{type:"rbracket"}:rbracket],postprocess:e=>{const a=e[2].map(e=>e[0]).join("");return"02"+l(a.length/2)+a}}],ParserStart:"main"};void 0!==e.exports?e.exports=u:window.grammar=u}()},function(e,a,r){!function(){function a(e){return e[0]}const i=r(46).compile({annot:["%",":","@"],lparen:"(",rparen:")",lbrace:"{",rbrace:"}",ws:/[ \t]+/,semicolon:";",comparableType:["int","nat","string","bytes","mutez","bool","key_hash","timestamp"],constantType:["key","unit","signature","operation","address"],singleArgType:["option","list","set","contract"],doubleArgType:["pair","or","lambda","map","big_map"],type:["key","unit","signature","option","list","set","operation","address","contract","pair","or","lambda","map","big_map"],instruction:["DROP","DUP","SWAP","SOME","NONE","UNIT","IF_NONE","PAIR","CAR","CDR","LEFT","RIGHT","IF_LEFT","IF_RIGHT","NIL","CONS","IF_CONS","SIZE","EMPTY_SET","EMPTY_MAP","MAP","ITER","MEM","GET","UPDATE","IF","LOOP","LOOP_LEFT","LAMBDA","EXEC","DIP","FAILWITH","CAST","RENAME","CONCAT","SLICE","PACK","UNPACK","ADD","SUB","MUL","EDIV","ABS","NEG","LSL","LSR","OR","AND","XOR","NOT","COMPARE","EQ","NEQ","LT","GT","LE","GE","SELF","CONTRACT","TRANSFER_TOKENS","SET_DELEGATE","CREATE_CONTRACT","IMPLICIT_ACCOUNT","NOW","AMOUNT","BALANCE","CHECK_SIGNATURE","BLAKE2B","SHA256","SHA512","HASH_KEY","STEPS_TO_QUOTA","SOURCE","SENDER","ADDRESS","FAIL","CDAR","CDDR","DUUP","DUUUP","DUUUUP","DUUUUUP","DUUUUUUP","DUUUUUUUP","DIIP","DIIIP","DIIIIP","DIIIIIP","DIIIIIIP","DIIIIIIIP","REDUCE","CMPLT","UNPAIR","CMPGT","CMPLE","CMPGE","UNPAPAIR","CAAR","CDDDDADR","CDDADDR","CDADDR","CDADAR","IFCMPEQ","CDDDADR","CADAR","CDDDAAR","CADDR","CDDDDR","CDDAAR","CDDADAR","CDDDDDR","CDDDDAAR","ASSERT_CMPGE","CDAAR","CDADR","CDDAR","CDDDR","CMPEQ","CAAR","CAAAR","CAAAAR","CAAAAAR","CAAAAAAR","CAAAAAAAR","CDDR","CDDDR","CDDDDR","CDDDDDR","CDDDDDDR","CDDDDDDDR","ASSERT_CMPEQ","ASSERT_CMPLT","ISNAT","IFCMPGT","IFCMPGE","IFCMPLT","IFCMPLE","IF_SOME","CADR"],data:["Unit","True","False","Left","Right","Pair","Some","None","instruction"],constantData:["Unit","True","False","None","instruction"],singleArgData:["Left","Right","Some"],doubleArgData:["Pair"],singleArgTypeData:["option","list","set","contract","Left","Right","Some"],doubleArgTypeData:["pair","or","lambda","map","big_map","Pair"],elt:"Elt",number:/-?[0-9]+/,word:/[a-zA-z_0-9]+/,string:/"(?:\\["\\]|[^\n"\\])*"/}),t=e=>{return new RegExp("^C(A|D)(A|D)+R$").test(e)},n=(e,a)=>{var r=e.substring(1,e.length-1),i=r.split("").map(e=>(e=>{switch(e){case"A":return k(["CAR"]);case"D":return k(["CDR"])}})(e));if(null!=a){const e=r[r.length-1];"A"==e&&(i[i.length-1]=`{ "prim": "CAR", "annots": [${a}] }`),"D"==e&&(i[i.length-1]=`{ "prim": "CDR", "annots": [${a}] }`)}return`[${i}]`},o=e=>{return new RegExp("^CMP(NEQ|EQ|GT|LT|GE|LE)$").test(e)},s=e=>{return new RegExp("^DUU+P$").test(e)},l=(e,a)=>{if(new RegExp("^DUU+P$").test(e)){var r=e.substring(0,1)+e.substring(2);return`[{ "prim": "DIP", "args": [ ${l(r,a)} ] },{"prim":"SWAP"}]`}return null==a?'[{ "prim": "DUP" }]':`[{ "prim": "DUP", "annots": [${a}] }]`},c=e=>{return new RegExp("^ASSERT$|^ASSERT_(EQ|NEQ|GT|LT|GE|LE|NONE|SOME|LEFT|RIGHT|CMPEQ|CMPNEQ|CMPGT|CMPLT|CMPGE|CMPLE)$").test(e)},u=e=>"FAIL"==e,d=e=>{return new RegExp("^IF(EQ|NEQ|GT|LT|GE|LE|CMPEQ|CMPNEQ|CMPGT|CMPLT|CMPGE|CMPLE)$").test(e)},h=(e,a,r,i)=>{switch(e){case"IFCMPEQ":return null==i?`[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFCMPGE":return null==i?`[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFCMPGT":return null==i?`[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFCMPLE":return null==i?`[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFCMPLT":return null==i?`[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFCMPNEQ":return null==i?`[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFEQ":return null==i?`[{"prim":"EQ"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"EQ"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFGE":return null==i?`[{"prim":"GE"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"GE"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFGT":return null==i?`[{"prim":"GT"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"GT"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFLE":return null==i?`[{"prim":"LE"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"LE"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFLT":return null==i?`[{"prim":"LT"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"LT"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`;case"IFNEQ":return null==i?`[{"prim":"NEQ"},{"prim":"IF","args":[ [${a}] , [${r}]]}]`:`[{"prim":"NEQ"},{"prim":"IF","args":[ [${a}] , [${r}]], "annots": [${i}]}]`}},A=e=>{return new RegExp("^DII+P$").test(e)},g=(e,a,r)=>{if(new RegExp("^DII+P$").test(e)){var i=e.substring(0,1)+e.substring(2);return`[{ "prim": "DIP", "args": [ ${g(i,a,r)} ] }]`}return null==r?`[{ "prim": "DIP", "args": [ [ ${a} ] ] }]`:`[{ "prim": "DIP", "args": [ [ ${a} ] ], "annots": [${r}] }]`},p=e=>"UNPAIR"==e||"UNPAPAIR"==e,m=e=>c(e)||o(e)||A(e)||s(e)||u(e)||d(e)||t(e)||p(e),f=(e,a)=>t(e)?n(e,a):c(e)?((e,a)=>{switch(e){case"ASSERT":return null==a?'[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_CMPEQ":return null==a?'[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_CMPGE":return null==a?'[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_CMPGT":return null==a?'[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_CMPLE":return null==a?'[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_CMPLT":return null==a?'[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_CMPNEQ":return null==a?'[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_EQ":return null==a?'[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]]':`[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_GE":return null==a?'[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_GT":return null==a?'[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_LE":return null==a?'[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_LT":return null==a?'[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`;case"ASSERT_NEQ":return null==a?'[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]':`[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${a}]}]]]}]`}})(e,a):o(e)?((e,a)=>{var r=e.substring(3),i=k([`${r}`]);return null!=a&&(i=`{ "prim": "${r}", "annots": [${a}] }`),`[${[k(["COMPARE"]),i]}]`})(e,a):A(e)?g(e,a):s(e)?l(e,a):u(e)?((e,a)=>null==a?'[ { "prim": "UNIT" }, { "prim": "FAILWITH"} ]':`[ { "prim": "UNIT" }, { "prim": "FAILWITH", "annots": [${a}]} ]`)(0,a):d(e)?h(e,a):p(e)?((e,a)=>"UNPAIR"==e?null==a?'[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]':`[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ], "annots": [${a}] } ] ]`:"UNPAPAIR"==e?null==a?'[ [ { "prim": "DUP" },\n { "prim": "CAR" },\n { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ],\n {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]]}]]]}] ':`[ [ { "prim": "DUP" },\n { "prim": "CAR" },\n { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ],\n {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]],"annots": [${a}]}]]]}] `:void 0)(e,a):void 0,y=e=>`{ "int": "${parseInt(e[0])}" }`,b=e=>`{ "string": ${e[0]} }`,k=e=>{const a=e[0].toString();if(1==e.length)return m(a)?[f(a,null)]:`{ "prim": "${e[0]}" }`;{const r=e[1].map(e=>`"${e[1]+e[2]}"`);return m(a)?[f(a,r)]:`{ "prim": "${e[0]}", "annots": [${r}] }`}},w=e=>`{ "prim": "${e[0]}", "args": [ ${e[2]} ] }`,v=e=>{const a=e[3].map(e=>`"${e[1]+e[2]}"`);return`{ "prim": "${e[2]}", "annots": [${a}] }`},I=e=>{const a=`${e[0].toString()}`,r=e[1].map(e=>`"${e[1]+e[2]}"`);return A(a)?g(a,e[2],r):`{ "prim": "${e[0]}", "args": [ ${e[3]} ], "annots": [${r}] }`},_=e=>`{ "prim": "${e[2]}", "args": [ ${e[4]} ] }`,B=e=>`{ "prim": "${e[0]}", "args": [${e[2]}, ${e[4]}] }`,C=e=>`{ "prim": "${e[2]}", "args": [ ${e[4]}, ${e[6]} ] }`,E=e=>Array.isArray(e)&&Array.isArray(e[0])?e[0]:e,Q=e=>e[2].map(e=>e[0]).map(e=>E(e)),x=e=>{const a=e[1].map(e=>`"${e[1]+e[2]}"`);return`{ "prim": "${e[0]}", "args": [ ${e[4]}, ${e[6]} ], "annots": [${a}] }`};var j={Lexer:i,ParserRules:[{name:"main",symbols:["instruction"],postprocess:a},{name:"main",symbols:["data"],postprocess:a},{name:"main",symbols:["type"],postprocess:a},{name:"main",symbols:["parameter"],postprocess:a},{name:"main",symbols:["storage"],postprocess:a},{name:"main",symbols:["code"],postprocess:a},{name:"main",symbols:["script"],postprocess:a},{name:"main",symbols:["parameterValue"],postprocess:a},{name:"main",symbols:["storageValue"],postprocess:a},{name:"main",symbols:["typeData"],postprocess:a},{name:"script",symbols:["parameter","_","storage","_","code"],postprocess:e=>{return`[ ${e[0]}, ${e[2]}, ${`{ "prim": "code", "args": [ [ ${e[4]} ] ] }`} ]`}},{name:"parameter",symbols:[{literal:"parameter"}]},{name:"parameter",symbols:[{literal:"Parameter"}]},{name:"storage",symbols:[{literal:"Storage"}]},{name:"storage",symbols:[{literal:"storage"}]},{name:"code",symbols:[{literal:"Code"}]},{name:"code",symbols:[{literal:"code"}]},{name:"parameterValue",symbols:["parameter","_","typeData","_","semicolons"],postprocess:w},{name:"storageValue",symbols:["storage","_","typeData","_","semicolons"],postprocess:w},{name:"parameter",symbols:["parameter","_","type","_","semicolons"],postprocess:w},{name:"storage",symbols:["storage","_","type","_","semicolons"],postprocess:w},{name:"code",symbols:["code","_","subInstruction","_","semicolons","_"],postprocess:e=>e[2]},{name:"code",symbols:[i.has("code")?{type:"code"}:code,"_",{literal:"{};"}],postprocess:e=>"code {}"},{name:"type",symbols:[i.has("comparableType")?{type:"comparableType"}:comparableType],postprocess:k},{name:"type",symbols:[i.has("constantType")?{type:"constantType"}:constantType],postprocess:k},{name:"type",symbols:[i.has("singleArgType")?{type:"singleArgType"}:singleArgType,"_","type"],postprocess:w},{name:"type",symbols:[i.has("lparen")?{type:"lparen"}:lparen,"_",i.has("singleArgType")?{type:"singleArgType"}:singleArgType,"_","type","_",i.has("rparen")?{type:"rparen"}:rparen],postprocess:_},{name:"type",symbols:[i.has("doubleArgType")?{type:"doubleArgType"}:doubleArgType,"_","type","_","type"],postprocess:B},{name:"type",symbols:[i.has("lparen")?{type:"lparen"}:lparen,"_",i.has("doubleArgType")?{type:"doubleArgType"}:doubleArgType,"_","type","_","type","_",i.has("rparen")?{type:"rparen"}:rparen],postprocess:C},{name:"type$ebnf$1$subexpression$1$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$1$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$1$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$1$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$1$subexpression$1$subexpression$1"]},{name:"type$ebnf$1",symbols:["type$ebnf$1$subexpression$1"]},{name:"type$ebnf$1$subexpression$2$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$1$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$1$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$1$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$1$subexpression$2$subexpression$1"]},{name:"type$ebnf$1",symbols:["type$ebnf$1","type$ebnf$1$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"type",symbols:[i.has("comparableType")?{type:"comparableType"}:comparableType,"type$ebnf$1"],postprocess:k},{name:"type$ebnf$2$subexpression$1$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$2$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$2$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$2$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$2$subexpression$1$subexpression$1"]},{name:"type$ebnf$2",symbols:["type$ebnf$2$subexpression$1"]},{name:"type$ebnf$2$subexpression$2$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$2$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$2$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$2$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$2$subexpression$2$subexpression$1"]},{name:"type$ebnf$2",symbols:["type$ebnf$2","type$ebnf$2$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"type",symbols:[i.has("constantType")?{type:"constantType"}:constantType,"type$ebnf$2"],postprocess:k},{name:"type$ebnf$3$subexpression$1$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$3$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$3$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$3$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$3$subexpression$1$subexpression$1"]},{name:"type$ebnf$3",symbols:["type$ebnf$3$subexpression$1"]},{name:"type$ebnf$3$subexpression$2$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$3$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$3$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$3$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$3$subexpression$2$subexpression$1"]},{name:"type$ebnf$3",symbols:["type$ebnf$3","type$ebnf$3$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"type",symbols:[i.has("lparen")?{type:"lparen"}:lparen,"_",i.has("comparableType")?{type:"comparableType"}:comparableType,"type$ebnf$3","_",i.has("rparen")?{type:"rparen"}:rparen],postprocess:v},{name:"type$ebnf$4$subexpression$1$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$4$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$4$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$4$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$4$subexpression$1$subexpression$1"]},{name:"type$ebnf$4",symbols:["type$ebnf$4$subexpression$1"]},{name:"type$ebnf$4$subexpression$2$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$4$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$4$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$4$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$4$subexpression$2$subexpression$1"]},{name:"type$ebnf$4",symbols:["type$ebnf$4","type$ebnf$4$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"type",symbols:[i.has("lparen")?{type:"lparen"}:lparen,"_",i.has("constantType")?{type:"constantType"}:constantType,"type$ebnf$4","_",i.has("rparen")?{type:"rparen"}:rparen],postprocess:v},{name:"type$ebnf$5$subexpression$1$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$5$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$5$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$5$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$5$subexpression$1$subexpression$1"]},{name:"type$ebnf$5",symbols:["type$ebnf$5$subexpression$1"]},{name:"type$ebnf$5$subexpression$2$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$5$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$5$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$5$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$5$subexpression$2$subexpression$1"]},{name:"type$ebnf$5",symbols:["type$ebnf$5","type$ebnf$5$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"type",symbols:[i.has("lparen")?{type:"lparen"}:lparen,"_",i.has("singleArgType")?{type:"singleArgType"}:singleArgType,"type$ebnf$5","_","type",i.has("rparen")?{type:"rparen"}:rparen],postprocess:e=>{const a=e[3].map(e=>`"${e[1]+e[2]}"`);return`{ "prim": "${e[2]}", "args": [ [ ${e[7]} ] ], "annots": [${a}] }`}},{name:"type$ebnf$6$subexpression$1$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$6$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$6$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$6$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$6$subexpression$1$subexpression$1"]},{name:"type$ebnf$6",symbols:["type$ebnf$6$subexpression$1"]},{name:"type$ebnf$6$subexpression$2$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"type$ebnf$6$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"type$ebnf$6$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"type$ebnf$6$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"type$ebnf$6$subexpression$2$subexpression$1"]},{name:"type$ebnf$6",symbols:["type$ebnf$6","type$ebnf$6$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"type",symbols:[i.has("lparen")?{type:"lparen"}:lparen,"_",i.has("doubleArgType")?{type:"doubleArgType"}:doubleArgType,"type$ebnf$6","_","type","_","type",i.has("rparen")?{type:"rparen"}:rparen],postprocess:e=>{const a=e[3].map(e=>`"${e[1]+e[2]}"`);return`{ "prim": "${e[2]}", "args": [ ${e[5]}, ${e[7]} ], "annots": [${a}] }`}},{name:"typeData",symbols:[i.has("singleArgTypeData")?{type:"singleArgTypeData"}:singleArgTypeData,"_","typeData"],postprocess:w},{name:"typeData",symbols:[i.has("lparen")?{type:"lparen"}:lparen,"_",i.has("singleArgTypeData")?{type:"singleArgTypeData"}:singleArgTypeData,"_","typeData","_",i.has("rparen")?{type:"rparen"}:rparen],postprocess:_},{name:"typeData",symbols:[i.has("doubleArgTypeData")?{type:"doubleArgTypeData"}:doubleArgTypeData,"_","typeData","_","typeData"],postprocess:B},{name:"typeData",symbols:[i.has("lparen")?{type:"lparen"}:lparen,"_",i.has("doubleArgTypeData")?{type:"doubleArgTypeData"}:doubleArgTypeData,"_","typeData","_","typeData","_",i.has("rparen")?{type:"rparen"}:rparen],postprocess:C},{name:"typeData",symbols:[i.has("data")?{type:"data"}:data],postprocess:k},{name:"typeData",symbols:[i.has("data")?{type:"data"}:data,"_","typeData"],postprocess:w},{name:"typeData",symbols:[i.has("data")?{type:"data"}:data,"_","typeData","_","typeData"],postprocess:B},{name:"typeData",symbols:["subTypeData"],postprocess:a},{name:"typeData",symbols:["subTypeElt"],postprocess:a},{name:"typeData",symbols:[i.has("number")?{type:"number"}:number],postprocess:y},{name:"typeData",symbols:[i.has("string")?{type:"string"}:string],postprocess:b},{name:"typeData",symbols:[i.has("word")?{type:"word"}:word],postprocess:b},{name:"subTypeData$ebnf$1$subexpression$1",symbols:["data",{literal:";"},"_"]},{name:"subTypeData$ebnf$1",symbols:["subTypeData$ebnf$1$subexpression$1"]},{name:"subTypeData$ebnf$1$subexpression$2",symbols:["data",{literal:";"},"_"]},{name:"subTypeData$ebnf$1",symbols:["subTypeData$ebnf$1","subTypeData$ebnf$1$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subTypeData",symbols:[{literal:"{"},"_","subTypeData$ebnf$1",{literal:"}"}],postprocess:Q},{name:"subTypeData$ebnf$2$subexpression$1",symbols:["data",{literal:";"},"_"]},{name:"subTypeData$ebnf$2",symbols:["subTypeData$ebnf$2$subexpression$1"]},{name:"subTypeData$ebnf$2$subexpression$2",symbols:["data",{literal:";"},"_"]},{name:"subTypeData$ebnf$2",symbols:["subTypeData$ebnf$2","subTypeData$ebnf$2$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subTypeData",symbols:[{literal:"("},"_","subTypeData$ebnf$2",{literal:")"}],postprocess:Q},{name:"subTypeElt$ebnf$1$subexpression$1",symbols:["typeElt",{literal:";"},"_"]},{name:"subTypeElt$ebnf$1",symbols:["subTypeElt$ebnf$1$subexpression$1"]},{name:"subTypeElt$ebnf$1$subexpression$2",symbols:["typeElt",{literal:";"},"_"]},{name:"subTypeElt$ebnf$1",symbols:["subTypeElt$ebnf$1","subTypeElt$ebnf$1$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subTypeElt",symbols:[{literal:"{"},"_","subTypeElt$ebnf$1",{literal:"}"}],postprocess:Q},{name:"subTypeElt$ebnf$2$subexpression$1",symbols:["typeElt",{literal:";"},"_"]},{name:"subTypeElt$ebnf$2",symbols:["subTypeElt$ebnf$2$subexpression$1"]},{name:"subTypeElt$ebnf$2$subexpression$2",symbols:["typeElt",{literal:";"},"_"]},{name:"subTypeElt$ebnf$2",symbols:["subTypeElt$ebnf$2","subTypeElt$ebnf$2$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subTypeElt",symbols:[{literal:"("},"_","subTypeElt$ebnf$2",{literal:")"}],postprocess:Q},{name:"typeElt",symbols:[i.has("elt")?{type:"elt"}:elt,"_","typeData","_","typeData"],postprocess:B},{name:"subInstruction$ebnf$1$subexpression$1",symbols:["instruction","_",i.has("semicolon")?{type:"semicolon"}:semicolon,"_"]},{name:"subInstruction$ebnf$1",symbols:["subInstruction$ebnf$1$subexpression$1"]},{name:"subInstruction$ebnf$1$subexpression$2",symbols:["instruction","_",i.has("semicolon")?{type:"semicolon"}:semicolon,"_"]},{name:"subInstruction$ebnf$1",symbols:["subInstruction$ebnf$1","subInstruction$ebnf$1$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subInstruction",symbols:[i.has("lbrace")?{type:"lbrace"}:lbrace,"_","subInstruction$ebnf$1","instruction","_",i.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>e[2].map(e=>e[0]).concat(e[3]).map(e=>E(e))},{name:"subInstruction$ebnf$2$subexpression$1",symbols:["instruction","_",i.has("semicolon")?{type:"semicolon"}:semicolon,"_"]},{name:"subInstruction$ebnf$2",symbols:["subInstruction$ebnf$2$subexpression$1"]},{name:"subInstruction$ebnf$2$subexpression$2",symbols:["instruction","_",i.has("semicolon")?{type:"semicolon"}:semicolon,"_"]},{name:"subInstruction$ebnf$2",symbols:["subInstruction$ebnf$2","subInstruction$ebnf$2$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subInstruction",symbols:[i.has("lbrace")?{type:"lbrace"}:lbrace,"_","subInstruction$ebnf$2",i.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:Q},{name:"subInstruction",symbols:[i.has("lbrace")?{type:"lbrace"}:lbrace,"_","instruction","_",i.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>e[2]},{name:"subInstruction",symbols:[i.has("lbrace")?{type:"lbrace"}:lbrace,"_",i.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>""},{name:"instruction",symbols:["subInstruction"],postprocess:a},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction],postprocess:k},{name:"instruction$ebnf$1$subexpression$1$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$1$subexpression$1$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$1$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$1$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$1$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$1$subexpression$1$subexpression$1"]},{name:"instruction$ebnf$1",symbols:["instruction$ebnf$1$subexpression$1"]},{name:"instruction$ebnf$1$subexpression$2$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$1$subexpression$2$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$1$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$1$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$1$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$1$subexpression$2$subexpression$1"]},{name:"instruction$ebnf$1",symbols:["instruction$ebnf$1","instruction$ebnf$1$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"instruction$ebnf$1"],postprocess:k},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"_","subInstruction"],postprocess:e=>{const a=`${e[0].toString()}`;return A(a)?g(a,e[2]):`{ "prim": "${e[0]}", "args": [ [ ${e[2]} ] ] }`}},{name:"instruction$ebnf$2$subexpression$1$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$2$subexpression$1$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$2$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$2$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$2$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$2$subexpression$1$subexpression$1"]},{name:"instruction$ebnf$2",symbols:["instruction$ebnf$2$subexpression$1"]},{name:"instruction$ebnf$2$subexpression$2$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$2$subexpression$2$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$2$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$2$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$2$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$2$subexpression$2$subexpression$1"]},{name:"instruction$ebnf$2",symbols:["instruction$ebnf$2","instruction$ebnf$2$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"instruction$ebnf$2","_","subInstruction"],postprocess:I},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"_","type"],postprocess:w},{name:"instruction$ebnf$3$subexpression$1$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$3$subexpression$1$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$3$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$3$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$3$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$3$subexpression$1$subexpression$1"]},{name:"instruction$ebnf$3",symbols:["instruction$ebnf$3$subexpression$1"]},{name:"instruction$ebnf$3$subexpression$2$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$3$subexpression$2$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$3$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$3$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$3$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$3$subexpression$2$subexpression$1"]},{name:"instruction$ebnf$3",symbols:["instruction$ebnf$3","instruction$ebnf$3$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"instruction$ebnf$3","_","type"],postprocess:I},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"_","data"],postprocess:w},{name:"instruction$ebnf$4$subexpression$1$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$4$subexpression$1$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$4$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$4$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$4$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$4$subexpression$1$subexpression$1"]},{name:"instruction$ebnf$4",symbols:["instruction$ebnf$4$subexpression$1"]},{name:"instruction$ebnf$4$subexpression$2$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$4$subexpression$2$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$4$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$4$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$4$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$4$subexpression$2$subexpression$1"]},{name:"instruction$ebnf$4",symbols:["instruction$ebnf$4","instruction$ebnf$4$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"instruction$ebnf$4","_","data"],postprocess:I},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"_","type","_","type","_","subInstruction"],postprocess:e=>`{ "prim": "${e[0]}", "args": [ ${e[2]}, ${e[4]}, [${e[6]}] ] }`},{name:"instruction$ebnf$5$subexpression$1$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$5$subexpression$1$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$5$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$5$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$5$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$5$subexpression$1$subexpression$1"]},{name:"instruction$ebnf$5",symbols:["instruction$ebnf$5$subexpression$1"]},{name:"instruction$ebnf$5$subexpression$2$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$5$subexpression$2$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$5$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$5$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$5$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$5$subexpression$2$subexpression$1"]},{name:"instruction$ebnf$5",symbols:["instruction$ebnf$5","instruction$ebnf$5$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"instruction$ebnf$5","_","type","_","type","_","subInstruction"],postprocess:e=>{const a=e[1].map(e=>`"${e[1]+e[2]}"`);return`{ "prim": "${e[0]}", "args": [ ${e[3]}, ${e[5]}, ${e[7]} ], "annots": [${a}] }`}},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"_","subInstruction","_","subInstruction"],postprocess:e=>{const a=`${e[0].toString()}`;return d(a)?h(a,e[2],e[4]):`{ "prim": "${e[0]}", "args": [ [${e[2]}], [${e[4]}] ] }`}},{name:"instruction$ebnf$6$subexpression$1$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$6$subexpression$1$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$6$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$6$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$6$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$6$subexpression$1$subexpression$1"]},{name:"instruction$ebnf$6",symbols:["instruction$ebnf$6$subexpression$1"]},{name:"instruction$ebnf$6$subexpression$2$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$6$subexpression$2$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$6$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$6$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$6$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$6$subexpression$2$subexpression$1"]},{name:"instruction$ebnf$6",symbols:["instruction$ebnf$6","instruction$ebnf$6$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"instruction$ebnf$6","_","subInstruction","_","subInstruction"],postprocess:x},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"_","type","_","type"],postprocess:B},{name:"instruction$ebnf$7$subexpression$1$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$7$subexpression$1$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$7$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$7$subexpression$1$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$7$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$7$subexpression$1$subexpression$1"]},{name:"instruction$ebnf$7",symbols:["instruction$ebnf$7$subexpression$1"]},{name:"instruction$ebnf$7$subexpression$2$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$7$subexpression$2$subexpression$1",symbols:["storage"]},{name:"instruction$ebnf$7$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$7$subexpression$2$subexpression$1",symbols:[i.has("string")?{type:"string"}:string]},{name:"instruction$ebnf$7$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$7$subexpression$2$subexpression$1"]},{name:"instruction$ebnf$7",symbols:["instruction$ebnf$7","instruction$ebnf$7$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"instruction",symbols:[i.has("instruction")?{type:"instruction"}:instruction,"instruction$ebnf$7","_","type","_","type"],postprocess:x},{name:"instruction",symbols:[{literal:"PUSH"},"_","type","_","data"],postprocess:B},{name:"instruction$ebnf$8$subexpression$1$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$8$subexpression$1$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"instruction$ebnf$8$subexpression$1$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$8$subexpression$1",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$8$subexpression$1$subexpression$1"]},{name:"instruction$ebnf$8",symbols:["instruction$ebnf$8$subexpression$1"]},{name:"instruction$ebnf$8$subexpression$2$subexpression$1",symbols:[i.has("parameter")?{type:"parameter"}:parameter]},{name:"instruction$ebnf$8$subexpression$2$subexpression$1",symbols:[i.has("storage")?{type:"storage"}:storage]},{name:"instruction$ebnf$8$subexpression$2$subexpression$1",symbols:[i.has("word")?{type:"word"}:word]},{name:"instruction$ebnf$8$subexpression$2",symbols:["_",i.has("annot")?{type:"annot"}:annot,"instruction$ebnf$8$subexpression$2$subexpression$1"]},{name:"instruction$ebnf$8",symbols:["instruction$ebnf$8","instruction$ebnf$8$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"instruction",symbols:[{literal:"PUSH"},"instruction$ebnf$8","_","type","_","data"],postprocess:e=>{const a=e[1].map(e=>`"${e[1]+e[2]}"`);return`{ "prim": "PUSH", "args": [ ${e[3]}, ${e[5]} ], "annots": [${a}] }`}},{name:"instruction",symbols:[i.has("lbrace")?{type:"lbrace"}:lbrace,"_",i.has("rbrace")?{type:"rbrace"}:rbrace],postprocess:e=>""},{name:"data",symbols:[i.has("data")?{type:"data"}:data],postprocess:k},{name:"data",symbols:[i.has("data")?{type:"data"}:data,"_","data"],postprocess:w},{name:"data",symbols:[i.has("data")?{type:"data"}:data,"_","data","_","data"],postprocess:B},{name:"data",symbols:[i.has("lparen")?{type:"lparen"}:lparen,"_",i.has("data")?{type:"data"}:data,"_","data","_","data","_",i.has("rparen")?{type:"rparen"}:rparen],postprocess:C},{name:"data",symbols:["subData"],postprocess:a},{name:"data",symbols:["subElt"],postprocess:a},{name:"data",symbols:[i.has("number")?{type:"number"}:number],postprocess:y},{name:"data",symbols:[i.has("string")?{type:"string"}:string],postprocess:b},{name:"data",symbols:[i.has("word")?{type:"word"}:word],postprocess:b},{name:"subData$ebnf$1$subexpression$1",symbols:["data",{literal:";"},"_"]},{name:"subData$ebnf$1",symbols:["subData$ebnf$1$subexpression$1"]},{name:"subData$ebnf$1$subexpression$2",symbols:["data",{literal:";"},"_"]},{name:"subData$ebnf$1",symbols:["subData$ebnf$1","subData$ebnf$1$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subData",symbols:[{literal:"{"},"_","subData$ebnf$1",{literal:"}"}],postprocess:Q},{name:"subData$ebnf$2$subexpression$1",symbols:["data",{literal:";"},"_"]},{name:"subData$ebnf$2",symbols:["subData$ebnf$2$subexpression$1"]},{name:"subData$ebnf$2$subexpression$2",symbols:["data",{literal:";"},"_"]},{name:"subData$ebnf$2",symbols:["subData$ebnf$2","subData$ebnf$2$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subData",symbols:[{literal:"("},"_","subData$ebnf$2",{literal:")"}],postprocess:Q},{name:"subElt$ebnf$1$subexpression$1",symbols:["elt",{literal:";"},"_"]},{name:"subElt$ebnf$1",symbols:["subElt$ebnf$1$subexpression$1"]},{name:"subElt$ebnf$1$subexpression$2",symbols:["elt",{literal:";"},"_"]},{name:"subElt$ebnf$1",symbols:["subElt$ebnf$1","subElt$ebnf$1$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subElt",symbols:[{literal:"{"},"_","subElt$ebnf$1",{literal:"}"}],postprocess:Q},{name:"subElt$ebnf$2$subexpression$1",symbols:["elt",{literal:";"},"_"]},{name:"subElt$ebnf$2",symbols:["subElt$ebnf$2$subexpression$1"]},{name:"subElt$ebnf$2$subexpression$2",symbols:["elt",{literal:";"},"_"]},{name:"subElt$ebnf$2",symbols:["subElt$ebnf$2","subElt$ebnf$2$subexpression$2"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"subElt",symbols:[{literal:"("},"_","subElt$ebnf$2",{literal:")"}],postprocess:Q},{name:"elt",symbols:[i.has("elt")?{type:"elt"}:elt,"_","data","_","data"],postprocess:B},{name:"_$ebnf$1",symbols:[]},{name:"_$ebnf$1",symbols:["_$ebnf$1",/[\s]/],postprocess:function(e){return e[0].concat([e[1]])}},{name:"_",symbols:["_$ebnf$1"]},{name:"semicolons",symbols:[]},{name:"semicolons",symbols:["semicolons",{literal:";"}]}],ParserStart:"main"};void 0!==e.exports?e.exports=j:window.grammar=j}()},function(e,a,r){var i,t;i=this,t=function(){function e(a,r,i){return this.id=++e.highestId,this.name=a,this.symbols=r,this.postprocess=i,this}function a(e,a,r,i){this.rule=e,this.dot=a,this.reference=r,this.data=[],this.wantedBy=i,this.isComplete=this.dot===e.symbols.length}function r(e,a){this.grammar=e,this.index=a,this.states=[],this.wants={},this.scannable=[],this.completed={}}function i(e,a){this.rules=e,this.start=a||this.rules[0].name;var r=this.byName={};this.rules.forEach(function(e){r.hasOwnProperty(e.name)||(r[e.name]=[]),r[e.name].push(e)})}function t(){this.reset("")}function n(e,a,n){if(e instanceof i){var o=e;n=a}else o=i.fromCompiled(e,a);for(var s in this.grammar=o,this.options={keepHistory:!1,lexer:o.lexer||new t},n||{})this.options[s]=n[s];this.lexer=this.options.lexer,this.lexerState=void 0;var l=new r(o,0);this.table=[l];l.wants[o.start]=[],l.predict(o.start),l.process(),this.current=0}return e.highestId=0,e.prototype.toString=function(e){function a(e){return e.literal?JSON.stringify(e.literal):e.type?"%"+e.type:e.toString()}var r=void 0===e?this.symbols.map(a).join(" "):this.symbols.slice(0,e).map(a).join(" ")+" ● "+this.symbols.slice(e).map(a).join(" ");return this.name+" → "+r},a.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},a.prototype.nextState=function(e){var r=new a(this.rule,this.dot+1,this.reference,this.wantedBy);return r.left=this,r.right=e,r.isComplete&&(r.data=r.build()),r},a.prototype.build=function(){var e=[],a=this;do{e.push(a.right.data),a=a.left}while(a.left);return e.reverse(),e},a.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,n.fail))},r.prototype.process=function(e){for(var a=this.states,r=this.wants,i=this.completed,t=0;t0?this.tail.next=a:this.head=a,this.tail=a,++this.length},e.prototype.unshift=function(e){var a={data:e,next:this.head};0===this.length&&(this.tail=a),this.head=a,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var a=this.head,r=""+a.data;a=a.next;)r+=e+a.data;return r},e.prototype.concat=function(e){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var a,r,t,n=i.allocUnsafe(e>>>0),o=this.head,s=0;o;)a=o.data,r=n,t=s,a.copy(r,t),s+=o.data.length,o=o.next;return n},e}(),t&&t.inspect&&t.inspect.custom&&(e.exports.prototype[t.inspect.custom]=function(){var e=t.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,a){},function(e,a,r){(function(e){var i=void 0!==e&&e||"undefined"!=typeof self&&self||window,t=Function.prototype.apply;function n(e,a){this._id=e,this._clearFn=a}a.setTimeout=function(){return new n(t.call(setTimeout,i,arguments),clearTimeout)},a.setInterval=function(){return new n(t.call(setInterval,i,arguments),clearInterval)},a.clearTimeout=a.clearInterval=function(e){e&&e.close()},n.prototype.unref=n.prototype.ref=function(){},n.prototype.close=function(){this._clearFn.call(i,this._id)},a.enroll=function(e,a){clearTimeout(e._idleTimeoutId),e._idleTimeout=a},a.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},a._unrefActive=a.active=function(e){clearTimeout(e._idleTimeoutId);var a=e._idleTimeout;a>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},a))},r(103),a.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,a.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(6))},function(e,a,r){(function(e,a){!function(e,r){"use strict";if(!e.setImmediate){var i,t,n,o,s,l=1,c={},u=!1,d=e.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(e);h=h&&h.setTimeout?h:e,"[object process]"==={}.toString.call(e.process)?i=function(e){a.nextTick(function(){g(e)})}:!function(){if(e.postMessage&&!e.importScripts){var a=!0,r=e.onmessage;return e.onmessage=function(){a=!1},e.postMessage("","*"),e.onmessage=r,a}}()?e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){g(e.data)},i=function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(t=d.documentElement,i=function(e){var a=d.createElement("script");a.onreadystatechange=function(){g(e),a.onreadystatechange=null,t.removeChild(a),a=null},t.appendChild(a)}):i=function(e){setTimeout(g,0,e)}:(o="setImmediate$"+Math.random()+"$",s=function(a){a.source===e&&"string"==typeof a.data&&0===a.data.indexOf(o)&&g(+a.data.slice(o.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),i=function(a){e.postMessage(o+a,"*")}),h.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var a=new Array(arguments.length-1),r=0;r>>2}function u(e,a,r,i){return 0===e?a&r|~a&i:2===e?a&r|a&i|r&i:a^r^i}i(l,t),l.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},l.prototype._update=function(e){for(var a,r=this._w,i=0|this._a,t=0|this._b,n=0|this._c,s=0|this._d,l=0|this._e,d=0;d<16;++d)r[d]=e.readInt32BE(4*d);for(;d<80;++d)r[d]=r[d-3]^r[d-8]^r[d-14]^r[d-16];for(var h=0;h<80;++h){var A=~~(h/20),g=0|((a=i)<<5|a>>>27)+u(A,t,n,s)+l+r[h]+o[A];l=s,s=n,n=c(t),t=i,i=g}this._a=i+this._a|0,this._b=t+this._b|0,this._c=n+this._c|0,this._d=s+this._d|0,this._e=l+this._e|0},l.prototype._hash=function(){var e=n.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=l},function(e,a,r){var i=r(1),t=r(14),n=r(0).Buffer,o=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function l(){this.init(),this._w=s,t.call(this,64,56)}function c(e){return e<<5|e>>>27}function u(e){return e<<30|e>>>2}function d(e,a,r,i){return 0===e?a&r|~a&i:2===e?a&r|a&i|r&i:a^r^i}i(l,t),l.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},l.prototype._update=function(e){for(var a,r=this._w,i=0|this._a,t=0|this._b,n=0|this._c,s=0|this._d,l=0|this._e,h=0;h<16;++h)r[h]=e.readInt32BE(4*h);for(;h<80;++h)r[h]=(a=r[h-3]^r[h-8]^r[h-14]^r[h-16])<<1|a>>>31;for(var A=0;A<80;++A){var g=~~(A/20),p=c(i)+d(g,t,n,s)+l+r[A]+o[g]|0;l=s,s=n,n=u(t),t=i,i=p}this._a=i+this._a|0,this._b=t+this._b|0,this._c=n+this._c|0,this._d=s+this._d|0,this._e=l+this._e|0},l.prototype._hash=function(){var e=n.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=l},function(e,a,r){var i=r(1),t=r(54),n=r(14),o=r(0).Buffer,s=new Array(64);function l(){this.init(),this._w=s,n.call(this,64,56)}i(l,t),l.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},l.prototype._hash=function(){var e=o.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=l},function(e,a,r){var i=r(1),t=r(55),n=r(14),o=r(0).Buffer,s=new Array(160);function l(){this.init(),this._w=s,n.call(this,128,112)}i(l,t),l.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},l.prototype._hash=function(){var e=o.allocUnsafe(48);function a(a,r,i){e.writeInt32BE(a,i),e.writeInt32BE(r,i+4)}return a(this._ah,this._al,0),a(this._bh,this._bl,8),a(this._ch,this._cl,16),a(this._dh,this._dl,24),a(this._eh,this._el,32),a(this._fh,this._fl,40),e},e.exports=l},function(e,a,r){"use strict";var i=r(115),t=r(0).Buffer;e.exports=function(e){function a(a){var r=a.slice(0,-4),i=a.slice(-4),t=e(r);if(!(i[0]^t[0]|i[1]^t[1]|i[2]^t[2]|i[3]^t[3]))return r}return{encode:function(a){var r=e(a);return i.encode(t.concat([a,r],a.length+4))},decode:function(e){var r=a(i.decode(e));if(!r)throw new Error("Invalid checksum");return r},decodeUnsafe:function(e){var r=i.decodeUnsafe(e);if(r)return a(r)}}}},function(e,a,r){var i=r(116);e.exports=i("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},function(e,a,r){var i=r(0).Buffer;e.exports=function(e){for(var a={},r=e.length,t=e.charAt(0),n=0;n>=8;for(;c>0;)n.push(255&c),c>>=8}for(var u=0;e[u]===t&&u0;)i.push(s%r),s=s/r|0}for(var l="",c=0;0===a[c]&&c=0;--u)l+=e[i[u]];return l},decodeUnsafe:s,decode:function(e){var a=s(e);if(a)return a;throw new Error("Non-base"+r+" character")}}}},function(e,a,r){"use strict";var i=r(118);e.exports={create:function(e){return new i(e)}}},function(e,a,r){"use strict";var i={characters:"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"},t=Number.MAX_SAFE_INTEGER||7378697629483821e4;function n(e){var a=e||{};if(a.max&&a.length)throw new Error("cannot specify both max and length");for(var r in i)a.hasOwnProperty(r)||(a[r]=i[r]);this.characters=a.characters,this.base=a.base||a.characters.length,this.length=a.length||this._findLength(a.max)}n.prototype._findLength=function(e){var a=this.base,r=1;if(!e)return null;for(;a<=e;)r++,a*=this.base;return r},n.prototype._pad=function(e){for(var a=e;this.length&&a.lengththis.length)throw new RangeError("base10 value of "+e+" (encoded: "+n+") exceeds maximum length of "+this.length);return n},n.prototype.decode=function(e){var a=e.length,r=0,i=0,n=Array.from(this.characters).reduce((e,a)=>e+a.length,0)/this.characters.length,o=e+"";for(a=e.length-n;a>-1;){var s,l=o.substring(a,a+n),c=this.characters.indexOf(l);if(-1===(s=i>0?Math.pow(this.base,i)*c:c))throw new Error("unknown "+l+" character encountered");r+=s,i++,a-=n}if(r>=t)throw new RangeError("decoded value exceeds Number.MAX_SAFE_INTEGER");return r},e.exports=n},function(e,a,r){var i=r(120),t=r(121);e.exports={blake2b:i.blake2b,blake2bHex:i.blake2bHex,blake2bInit:i.blake2bInit,blake2bUpdate:i.blake2bUpdate,blake2bFinal:i.blake2bFinal,blake2s:t.blake2s,blake2sHex:t.blake2sHex,blake2sInit:t.blake2sInit,blake2sUpdate:t.blake2sUpdate,blake2sFinal:t.blake2sFinal}},function(e,a,r){var i=r(56);function t(e,a,r){var i=e[a]+e[r],t=e[a+1]+e[r+1];i>=4294967296&&t++,e[a]=i,e[a+1]=t}function n(e,a,r,i){var t=e[a]+r;r<0&&(t+=4294967296);var n=e[a+1]+i;t>=4294967296&&n++,e[a]=t,e[a+1]=n}function o(e,a){return e[a]^e[a+1]<<8^e[a+2]<<16^e[a+3]<<24}function s(e,a,r,i,o,s){var l=d[o],c=d[o+1],h=d[s],A=d[s+1];t(u,e,a),n(u,e,l,c);var g=u[i]^u[e],p=u[i+1]^u[e+1];u[i]=p,u[i+1]=g,t(u,r,i),g=u[a]^u[r],p=u[a+1]^u[r+1],u[a]=g>>>24^p<<8,u[a+1]=p>>>24^g<<8,t(u,e,a),n(u,e,h,A),g=u[i]^u[e],p=u[i+1]^u[e+1],u[i]=g>>>16^p<<16,u[i+1]=p>>>16^g<<16,t(u,r,i),g=u[a]^u[r],p=u[a+1]^u[r+1],u[a]=p>>>31^g<<1,u[a+1]=g>>>31^p<<1}var l=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),c=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3].map(function(e){return 2*e})),u=new Uint32Array(32),d=new Uint32Array(32);function h(e,a){var r=0;for(r=0;r<16;r++)u[r]=e.h[r],u[r+16]=l[r];for(u[24]=u[24]^e.t,u[25]=u[25]^e.t/4294967296,a&&(u[28]=~u[28],u[29]=~u[29]),r=0;r<32;r++)d[r]=o(e.b,4*r);for(r=0;r<12;r++)s(0,8,16,24,c[16*r+0],c[16*r+1]),s(2,10,18,26,c[16*r+2],c[16*r+3]),s(4,12,20,28,c[16*r+4],c[16*r+5]),s(6,14,22,30,c[16*r+6],c[16*r+7]),s(0,10,20,30,c[16*r+8],c[16*r+9]),s(2,12,22,24,c[16*r+10],c[16*r+11]),s(4,14,16,26,c[16*r+12],c[16*r+13]),s(6,8,18,28,c[16*r+14],c[16*r+15]);for(r=0;r<16;r++)e.h[r]=e.h[r]^u[r]^u[r+16]}function A(e,a){if(0===e||e>64)throw new Error("Illegal output length, expected 0 < length <= 64");if(a&&a.length>64)throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");for(var r={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:e},i=0;i<16;i++)r.h[i]=l[i];var t=a?a.length:0;return r.h[0]^=16842752^t<<8^e,a&&(g(r,a),r.c=128),r}function g(e,a){for(var r=0;r>2]>>8*(3&r);return a}function m(e,a,r){r=r||64,e=i.normalizeInput(e);var t=A(r,a);return g(t,e),p(t)}e.exports={blake2b:m,blake2bHex:function(e,a,r){var t=m(e,a,r);return i.toHex(t)},blake2bInit:A,blake2bUpdate:g,blake2bFinal:p}},function(e,a,r){var i=r(56);function t(e,a){return e[a]^e[a+1]<<8^e[a+2]<<16^e[a+3]<<24}function n(e,a,r,i,t,n){c[e]=c[e]+c[a]+t,c[i]=o(c[i]^c[e],16),c[r]=c[r]+c[i],c[a]=o(c[a]^c[r],12),c[e]=c[e]+c[a]+n,c[i]=o(c[i]^c[e],8),c[r]=c[r]+c[i],c[a]=o(c[a]^c[r],7)}function o(e,a){return e>>>a^e<<32-a}var s=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),l=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),c=new Uint32Array(16),u=new Uint32Array(16);function d(e,a){var r=0;for(r=0;r<8;r++)c[r]=e.h[r],c[r+8]=s[r];for(c[12]^=e.t,c[13]^=e.t/4294967296,a&&(c[14]=~c[14]),r=0;r<16;r++)u[r]=t(e.b,4*r);for(r=0;r<10;r++)n(0,4,8,12,u[l[16*r+0]],u[l[16*r+1]]),n(1,5,9,13,u[l[16*r+2]],u[l[16*r+3]]),n(2,6,10,14,u[l[16*r+4]],u[l[16*r+5]]),n(3,7,11,15,u[l[16*r+6]],u[l[16*r+7]]),n(0,5,10,15,u[l[16*r+8]],u[l[16*r+9]]),n(1,6,11,12,u[l[16*r+10]],u[l[16*r+11]]),n(2,7,8,13,u[l[16*r+12]],u[l[16*r+13]]),n(3,4,9,14,u[l[16*r+14]],u[l[16*r+15]]);for(r=0;r<8;r++)e.h[r]^=c[r]^c[r+8]}function h(e,a){if(!(e>0&&e<=32))throw new Error("Incorrect output length, should be in [1, 32]");var r=a?a.length:0;if(a&&!(r>0&&r<=32))throw new Error("Incorrect key length, should be in [1, 32]");var i={h:new Uint32Array(s),b:new Uint32Array(64),c:0,t:0,outlen:e};return i.h[0]^=16842752^r<<8^e,r>0&&(A(i,a),i.c=64),i}function A(e,a){for(var r=0;r>2]>>8*(3&r)&255;return a}function p(e,a,r){r=r||32,e=i.normalizeInput(e);var t=h(r,a);return A(t,e),g(t)}e.exports={blake2s:p,blake2sHex:function(e,a,r){var t=p(e,a,r);return i.toHex(t)},blake2sInit:h,blake2sUpdate:A,blake2sFinal:g}},function(e,a,r){var i,t,n,o,s,l;t=r(123),n=r(36),s=r(125),i=r(126),o=function(){return(new Date).getTime()},l=function(e,a){var r,l,c,u,d,h,A,g,p,m,f;for(null==a&&(a=[]),m=o(),p=[],c=0,u=a.length;cA;i=0<=A?++l:--l)for(t=c=g=i,p=n;g<=p?cp;t=g<=p?++c:--c)u.slice(i,+t+1||9e9)in h&&(d=h[m=u.slice(i,+t+1||9e9)],s.push({pattern:"dictionary",i:i,j:t,token:e.slice(i,+t+1||9e9),matched_word:m,rank:d,dictionary_name:r,reversed:!1,l33t:!1}));return this.sorted(s)},reverse_dictionary_match:function(e,a){var r,i,t,n,s,l;for(null==a&&(a=o),l=e.split("").reverse().join(""),n=0,r=(t=this.dictionary_match(l,a)).length;n0&&(d[t]=l);return d},enumerate_l33t_subs:function(e){var a,r,i,t,n,o,s,l,c,u,d,h,A,g,p;for(n=function(){var a;for(t in a=[],e)a.push(t);return a}(),p=[[]],r=function(e){var a,r,i,n,o,s,l,c;for(r=[],o={},s=0,n=e.length;sm;o=0<=m?++A:--A)if(y[o][0]===s){t=o;break}-1===t?(k=y.concat([[s,n]]),u.push(k)):((b=y.slice(0)).splice(t,1),b.push([s,n]),u.push(y),u.push(b))}return p=r(u),i(f)}})(n),g=[],c=0,s=p.length;c "+k);return e}().join(", "),d.push(c)}return this.sorted(d.filter(function(e){return e.token.length>1}))},spatial_match:function(e,a){var r,i,n;for(i in null==a&&(a=t),n=[],a)r=a[i],this.extend(n,this.spatial_match_helper(e,r,i));return this.sorted(n)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/,spatial_match_helper:function(e,a,r){var i,t,n,o,s,l,c,u,d,h,A,g,p,m;for(A=[],c=0;c2&&A.push({pattern:"spatial",i:c,j:u-1,token:e.slice(c,u),graph:r,turns:m,shifted_count:p}),c=u;break}u+=1}return A},repeat_match:function(e){var a,r,i,t,n,o,s,l,c,u,d,h,A,p,m;for(p=[],n=/(.+)\1+/g,u=/(.+?)\1+/g,d=/^(.+?)\1+$/,c=0;ch[0].length?(A=o,t=d.exec(A[0])[1]):t=(A=h)[1],s=(m=[A.index,A.index+A[0].length-1])[0],l=m[1],i=(a=g.most_guessable_match_sequence(t,this.omnimatch(t))).sequence,r=a.guesses,p.push({pattern:"repeat",i:s,j:l,token:A[0],base_token:t,base_guesses:r,base_matches:i,repeat_count:A[0].length/t.length}),c=l+1;return p},MAX_DELTA:5,sequence_match:function(e){var a,r,i,t,n,o,s,l,c,u;if(1===e.length)return[];for(u=this,c=function(a,r,i){var t,n,o,s;if((r-a>1||1===Math.abs(i))&&0<(t=Math.abs(i))&&t<=u.MAX_DELTA)return s=e.slice(a,+r+1||9e9),/^[a-z]+$/.test(s)?(n="lower",o=26):/^[A-Z]+$/.test(s)?(n="upper",o=26):/^\d+$/.test(s)?(n="digits",o=10):(n="unicode",o=26),l.push({pattern:"sequence",i:a,j:r,token:e.slice(a,+r+1||9e9),sequence_name:n,sequence_space:o,ascending:i>0})},l=[],r=0,n=null,t=o=1,s=e.length;1<=s?os;t=1<=s?++o:--o)a=e.charCodeAt(t)-e.charCodeAt(t-1),null==n&&(n=a),a!==n&&(c(r,i=t-1,n),r=i,n=a);return c(r,e.length-1,n),l},regex_match:function(e,a){var r,i,t,n;for(A in null==a&&(a=s),r=[],a)for((i=a[A]).lastIndex=0;t=i.exec(e);)n=t[0],r.push({pattern:"regex",token:n,i:t.index,j:t.index+t[0].length-1,regex_name:A,regex_match:t});return this.sorted(r)},date_match:function(e){var a,r,t,n,o,s,l,c,u,d,h,A,p,m,f,y,b,k,w,v,I,_,B,C,E,Q,x,j,z,D,S,M,q,F;for(A=[],p=/^\d{4,8}$/,m=/^(\d{1,4})([\s\/\\_.-])(\d{1,2})\2(\d{1,4})$/,s=b=0,I=e.length-4;0<=I?b<=I:b>=I;s=0<=I?++b:--b)for(l=k=_=s+3,B=s+7;(_<=B?k<=B:k>=B)&&!(l>=e.length);l=_<=B?++k:--k)if(F=e.slice(s,+l+1||9e9),p.exec(F)){for(t=[],w=0,d=(C=i[F.length]).length;w0){for(a=t[0],y=(f=function(e){return Math.abs(e.year-g.REFERENCE_YEAR)})(t[0]),v=0,h=(Q=t.slice(1)).length;v=j;s=0<=j?++M:--M)for(l=q=z=s+5,D=s+9;(z<=D?q<=D:q>=D)&&!(l>=e.length);l=z<=D?++q:--q)F=e.slice(s,+l+1||9e9),null!=(S=m.exec(F))&&null!=(o=this.map_ints_to_dmy([parseInt(S[1]),parseInt(S[3]),parseInt(S[4])]))&&A.push({pattern:"date",token:F,i:s,j:l,separator:S[2],year:o.year,month:o.month,day:o.day});return this.sorted(A.filter(function(e){var a,r,i,t;for(a=!1,t=0,r=A.length;t=e.j){a=!0;break}return!a}))},map_ints_to_dmy:function(e){var a,r,i,t,n,o,s,l,c,u,d,h,A,g,p,m;if(!(e[1]>31||e[1]<=0)){for(s=0,l=0,p=0,o=0,i=e.length;o2050)return;r>31&&(l+=1),r>12&&(s+=1),r<=0&&(p+=1)}if(!(l>=2||3===s||p>=2)){for(c=0,t=(u=[[e[2],e.slice(0,2)],[e[0],e.slice(1,3)]]).length;c99?e:e>50?e+1900:e+2e3}},e.exports=h},function(e,a){var r;r={passwords:"123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy".split(","),english_wikipedia:"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator".split(","),female_names:"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn".split(","),surnames:"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette".split(","),us_tv_and_film:"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right".split(","),male_names:"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso".split(",")},e.exports=r},function(e,a){var r;r={estimate_attack_times:function(e){var a,r,i,t;for(i in a={},r={online_throttling_100_per_hour:e/(100/3600),online_no_throttling_10_per_second:e/10,offline_slow_hashing_1e4_per_second:e/1e4,offline_fast_hashing_1e10_per_second:e/1e10})t=r[i],a[i]=this.display_time(t);return{crack_times_seconds:r,crack_times_display:a,score:this.guesses_to_score(e)}},guesses_to_score:function(e){return 5,e<1005?0:e<1e6+5?1:e<1e8+5?2:e<1e10+5?3:4},display_time:function(e){var a,r,i,t;return 60,3600,86400,2678400,32140800,321408e4,i=(t=e<1?[null,"less than a second"]:e<60?[a=Math.round(e),a+" second"]:e<3600?[a=Math.round(e/60),a+" minute"]:e<86400?[a=Math.round(e/3600),a+" hour"]:e<2678400?[a=Math.round(e/86400),a+" day"]:e<32140800?[a=Math.round(e/2678400),a+" month"]:e<321408e4?[a=Math.round(e/32140800),a+" year"]:[null,"centuries"])[1],null!=(r=t[0])&&1!==r&&(i+="s"),i}},e.exports=r},function(e,a,r){var i,t;t=r(36),i={default_feedback:{warning:"",suggestions:["Use a few words, avoid common phrases","No need for symbols, digits, or uppercase letters"]},get_feedback:function(e,a){var r,t,n,o,s,l;if(0===a.length)return this.default_feedback;if(e>2)return{warning:"",suggestions:[]};for(o=a[0],t=0,n=(l=a.slice(1)).length;to.token.length&&(o=s);return r="Add another word or two. Uncommon words are better.",null!=(i=this.get_match_feedback(o,1===a.length))?(i.suggestions.unshift(r),null==i.warning&&(i.warning="")):i={warning:"",suggestions:[r]},i},get_match_feedback:function(e,a){switch(e.pattern){case"dictionary":return this.get_dictionary_match_feedback(e,a);case"spatial":return e.graph.toUpperCase(),{warning:1===e.turns?"Straight rows of keys are easy to guess":"Short keyboard patterns are easy to guess",suggestions:["Use a longer keyboard pattern with more turns"]};case"repeat":return{warning:1===e.base_token.length?'Repeats like "aaa" are easy to guess':'Repeats like "abcabcabc" are only slightly harder to guess than "abc"',suggestions:["Avoid repeated words and characters"]};case"sequence":return{warning:"Sequences like abc or 6543 are easy to guess",suggestions:["Avoid sequences"]};case"regex":if("recent_year"===e.regex_name)return{warning:"Recent years are easy to guess",suggestions:["Avoid recent years","Avoid years that are associated with you"]};break;case"date":return{warning:"Dates are often easy to guess",suggestions:["Avoid dates and years that are associated with you"]}}},get_dictionary_match_feedback:function(e,a){var r,i,n,o;return n="passwords"===e.dictionary_name?!a||e.l33t||e.reversed?e.guesses_log10<=4?"This is similar to a commonly used password":void 0:e.rank<=10?"This is a top-10 common password":e.rank<=100?"This is a top-100 common password":"This is a very common password":"english_wikipedia"===e.dictionary_name?a?"A word by itself is easy to guess":void 0:"surnames"===(r=e.dictionary_name)||"male_names"===r||"female_names"===r?a?"Names and surnames by themselves are easy to guess":"Common names and surnames are easy to guess":"",i=[],(o=e.token).match(t.START_UPPER)?i.push("Capitalization doesn't help very much"):o.match(t.ALL_UPPER)&&o.toLowerCase()!==o&&i.push("All-uppercase is almost as easy to guess as all-lowercase"),e.reversed&&e.token.length>=4&&i.push("Reversed words aren't much harder to guess"),e.l33t&&i.push("Predictable substitutions like '@' instead of 'a' don't help very much"),{warning:n,suggestions:i}}},e.exports=i},function(e,a,r){const i=r(128),t=async e=>(await i.ready,i.randombytes_buf(e));e.exports={salt:async()=>t(i.crypto_pwhash_SALTBYTES),nonce:async()=>t(i.crypto_box_NONCEBYTES),keys:async e=>(await i.ready,i.crypto_sign_seed_keypair(e,"")),pwhash:async(e,a)=>(await i.ready,i.crypto_pwhash(i.crypto_box_SEEDBYTES,e,a,4,33554432,i.crypto_pwhash_ALG_ARGON2I13)),close:async(e,a,r)=>(await i.ready,i.crypto_secretbox_easy(e,a,r)),open:async(e,a)=>{await i.ready;const r=e.slice(0,i.crypto_secretbox_NONCEBYTES),t=e.slice(i.crypto_secretbox_NONCEBYTES);return i.crypto_secretbox_open_easy(t,r,a)},sign:async(e,a)=>(await i.ready,i.crypto_sign_detached(e,a))}},function(e,a,r){var i,t,n;!function(o){var s="object"==typeof o.sodium&&"function"==typeof o.sodium.onload?o.sodium.onload:null;t=[a,r(129)],void 0!==(n="function"==typeof(i=function(e,a){"use strict";var r,i="uint8array",t=a.ready.then(function(){function i(){if(0!==r._sodium_init())throw new Error("libsodium was not correctly initialized.");for(var a=["crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_generichash","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha512","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],i=[v,I,_,B,C,E,Q,x,j,z,D,S,M,q,F,U,R,H,N,G,Y,J,P,L,T,K,$,O,X,V,W,Z,ee,ae,re,ie,te,ne,oe,se,le,ce,ue,de,he,Ae,ge,pe,me,fe,ye,be,ke,we,ve,Ie,_e,Be,Ce,Ee,Qe,xe,je,ze,De,Se,Me,qe,Fe,Ue,Re,He,Ne,Ge,Ye,Je,Pe,Le,Te,Ke,$e,Oe,Xe,Ve,We,Ze,ea,aa,ra,ia,ta,na,oa,sa,la,ca,ua,da,ha,Aa,ga,pa,ma,fa,ya,ba,ka,wa,va,Ia,_a,Ba,Ca],t=0;t=240?(c=4,s=!0):u>=224?(c=3,s=!0):u>=192?(c=2,s=!0):u<128&&(c=1,s=!0)}while(!s);for(var d=c-(n.length-l),h=0;h>8&-39)<<8|87+(a=e[n]>>>4)+(a-10>>8&-39),t+=String.fromCharCode(255&i)+String.fromCharCode(i>>>8);return t}var l={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function c(e){if(null==e)return l.URLSAFE_NO_PADDING;if(e!==l.ORIGINAL&&e!==l.ORIGINAL_NO_PADDING&&e!==l.URLSAFE&&e!=l.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return e}function u(e,a){a=c(a),e=w(t,e,"input");var i,t=[],n=0|Math.floor(e.length/3),s=e.length-3*n,l=4*n+(0!==s?0==(2&a)?4:2+(s>>>1):0),u=new g(l+1),d=p(e);return t.push(d),t.push(u.address),0===r._sodium_bin2base64(u.address,u.length,d,e.length,a)&&y(t,"conversion failed"),u.length=l,i=o(u.to_Uint8Array()),f(t),i}function d(e,a){var r=a||i;if(!h(r))throw new Error(r+" output format is not available");if(e instanceof g){if("uint8array"===r)return e.to_Uint8Array();if("text"===r)return o(e.to_Uint8Array());if("hex"===r)return s(e.to_Uint8Array());if("base64"===r)return u(e.to_Uint8Array(),l.URLSAFE_NO_PADDING);throw new Error('What is output format "'+r+'"?')}if("object"==typeof e){for(var t=Object.keys(e),n={},c=0;c>>0;return f([]),a}function Ia(e,a){var i=[];A(a);for(var t=r._malloc(24),n=0;n<6;n++)r.setValue(t+4*n,r.Runtime.addFunction(e[["implementation_name","random","stir","uniform","buf","close"][n]]),"i32");0!=(0|r._randombytes_set_implementation(t))&&y(i,"unsupported implementation"),f(i)}function _a(e){A(e),r._randombytes_stir()}function Ba(e,a){var i=[];A(a),k(i,e,"upper_bound"),("number"!=typeof e||(0|e)!==e||e<0)&&b(i,"upper_bound must be an unsigned integer");var t=r._randombytes_uniform(e)>>>0;return f(i),t}function Ca(){var e=r._sodium_version_string(),a=r.Pointer_stringify(e);return f([]),a}return g.prototype.to_Uint8Array=function(){var e=new Uint8Array(this.length);return e.set(r.HEAPU8.subarray(this.address,this.address+this.length)),e},e.add=function(e,a){if(!(e instanceof Uint8Array&&a instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can added");var r=e.length,i=0,t=0;if(a.length!=e.length)throw new TypeError("Arguments must have the same length");for(t=0;t>=8,i+=e[t]+a[r],e[t]=255&i},e.base64_variants=l,e.compare=function(e,a){if(!(e instanceof Uint8Array&&a instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(e.length!==a.length)throw new TypeError("Only instances of identical length can be compared");for(var r=0,i=1,t=e.length;t-- >0;)r|=a[t]-e[t]>>8&i,i&=(a[t]^e[t])-1>>8;return r+r+i-1},e.from_base64=function(e,a){a=c(a);var i,t=[],n=new g(3*(e=w(t,e,"input")).length/4),o=p(e),s=m(4),l=m(4);return t.push(o),t.push(n.address),t.push(n.result_bin_len_p),t.push(n.b64_end_p),0!==r._sodium_base642bin(n.address,n.length,o,e.length,0,s,l,a)&&y(t,"invalid input"),r.getValue(l,"i32")-o!==e.length&&y(t,"incomplete input"),n.length=r.getValue(s,"i32"),i=n.to_Uint8Array(),f(t),i},e.from_hex=function(e){var a,i=[],t=new g((e=w(i,e,"input")).length/2),n=p(e),o=m(4);return i.push(n),i.push(t.address),i.push(t.hex_end_p),0!==r._sodium_hex2bin(t.address,t.length,n,e.length,0,0,o)&&y(i,"invalid input"),r.getValue(o,"i32")-n!==e.length&&y(i,"incomplete input"),a=t.to_Uint8Array(),f(i),a},e.from_string=n,e.increment=function(e){if(!(e instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be incremented");for(var a=256,r=0,i=e.length;r>=8,a+=e[r],e[r]=255&a},e.is_zero=function(e){if(!(e instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be checked");for(var a=0,r=0,i=e.length;r 0");var i,t=[],n=m(4),o=1,s=0,l=0|e.length,c=new g(l+a);t.push(n),t.push(c.address);for(var u=c.address,d=c.address+l+a;u>>48|l>>>32|l>>>16|l))-1>>16);return 0!==r._sodium_pad(n,c.address,e.length,a,c.length)&&y(t,"internal error"),c.length=r.getValue(n,"i32"),i=c.to_Uint8Array(),f(t),i},e.unpad=function(e,a){if(!(e instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((a|=0)<=0)throw new Error("block size must be > 0");var i=[],t=p(e),n=m(4);return i.push(t),i.push(n),0!==r._sodium_unpad(n,t,e.length,a)&&y(i,"unsupported/invalid padding"),e=(e=new Uint8Array(e)).subarray(0,r.getValue(n,"i32")),f(i),e},e.ready=t,e.symbols=function(){return Object.keys(e).sort()},e.to_base64=u,e.to_hex=s,e.to_string=o,e})?i.apply(a,t):i)&&(e.exports=n),s&&o.sodium.ready.then(function(){s(o.sodium)})}(this)},function(e,a,r){(function(i,t,n,o){var s,l,c;!function(u){l=[a],void 0===(c="function"==typeof(s=function(a){"use strict";var s;void 0===(s=a)&&(s={});var l=s;"object"!=typeof l.sodium&&("object"==typeof i?l=i:"object"==typeof window&&(l=window)),"object"==typeof l.sodium&&"number"==typeof l.sodium.totalMemory&&(s.TOTAL_MEMORY=l.sodium.totalMemory);var c=s;return s.ready=new Promise(function(a,i){(l=c).onAbort=i,l.onRuntimeInitialized=function(){try{l._crypto_secretbox_keybytes(),a()}catch(e){i(e)}},l.useBackupModule=function(){var a=c;Object.keys(a).forEach(function(e){"getRandomValue"!==e&&delete a[e]}),a=void 0!==a?a:{};var i,s={};for(i in a)a.hasOwnProperty(i)&&(s[i]=a[i]);a.arguments=[],a.thisProgram="./this.program",a.quit=function(e,a){throw a},a.preRun=[],a.postRun=[];var l,u,d,h=!1;l="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof t&&!l&&!u,d=!l&&!h&&!u;var A,g,p="";h?(p=n+"/",a.read=function(e,a){var i;return(i=ue(e))||(A||(A=r(58)),g||(g=r(59)),e=g.normalize(e),i=A.readFileSync(e)),a?i:i.toString()},a.readBinary=function(e){var r=a.read(e,!0);return r.buffer||(r=new Uint8Array(r)),v(r.buffer),r},t.argv.length>1&&(a.thisProgram=t.argv[1].replace(/\\/g,"/")),a.arguments=t.argv.slice(2),e.exports=a,t.on("uncaughtException",function(e){if(!(e instanceof be))throw e}),t.on("unhandledRejection",we),a.quit=function(e){t.exit(e)},a.inspect=function(){return"[Emscripten Module object]"}):d?("undefined"!=typeof read&&(a.read=function(e){var a=ue(e);return a?le(a):read(e)}),a.readBinary=function(e){var a;return(a=ue(e))?a:"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(v("object"==typeof(a=read(e,"binary"))),a)},"undefined"!=typeof scriptArgs?a.arguments=scriptArgs:void 0!==arguments&&(a.arguments=arguments),"function"==typeof quit&&(a.quit=function(e){quit(e)})):(l||u)&&(u?p=self.location.href:document.currentScript&&(p=document.currentScript.src),p=0!==p.indexOf("blob:")?p.substr(0,p.lastIndexOf("/")+1):"",a.read=function(e){try{var a=new XMLHttpRequest;return a.open("GET",e,!1),a.send(null),a.responseText}catch(a){var r=ue(e);if(r)return le(r);throw a}},u&&(a.readBinary=function(e){try{var a=new XMLHttpRequest;return a.open("GET",e,!1),a.responseType="arraybuffer",a.send(null),new Uint8Array(a.response)}catch(a){var r=ue(e);if(r)return r;throw a}}),a.readAsync=function(e,a,r){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=function(){if(200==i.status||0==i.status&&i.response)a(i.response);else{var t=ue(e);t?a(t.buffer):r()}},i.onerror=r,i.send(null)},a.setWindowTitle=function(e){document.title=e});var m=a.print||("undefined"!=typeof console?void 0:"undefined"!=typeof print?print:null),f=a.printErr||("undefined"!=typeof printErr?printErr:m);for(i in s)s.hasOwnProperty(i)&&(a[i]=s[i]);s=void 0;var y=16;function b(e,a){return a||(a=y),Math.ceil(e/a)*a}new Array(8);var k=0,w=!1;function v(e,a){e||we("Assertion failed: "+a)}function I(e,a){if(0===a||!e)return"";for(var r,i=0,t=0;i|=r=C[e+t>>0],(0!=r||a)&&(t++,!a||t!=a););a||(a=t);var n="";if(i<128){for(var o;a>0;)o=String.fromCharCode.apply(String,C.subarray(e,e+Math.min(a,1024))),n=n?n+o:o,e+=1024,a-=1024;return n}return function(e){return function(e,a){for(var r=a;e[r];)++r;if(r-a>16&&e.subarray&&U)return U.decode(e.subarray(a,r));for(var i,t,n,o,s,l="";;){if(!(i=e[a++]))return l;if(128&i)if(t=63&e[a++],192!=(224&i))if(n=63&e[a++],224==(240&i)?i=(15&i)<<12|t<<6|n:(o=63&e[a++],240==(248&i)?i=(7&i)<<18|t<<12|n<<6|o:(s=63&e[a++],i=248==(252&i)?(3&i)<<24|t<<18|n<<12|o<<6|s:(1&i)<<30|t<<24|n<<18|o<<12|s<<6|63&e[a++])),i<65536)l+=String.fromCharCode(i);else{var c=i-65536;l+=String.fromCharCode(55296|c>>10,56320|1023&c)}else l+=String.fromCharCode((31&i)<<6|t);else l+=String.fromCharCode(i)}}(C,e)}(e)}var _,B,C,E,Q,x,j,z,D,S,M,q,F,U="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function R(e,a){return e%a>0&&(e+=a-e%a),e}function H(){a.HEAP8=B=new Int8Array(_),a.HEAP16=E=new Int16Array(_),a.HEAP32=Q=new Int32Array(_),a.HEAPU8=C=new Uint8Array(_),a.HEAPU16=new Uint16Array(_),a.HEAPU32=new Uint32Array(_),a.HEAPF32=x=new Float32Array(_),a.HEAPF64=j=new Float64Array(_)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le"),z=0,a.reallocBuffer||(a.reallocBuffer=function(e){var a;try{var r=B;a=new ArrayBuffer(e),new Int8Array(a).set(r)}catch(e){return!1}return!!Ae(a)&&a});try{(F=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch(a){F=function(e){return e.byteLength}}var N=a.TOTAL_STACK||5242880,G=a.TOTAL_MEMORY||16777216;function Y(e){for(;e.length>0;){var r=e.shift();if("function"!=typeof r){var i=r.func;"number"==typeof i?void 0===r.arg?a.dynCall_v(i):a.dynCall_vi(i,r.arg):i(void 0===r.arg?null:r.arg)}else r()}}G>>0};t(),a.getRandomValue=t}catch(e){try{var n=r(60),o=function(){var e=n.randomBytes(4);return(e[0]<<24|e[1]<<16|e[2]<<8|e[3])>>>0};o(),a.getRandomValue=o}catch(e){throw"No secure random number generator found"}}}];z=35880,P.push(),ae="data:application/octet-stream;base64,AAAAAAAAAAC2eFn/hXLTAL1uFf8PCmoAKcABAJjoef+8PKD/mXHO/wC34v60DUj/AAAAAAAAAACwoA7+08mG/54YjwB/aTUAYAy9AKfX+/+fTID+amXh/x78BACSDK4AAAAAAAAAAABZ8bL+CuWm/3vdKv4eFNQAUoADADDR8wB3eUD/MuOc/wBuxQFnG5AAAAAAAAAAAACFO4wBvfEk//glwwFg3DcAt0w+/8NCPQAyTKQB4aRM/0w9o/91Ph8AUZFA/3ZBDgCic9b/BoouAHzm9P8Kio8ANBrCALj0TACBjykBvvQT/3uqev9igUQAedWTAFZlHv+hZ5sAjFlD/+/lvgFDC7UAxvCJ/u5FvP9Dl+4AEyps/+VVcQEyRIf/EWoJADJnAf9QAagBI5ge/xCouQE4Wej/ZdL8ACn6RwDMqk//Di7v/1BN7wC91kv/EY35ACZQTP++VXUAVuSqAJzY0AHDz6T/lkJM/6/hEP+NUGIBTNvyAMaicgAu2pgAmyvx/pugaP8zu6UAAhGvAEJUoAH3Oh4AI0E1/kXsvwAthvUBo3vdACBuFP80F6UAutZHAOmwYADy7zYBOVmKAFMAVP+IoGQAXI54/mh8vgC1sT7/+ilVAJiCKgFg/PYAl5c//u+FPgAgOJwALae9/46FswGDVtMAu7OW/vqqDv/So04AJTSXAGNNGgDunNX/1cDRAUkuVAAUQSkBNs5PAMmDkv6qbxj/sSEy/qsmy/9O93QA0d2ZAIWAsgE6LBkAySc7Ab0T/AAx5dIBdbt1ALWzuAEActsAMF6TAPUpOAB9Dcz+9K13ACzdIP5U6hQA+aDGAex+6v8vY6j+quKZ/2az2ADijXr/ekKZ/rb1hgDj5BkB1jnr/9itOP+159IAd4Cd/4FfiP9ufjMAAqm3/weCYv5FsF7/dATjAdnykf/KrR8BaQEn/y6vRQDkLzr/1+BF/s84Rf8Q/ov/F8/U/8oUfv9f1WD/CbAhAMgFz//xKoD+IyHA//jlxAGBEXgA+2eX/wc0cP+MOEL/KOL1/9lGJf6s1gn/SEOGAZLA1v8sJnAARLhL/85a+wCV640Atao6AHT07wBcnQIAZq1iAOmJYAF/McsABZuUABeUCf/TegwAIoYa/9vMiACGCCn/4FMr/lUZ9wBtfwD+qYgwAO532//nrdUAzhL+/gi6B/9+CQcBbypIAG807P5gP40Ak79//s1OwP8Oau0Bu9tMAK/zu/5pWa0AVRlZAaLzlAACdtH+IZ4JAIujLv9dRigAbCqO/m/8jv+b35AAM+Wn/0n8m/9edAz/mKDa/5zuJf+z6s//xQCz/5qkjQDhxGgACiMZ/tHU8v9h/d7+uGXlAN4SfwGkiIf/Hs+M/pJh8wCBwBr+yVQh/28KTv+TUbL/BAQYAKHu1/8GjSEANdcO/ym10P/ni50As8vd//+5cQC94qz/cULW/8o+Lf9mQAj/Tq4Q/oV1RP+FO4wBvfEk//glwwFg3DcAt0w+/8NCPQAyTKQB4aRM/0w9o/91Ph8AUZFA/3ZBDgCic9b/BoouAHzm9P8Kio8ANBrCALj0TACBjykBvvQT/3uqev9igUQAedWTAFZlHv+hZ5sAjFlD/+/lvgFDC7UAxvCJ/u5FvP/qcTz/Jf85/0Wytv6A0LMAdhp9/gMH1v/xMk3/VcvF/9OH+v8ZMGT/u9W0/hFYaQBT0Z4BBXNiAASuPP6rN27/2bUR/xS8qgCSnGb+V9au/3J6mwHpLKoAfwjvAdbs6gCvBdsAMWo9/wZC0P8Cam7/UeoT/9drwP9Dl+4AEyps/+VVcQEyRIf/EWoJADJnAf9QAagBI5ge/xCouQE4Wej/ZdL8ACn6RwDMqk//Di7v/1BN7wC91kv/EY35ACZQTP++VXUAVuSqAJzY0AHDz6T/lkJM/6/hEP+NUGIBTNvyAMaicgAu2pgAmyvx/pugaP+yCfz+ZG7UAA4FpwDp76P/HJedAWWSCv/+nkb+R/nkAFgeMgBEOqD/vxhoAYFCgf/AMlX/CLOK/yb6yQBzUKAAg+ZxAH1YkwBaRMcA/UyeABz/dgBx+v4AQksuAObaKwDleLoBlEQrAIh87gG7a8X/VDX2/zN0/v8zu6UAAhGvAEJUoAH3Oh4AI0E1/kXsvwAthvUBo3vdACBuFP80F6UAutZHAOmwYADy7zYBOVmKAFMAVP+IoGQAXI54/mh8vgC1sT7/+ilVAJiCKgFg/PYAl5c//u+FPgAgOJwALae9/46FswGDVtMAu7OW/vqqDv9EcRX/3ro7/0IH8QFFBkgAVpxs/jenWQBtNNv+DbAX/8Qsav/vlUf/pIx9/5+tAQAzKecAkT4hAIpvXQG5U0UAkHMuAGGXEP8Y5BoAMdniAHFL6v7BmQz/tjBg/w4NGgCAw/n+RcE7AIQlUf59ajwA1vCpAaTjQgDSo04AJTSXAGNNGgDunNX/1cDRAUkuVAAUQSkBNs5PAMmDkv6qbxj/sSEy/qsmy/9O93QA0d2ZAIWAsgE6LBkAySc7Ab0T/AAx5dIBdbt1ALWzuAEActsAMF6TAPUpOAB9Dcz+9K13ACzdIP5U6hQA+aDGAex+6v+PPt0AgVnW/zeLBf5EFL//DsyyASPD2QAvM84BJvalAM4bBv6eVyQA2TSS/3171/9VPB//qw0HANr1WP78IzwAN9ag/4VlOADgIBP+k0DqABqRogFydn0A+Pz6AGVexP/GjeL+Myq2AIcMCf5trNL/xezCAfFBmgAwnC//mUM3/9qlIv5KtLMA2kJHAVh6YwDUtdv/XCrn/+8AmgD1Tbf/XlGqARLV2ACrXUcANF74ABKXof7F0UL/rvQP/qIwtwAxPfD+tl3DAMfkBgHIBRH/iS3t/2yUBABaT+3/Jz9N/zVSzwGOFnb/ZegSAVwaQwAFyFj/IaiK/5XhSAAC0Rv/LPWoAdztEf8e02n+je7dAIBQ9f5v/g4A3l++Ad8J8QCSTNT/bM1o/z91mQCQRTAAI+RvAMAhwf9w1r7+c5iXABdmWAAzSvgA4seP/syiZf/QYb0B9WgSAOb2Hv8XlEUAblg0/uK1Wf/QL1r+cqFQ/yF0+ACzmFf/RZCxAVjuGv86IHEBAU1FADt5NP+Y7lMANAjBAOcn6f/HIooA3kStAFs58v7c0n//wAf2/pcjuwDD7KUAb13OANT3hQGahdH/m+cKAEBOJgB6+WQBHhNh/z5b+QH4hU0AxT+o/nQKUgC47HH+1MvC/z1k/P4kBcr/d1uZ/4FPHQBnZ6v+7ddv/9g1RQDv8BcAwpXd/ybh3gDo/7T+dlKF/znRsQGL6IUAnrAu/sJzLgBY9+UBHGe/AN3er/6V6ywAl+QZ/tppZwCOVdIAlYG+/9VBXv51huD/UsZ1AJ3d3ACjZSQAxXIlAGispv4LtgAAUUi8/2G8EP9FBgoAx5OR/wgJcwFB1q//2a3RAFB/pgD35QT+p7d8/1oczP6vO/D/Cyn4AWwoM/+QscP+lvp+AIpbQQF4PN7/9cHvAB3Wvf+AAhkAUJqiAE3cawHqzUr/NqZn/3RICQDkXi//HsgZ/yPWWf89sIz/U+Kj/0uCrACAJhEAX4mY/9d8nwFPXQAAlFKd/sOC+/8oykz/+37gAJ1jPv7PB+H/YETDAIy6nf+DE+f/KoD+ADTbPf5my0gAjQcL/7qk1QAfencAhfKRAND86P9b1bb/jwT6/vnXSgClHm8BqwnfAOV7IgFcghr/TZstAcOLHP874E4AiBH3AGx5IABP+r3/YOP8/ibxPgA+rn3/m29d/wrmzgFhxSj/ADE5/kH6DQAS+5b/3G3S/wWupv4sgb0A6yOT/yX3jf9IjQT/Z2v/APdaBAA1LCoAAh7wAAQ7PwBYTiQAcae0AL5Hwf/HnqT/OgisAE0hDABBPwMAmU0h/6z+ZgHk3QT/Vx7+AZIpVv+KzO/+bI0R/7vyhwDS0H8ARC0O/klgPgBRPBj/qgYk/wP5GgAj1W0AFoE2/xUj4f/qPTj/OtkGAI98WADsfkIA0Sa3/yLuBv+ukWYAXxbTAMQPmf4uVOj/dSKSAef6Sv8bhmQBXLvD/6rGcAB4HCoA0UZDAB1RHwAdqGQBqa2gAGsjdQA+YDv/UQxFAYfvvv/c/BIAo9w6/4mJvP9TZm0AYAZMAOre0v+5rs0BPJ7V/w3x1gCsgYwAXWjyAMCc+wArdR4A4VGeAH/o2gDiHMsA6RuX/3UrBf/yDi//IRQGAIn7LP4bH/X/t9Z9/ih5lQC6ntX/WQjjAEVYAP7Lh+EAya7LAJNHuAASeSn+XgVOAODW8P4kBbQA+4fnAaOK1ADS+XT+WIG7ABMIMf4+DpD/n0zTANYzUgBtdeT+Z9/L/0v8DwGaR9z/Fw1bAY2oYP+1toUA+jM3AOrq1P6vP54AJ/A0AZ69JP/VKFUBILT3/xNmGgFUGGH/RRXeAJSLev/c1esB6Mv/AHk5kwDjB5oANRaTAUgB4QBShjD+Uzyd/5FIqQAiZ+8AxukvAHQTBP+4agn/t4FTACSw5gEiZ0gA26KGAPUqngAglWD+pSyQAMrvSP7XlgUAKkIkAYTXrwBWrlb/GsWc/zHoh/5ntlIA/YCwAZmyegD1+goA7BiyAIlqhAAoHSkAMh6Y/3xpJgDmv0sAjyuqACyDFP8sDRf/7f+bAZ9tZP9wtRj/aNxsADfTgwBjDNX/mJeR/+4FnwBhmwgAIWxRAAEDZwA+bSL/+pu0ACBHw/8mRpEBn1/1AEXlZQGIHPAAT+AZAE5uef/4qHwAu4D3AAKT6/5PC4QARjoMAbUIo/9PiYX/JaoL/43zVf+w59f/zJak/+/XJ/8uV5z+CKNY/6wi6ABCLGb/GzYp/uxjV/8pe6kBNHIrAHWGKACbhhoA589b/iOEJv8TZn3+JOOF/3YDcf8dDXwAmGBKAViSzv+nv9z+ohJY/7ZkFwAfdTQAUS5qAQwCBwBFUMkB0fasAAwwjQHg01gAdOKfAHpiggBB7OoB4eIJ/8/iewFZ1jsAcIdYAVr0y/8xCyYBgWy6AFlwDwFlLsz/f8wt/k//3f8zSRL/fypl//EVygCg4wcAaTLsAE80xf9oytABtA8QAGXFTv9iTcsAKbnxASPBfAAjmxf/zzXAAAt9owH5nrn/BIMwABVdb/89eecBRcgk/7kwuf9v7hX/JzIZ/2PXo/9X1B7/pJMF/4AGIwFs327/wkyyAEpltADzLzAArhkr/1Kt/QE2csD/KDdbANdssP8LOAcA4OlMANFiyv7yGX0ALMFd/ssIsQCHsBMAcEfV/847sAEEQxoADo/V/io30P88Q3gAwRWjAGOkcwAKFHYAnNTe/qAH2f9y9UwBdTt7ALDCVv7VD7AATs7P/tWBOwDp+xYBYDeY/+z/D//FWVT/XZWFAK6gcQDqY6n/mHRYAJCkU/9fHcb/Ii8P/2N4hv8F7MEA+fd+/5O7HgAy5nX/bNnb/6NRpv9IGan+m3lP/xybWf4HfhEAk0EhAS/q/QAaMxIAaVPH/6PE5gBx+KQA4v7aAL3Ry/+k997+/yOlAAS88wF/s0cAJe3+/2S68AAFOUf+Z0hJ//QSUf7l0oT/7ga0/wvlrv/j3cABETEcAKPXxP4JdgT/M/BHAHGBbf9M8OcAvLF/AH1HLAEar/MAXqkZ/hvmHQAPi3cBqKq6/6zFTP/8S7wAiXzEAEgWYP8tl/kB3JFkAEDAn/947+IAgbKSAADAfQDriuoAt52SAFPHwP+4rEj/SeGAAE0G+v+6QUMAaPbPALwgiv/aGPIAQ4pR/u2Bef8Uz5YBKccQ/wYUgACfdgUAtRCP/9wmDwAXQJP+SRoNAFfkOQHMfIAAKxjfANtjxwAWSxT/Ext+AJ0+1wBuHeYAs6f/ATb8vgDdzLb+s55B/1GdAwDC2p8Aqt8AAOALIP8mxWIAqKQlABdYBwGkum4AYCSGAOry5QD6eRMA8v5w/wMvXgEJ7wb/UYaZ/tb9qP9DfOAA9V9KABweLP4Bbdz/sllZAPwkTAAYxi7/TE1vAIbqiP8nXh0AuUjq/0ZEh//nZgf+TeeMAKcvOgGUYXb/EBvhAabOj/9ustb/tIOiAI+N4QEN2k7/cpkhAWJozACvcnUBp85LAMrEUwE6QEMAii9vAcT3gP+J4OD+nnDPAJpk/wGGJWsAxoBP/3/Rm/+j/rn+PA7zAB/bcP4d2UEAyA10/ns8xP/gO7j+8lnEAHsQS/6VEM4ARf4wAed03//RoEEByFBiACXCuP6UPyIAi/BB/9mQhP84Ji3+x3jSAGyxpv+g3gQA3H53/qVroP9S3PgB8a+IAJCNF/+pilQAoIlO/+J2UP80G4T/P2CL/5j6JwC8mw8A6DOW/igP6P/w5Qn/ia8b/0tJYQHa1AsAhwWiAWu51QAC+Wv/KPJGANvIGQAZnQ0AQ1JQ/8T5F/+RFJUAMkiSAF5MlAEY+0EAH8AXALjUyf976aIB961IAKJX2/5+hlkAnwsM/qZpHQBJG+QBcXi3/0KjbQHUjwv/n+eoAf+AWgA5Djr+WTQK//0IowEAkdL/CoFVAS61GwBniKD+frzR/yIjbwDX2xj/1AvW/mUFdgDoxYX/36dt/+1QVv9Gi14AnsG/AZsPM/8PvnMATofP//kKGwG1fekAX6wN/qrVof8n7Ir/X11X/76AXwB9D84AppafAOMPnv/Onnj/Ko2AAGWyeAGcbYMA2g4s/veozv/UcBwAcBHk/1oQJQHF3mwA/s9T/wla8//z9KwAGlhz/810egC/5sEAtGQLAdklYP+aTpwA6+of/86ysv+VwPsAtvqHAPYWaQB8wW3/AtKV/6kRqgAAYG7/dQkIATJ7KP/BvWMAIuOgADBQRv7TM+wALXr1/iyuCACtJen/nkGrAHpF1/9aUAL/g2pg/uNyhwDNMXf+sD5A/1IzEf/xFPP/gg0I/oDZ8/+iGwH+WnbxAPbG9v83EHb/yJ+dAKMRAQCMa3kAVaF2/yYAlQCcL+4ACaamAUtitf8yShkAQg8vAIvhnwBMA47/Du64AAvPNf+3wLoBqyCu/79M3QH3qtsAGawy/tkJ6QDLfkT/t1wwAH+ntwFBMf4AED9/Af4Vqv874H/+FjA//xtOgv4owx0A+oRw/iPLkABoqagAz/0e/2goJv5e5FgAzhCA/9Q3ev/fFuoA38V/AP21tQGRZnYA7Jkk/9TZSP8UJhj+ij4+AJiMBADm3GP/ARXU/5TJ5wD0ewn+AKvSADM6Jf8B/w7/9LeR/gDypgAWSoQAedgpAF/Dcv6FGJf/nOLn//cFTf/2lHP+4VxR/95Q9v6qe1n/SseNAB0UCP+KiEb/XUtcAN2TMf40fuIA5XwXAC4JtQDNQDQBg/4cAJee1ACDQE4AzhmrAADmiwC//W7+Z/enAEAoKAEqpfH/O0vk/nzzvf/EXLL/goxW/41ZOAGTxgX/y/ie/pCijQALrOIAgioV/wGnj/+QJCT/MFik/qiq3ABiR9YAW9BPAJ9MyQGmKtb/Rf8A/waAff++AYwAklPa/9fuSAF6fzUAvXSl/1QIQv/WA9D/1W6FAMOoLAGe50UAokDI/ls6aAC2Orv++eSIAMuGTP5j3ekAS/7W/lBFmgBAmPj+7IjK/51pmf6VrxQAFiMT/3x56QC6+sb+hOWLAIlQrv+lfUQAkMqU/uvv+ACHuHYAZV4R/3pIRv5FgpIAf974AUV/dv8eUtf+vEoT/+Wnwv51GUL/Qeo4/tUWnACXO13+LRwb/7p+pP8gBu8Af3JjAds0Av9jYKb+Pr5+/2zeqAFL4q4A5uLHADx12v/8+BQB1rzMAB/Chv57RcD/qa0k/jdiWwDfKmb+iQFmAJ1aGQDvekD//AbpAAc2FP9SdK4AhyU2/w+6fQDjcK//ZLTh/yrt9P/0reL++BIhAKtjlv9K6zL/dVIg/mqo7QDPbdAB5Am6AIc8qf6zXI8A9Kpo/+stfP9GY7oAdYm3AOAf1wAoCWQAGhBfAUTZVwAIlxT/GmQ6/7ClywE0dkYAByD+/vT+9f+nkML/fXEX/7B5tQCIVNEAigYe/1kwHAAhmw7/GfCaAI3NbQFGcz7/FChr/oqax/9e3+L/nasmAKOxGf4tdgP/Dt4XAdG+Uf92e+gBDdVl/3s3e/4b9qUAMmNM/4zWIP9hQUP/GAwcAK5WTgFA92AAoIdDAEI38/+TzGD/GgYh/2IzUwGZ1dD/Arg2/xnaCwAxQ/b+EpVI/w0ZSAAqT9YAKgQmARuLkP+VuxcAEqSEAPVUuP54xmj/ftpgADh16v8NHdb+RC8K/6eahP6YJsYAQrJZ/8guq/8NY1P/0rv9/6otKgGK0XwA1qKNAAzmnABmJHD+A5NDADTXe//pqzb/Yok+APfaJ//n2uwA979/AMOSVAClsFz/E9Re/xFK4wBYKJkBxpMB/85D9f7wA9r/PY3V/2G3agDD6Ov+X1aaANEwzf520fH/8HjfAdUdnwCjf5P/DdpdAFUYRP5GFFD/vQWMAVJh/v9jY7//hFSF/2vadP9wei4AaREgAMKgP/9E3icB2P1cALFpzf+VycMAKuEL/yiicwAJB1EApdrbALQWAP4dkvz/ks/hAbSHYAAfo3AAsQvb/4UMwf4rTjIAQXF5ATvZBv9uXhgBcKxvAAcPYAAkVXsAR5YV/9BJvADAC6cB1fUiAAnmXACijif/11obAGJhWQBeT9MAWp3wAF/cfgFmsOIAJB7g/iMffwDn6HMBVVOCANJJ9f8vj3L/REHFADtIPv+3ha3+XXl2/zuxUf/qRa3/zYCxANz0MwAa9NEBSd5N/6MIYP6WldMAnv7LATZ/iwCh4DsABG0W/94qLf/Qkmb/7I67ADLN9f8KSln+ME+OAN5Mgv8epj8A7AwN/zG49AC7cWYA2mX9AJk5tv4glioAGcaSAe3xOACMRAUAW6Ss/06Ruv5DNM0A28+BAW1zEQA2jzoBFfh4/7P/HgDB7EL/Af8H//3AMP8TRdkBA9YA/0BlkgHffSP/60mz//mn4gDhrwoBYaI6AGpwqwFUrAX/hYyy/4b1jgBhWn3/usu5/99NF//AXGoAD8Zz/9mY+ACrsnj/5IY1ALA2wQH6+zUA1QpkASLHagCXH/T+rOBX/w7tF//9VRr/fyd0/6xoZAD7Dkb/1NCK//3T+gCwMaUAD0x7/yXaoP9chxABCn5y/0YF4P/3+Y0ARBQ8AfHSvf/D2bsBlwNxAJdcrgDnPrL/27fhABcXIf/NtVAAObj4/0O0Af9ae13/JwCi/2D4NP9UQowAIn/k/8KKBwGmbrwAFRGbAZq+xv/WUDv/EgePAEgd4gHH2fkA6KFHAZW+yQDZr1/+cZND/4qPx/9/zAEAHbZTAc7mm/+6zDwACn1V/+hgGf//Wff/1f6vAejBUQAcK5z+DEUIAJMY+AASxjEAhjwjAHb2Ev8xWP7+5BW6/7ZBcAHbFgH/Fn40/701Mf9wGY8AJn83/+Jlo/7QhT3/iUWuAb52kf88Ytv/2Q31//qICgBU/uIAyR99AfAz+/8fg4L/Aooy/9fXsQHfDO7//JU4/3xbRP9Ifqr+d/9kAIKH6P8OT7IA+oPFAIrG0AB52Iv+dxIk/x3BegAQKi3/1fDrAea+qf/GI+T+bq1IANbd8f84lIcAwHVO/o1dz/+PQZUAFRJi/18s9AFqv00A/lUI/tZusP9JrRP+oMTH/+1akADBrHH/yJuI/uRa3QCJMUoBpN3X/9G9Bf9p7Df/Kh+BAcH/7AAu2TwAili7/+JS7P9RRZf/jr4QAQ2GCAB/ejD/UUCcAKvziwDtI/YAeo/B/tR6kgBfKf8BV4RNAATUHwARH04AJy2t/hiO2f9fCQb/41MGAGI7gv4+HiEACHPTAaJhgP8HuBf+dByo//iKl/9i9PAAunaCAHL46/9prcgBoHxH/14kpAGvQZL/7vGq/srGxQDkR4r+LfZt/8I0ngCFu7AAU/ya/lm93f+qSfwAlDp9ACREM/4qRbH/qExW/yZkzP8mNSMArxNhAOHu/f9RUYcA0hv//utJawAIz3MAUn+IAFRjFf7PE4gAZKRlAFDQTf+Ez+3/DwMP/yGmbgCcX1X/JblvAZZqI/+ml0wAcleH/5/CQAAMeh//6Adl/q13YgCaR9z+vzk1/6jooP/gIGP/2pylAJeZowDZDZQBxXFZAJUcof7PFx4AaYTj/zbmXv+Frcz/XLed/1iQ/P5mIVoAn2EDALXam//wcncAatY1/6W+cwGYW+H/WGos/9A9cQCXNHwAvxuc/2427AEOHqb/J3/PAeXHHAC85Lz+ZJ3rAPbatwFrFsH/zqBfAEzvkwDPoXUAM6YC/zR1Cv5JOOP/mMHhAIReiP9lv9EAIGvl/8YrtAFk0nYAckOZ/xdYGv9ZmlwB3HiM/5Byz//8c/r/Is5IAIqFf/8IsnwBV0thAA/lXP7wQ4P/dnvj/pJ4aP+R1f8BgbtG/9t3NgABE60ALZaUAfhTSADL6akBjms4APf5JgEt8lD/HulnAGBSRgAXyW8AUSce/6G3Tv/C6iH/ROOM/tjOdABGG+v/aJBPAKTmXf7Wh5wAmrvy/rwUg/8kba4An3DxAAVulQEkpdoAph0TAbIuSQBdKyD++L3tAGabjQDJXcP/8Yv9/w9vYv9sQaP+m0++/0muwf72KDD/a1gL/sphVf/9zBL/cfJCAG6gwv7QEroAURU8ALxop/98pmH+0oWOADjyif4pb4IAb5c6AW/Vjf+3rPH/JgbE/7kHe/8uC/YA9Wl3AQ8Cof8Izi3/EspK/1N8cwHUjZ0AUwjR/osP6P+sNq3+MveEANa91QCQuGkA3/74AP+T8P8XvEgABzM2ALwZtP7ctAD/U6AUAKO98/860cL/V0k8AGoYMQD1+dwAFq2nAHYLw/8Tfu0Abp8l/ztSLwC0u1YAvJTQAWQlhf8HcMEAgbyc/1Rqgf+F4coADuxv/ygUZQCsrDH+MzZK//u5uP9dm+D/tPngAeaykgBIOTb+sj64AHfNSAC57/3/PQ/aAMRDOP/qIKsBLtvkANBs6v8UP+j/pTXHAYXkBf80zWsASu6M/5ac2/7vrLL/+73f/iCO0//aD4oB8cRQABwkYv4W6scAPe3c//Y5JQCOEY7/nT4aACvuX/4D2Qb/1RnwASfcrv+azTD+Ew3A//QiNv6MEJsA8LUF/pvBPACmgAT/JJE4/5bw2wB4M5EAUpkqAYzskgBrXPgBvQoDAD+I8gDTJxgAE8qhAa0buv/SzO/+KdGi/7b+n/+sdDQAw2fe/s1FOwA1FikB2jDCAFDS8gDSvM8Au6Gh/tgRAQCI4XEA+rg/AN8eYv5NqKIAOzWvABPJCv+L4MIAk8Ga/9S9DP4ByK7/MoVxAV6zWgCttocAXrFxACtZ1/+I/Gr/e4ZT/gX1Qv9SMScB3ALgAGGBsQBNO1kAPR2bAcur3P9cTosAkSG1/6kYjQE3lrMAizxQ/9onYQACk2v/PPhIAK3mLwEGU7b/EGmi/onUUf+0uIYBJ96k/91p+wHvcH0APwdhAD9o4/+UOgwAWjzg/1TU/ABP16gA+N3HAXN5AQAkrHgAIKK7/zlrMf+TKhUAasYrATlKVwB+y1H/gYfDAIwfsQDdi8IAA97XAINE5wCxVrL+fJe0ALh8JgFGoxEA+fu1ASo34wDioSwAF+xuADOVjgFdBewA2rdq/kMYTQAo9dH/3nmZAKU5HgBTfTwARiZSAeUGvABt3p3/N3Y//82XugDjIZX//rD2AeOx4wAiaqP+sCtPAGpfTgG58Xr/uQ49ACQBygANsqL/9wuEAKHmXAFBAbn/1DKlAY2SQP+e8toAFaR9ANWLegFDR1cAy56yAZdcKwCYbwX/JwPv/9n/+v+wP0f/SvVNAfquEv8iMeP/9i77/5ojMAF9nT3/aiRO/2HsmQCIu3j/cYar/xPV2f7YXtH//AU9AF4DygADGrf/QL8r/x4XFQCBjU3/ZngHAcJMjAC8rzT/EVGUAOhWNwHhMKwAhioq/+4yLwCpEv4AFJNX/w7D7/9F9xcA7uWA/7ExcACoYvv/eUf4APMIkf7245n/26mx/vuLpf8Mo7n/pCir/5mfG/7zbVv/3hhwARLW5wBrnbX+w5MA/8JjaP9ZjL7/sUJ+/mq5QgAx2h8A/K6eALxP5gHuKeAA1OoIAYgLtQCmdVP/RMNeAC6EyQDwmFgApDlF/qDgKv8710P/d8ON/yS0ef7PLwj/rtLfAGXFRP//Uo0B+onpAGFWhQEQUEUAhIOfAHRdZAAtjYsAmKyd/1orWwBHmS4AJxBw/9mIYf/cxhn+sTUxAN5Yhv+ADzwAz8Cp/8B00f9qTtMByNW3/wcMev7eyzz/IW7H/vtqdQDk4QQBeDoH/93BVP5whRsAvcjJ/4uHlgDqN7D/PTJBAJhsqf/cVQH/cIfjAKIaugDPYLn+9IhrAF2ZMgHGYZcAbgtW/491rv9z1MgABcq3AO2kCv657z4A7HgS/mJ7Y/+oycL+LurWAL+FMf9jqXcAvrsjAXMVLf/5g0gAcAZ7/9Yxtf6m6SIAXMVm/v3kzf8DO8kBKmIuANslI/+pwyYAXnzBAZwr3wBfSIX+eM6/AHrF7/+xu0///i4CAfqnvgBUgRMAy3Gm//kfvf5Incr/0EdJ/88YSAAKEBIB0lFM/1jQwP9+82v/7o14/8d56v+JDDv/JNx7/5SzPP7wDB0AQgBhASQeJv9zAV3/YGfn/8WeOwHApPAAyso5/xiuMABZTZsBKkzXAPSX6QAXMFEA7380/uOCJf/4dF0BfIR2AK3+wAEG61P/bq/nAfsctgCB+V3+VLiAAEy1PgCvgLoAZDWI/m0d4gDd6ToBFGNKAAAWoACGDRUACTQ3/xFZjACvIjsAVKV3/+Di6v8HSKb/e3P/ARLW9gD6B0cB2dy5ANQjTP8mfa8AvWHSAHLuLP8pvKn+LbqaAFFcFgCEoMEAedBi/w1RLP/LnFIARzoV/9Byv/4yJpMAmtjDAGUZEgA8+tf/6YTr/2evjgEQDlwAjR9u/u7xLf+Z2e8BYagv//lVEAEcrz7/Of42AN7nfgCmLXX+Er1g/+RMMgDI9F4Axph4AUQiRf8MQaD+ZRNaAKfFeP9ENrn/Kdq8AHGoMABYab0BGlIg/7ldpAHk8O3/QrY1AKvFXP9rCekBx3iQ/04xCv9tqmn/WgQf/xz0cf9KOgsAPtz2/3mayP6Q0rL/fjmBASv6Dv9lbxwBL1bx/z1Glv81SQX/HhqeANEaVgCK7UoApF+8AI48Hf6idPj/u6+gAJcSEADRb0H+y4Yn/1hsMf+DGkf/3RvX/mhpXf8f7B/+hwDT/49/bgHUSeUA6UOn/sMB0P+EEd3/M9laAEPrMv/f0o8AszWCAelqxgDZrdz/cOUY/6+aXf5Hy/b/MEKF/wOI5v8X3XH+62/VAKp4X/773QIALYKe/mle2f/yNLT+1UQt/2gmHAD0nkwAochg/881Df+7Q5QAqjb4AHeisv9TFAsAKirAAZKfo/+36G8ATeUV/0c1jwAbTCIA9ogv/9sntv9c4MkBE44O/0W28f+jdvUACW1qAaq19/9OL+7/VNKw/9VriwAnJgsASBWWAEiCRQDNTZv+joUVAEdvrP7iKjv/swDXASGA8QDq/A0BuE8IAG4eSf/2jb0Aqs/aAUqaRf+K9jH/myBkAH1Kaf9aVT3/I+Wx/z59wf+ZVrwBSXjUANF79v6H0Sb/lzosAVxF1v8ODFj//Jmm//3PcP88TlP/43xuALRg/P81dSH+pNxS/ykBG/8mpKb/pGOp/j2QRv/AphIAa/pCAMVBMgABsxL//2gB/yuZI/9Qb6gAbq+oAClpLf/bDs3/pOmM/isBdgDpQ8MAslKf/4pXev/U7lr/kCN8/hmMpAD71yz+hUZr/2XjUP5cqTcA1yoxAHK0Vf8h6BsBrNUZAD6we/4ghRj/4b8+AF1GmQC1KmgBFr/g/8jIjP/56iUAlTmNAMM40P/+gkb/IK3w/x3cxwBuZHP/hOX5AOTp3/8l2NH+srHR/7ctpf7gYXIAiWGo/+HerAClDTEB0uvM//wEHP5GoJcA6L40/lP4Xf8+100Br6+z/6AyQgB5MNAAP6nR/wDSyADguywBSaJSAAmwj/8TTMH/HTunARgrmgAcvr4AjbyBAOjry//qAG3/NkGfADxY6P95/Zb+/OmD/8ZuKQFTTUf/yBY7/mr98v8VDM//7UK9AFrGygHhrH8ANRbKADjmhAABVrcAbb4qAPNErgFt5JoAyLF6ASOgt/+xMFX/Wtqp//iYTgDK/m4ABjQrAI5iQf8/kRYARmpdAOiKawFusz3/04HaAfLRXAAjWtkBto9q/3Rl2f9y+t3/rcwGADyWowBJrCz/725Q/+1Mmf6hjPkAlejlAIUfKP+upHcAcTPWAIHkAv5AIvMAa+P0/65qyP9UmUYBMiMQAPpK2P7svUL/mfkNAOayBP/dKe4AduN5/15XjP7+d1wASe/2/nVXgAAT05H/sS78AOVb9gFFgPf/yk02AQgLCf+ZYKYA2dat/4bAAgEAzwAAva5rAYyGZACewfMBtmarAOuaMwCOBXv/PKhZAdkOXP8T1gUB06f+ACwGyv54Euz/D3G4/7jfiwAosXf+tnta/7ClsAD3TcIAG+p4AOcA1v87Jx4AfWOR/5ZERAGN3vgAmXvS/25/mP/lIdYBh93FAIlhAgAMj8z/USm8AHNPgv9eA4QAmK+7/3yNCv9+wLP/C2fGAJUGLQDbVbsB5hKy/0i2mAADxrj/gHDgAWGh5gD+Yyb/Op/FAJdC2wA7RY//uXD5AHeIL/97goQAqEdf/3GwKAHoua0Az111AUSdbP9mBZP+MWEhAFlBb/73HqP/fNndAWb62ADGrkv+OTcSAOMF7AHl1a0AyW3aATHp7wAeN54BGbJqAJtvvAFefowA1x/uAU3wEADV8hkBJkeoAM26Xf4x04z/2wC0/4Z2pQCgk4b/broj/8bzKgDzkncAhuujAQTxh//BLsH+Z7RP/+EEuP7ydoIAkoewAepvHgBFQtX+KWB7AHleKv+yv8P/LoIqAHVUCP/pMdb+7nptAAZHWQHs03sA9A0w/neUDgByHFb/S+0Z/5HlEP6BZDX/hpZ4/qidMgAXSGj/4DEOAP97Fv+XuZf/qlC4AYa2FAApZGUBmSEQAEyabwFWzur/wKCk/qV7Xf8B2KT+QxGv/6kLO/+eKT3/SbwO/8MGif8Wkx3/FGcD//aC4/96KIAA4i8Y/iMkIACYurf/RcoUAMOFwwDeM/cAqateAbcAoP9AzRIBnFMP/8U6+f77WW7/MgpY/jMr2ABi8sYB9ZdxAKvswgHFH8f/5VEmASk7FAD9aOYAmF0O//bykv7WqfD/8GZs/qCn7ACa2rwAlunK/xsT+gECR4X/rww/AZG3xgBoeHP/gvv3ABHUp/8+e4T/92S9AJvfmACPxSEAmzss/5Zd8AF/A1f/X0fPAadVAf+8mHT/ChcXAInDXQE2YmEA8ACo/5S8fwCGa5cATP2rAFqEwACSFjYA4EI2/ua65f8ntsQAlPuC/0GDbP6AAaAAqTGn/sf+lP/7BoMAu/6B/1VSPgCyFzr//oQFAKTVJwCG/JL+JTVR/5uGUgDNp+7/Xi20/4QooQD+b3ABNkvZALPm3QHrXr//F/MwAcqRy/8ndir/dY39AP4A3gAr+zIANqnqAVBE0ACUy/P+kQeHAAb+AAD8uX8AYgiB/yYjSP/TJNwBKBpZAKhAxf4D3u//AlPX/rSfaQA6c8IAunRq/+X32/+BdsEAyq63AaahSADJa5P+7YhKAOnmagFpb6gAQOAeAQHlAwBml6//wu7k//761AC77XkAQ/tgAcUeCwC3X8wAzVmKAEDdJQH/3x7/sjDT//HIWv+n0WD/OYLdAC5yyP89uEIAN7YY/m62IQCrvuj/cl4fABLdCAAv5/4A/3BTAHYP1/+tGSj+wMEf/+4Vkv+rwXb/Zeo1/oPUcABZwGsBCNAbALXZD//nlegAjOx+AJAJx/8MT7X+k7bK/xNttv8x1OEASqPLAK/plAAacDMAwcEJ/w+H+QCW44IAzADbARjyzQDu0HX/FvRwABrlIgAlULz/Ji3O/vBa4f8dAy//KuBMALrzpwAghA//BTN9AIuHGAAG8dsArOWF//bWMgDnC8//v35TAbSjqv/1OBgBsqTT/wMQygFiOXb/jYNZ/iEzGADzlVv//TQOACOpQ/4xHlj/sxsk/6WMtwA6vZcAWB8AAEupQgBCZcf/GNjHAXnEGv8OT8v+8OJR/14cCv9TwfD/zMGD/14PVgDaKJ0AM8HRAADysQBmufcAnm10ACaHWwDfr5UA3EIB/1Y86AAZYCX/4XqiAde7qP+enS4AOKuiAOjwZQF6FgkAMwkV/zUZ7v/ZHuj+famUAA3oZgCUCSUApWGNAeSDKQDeD/P//hIRAAY87QFqA3EAO4S9AFxwHgBp0NUAMFSz/7t55/4b2G3/ot1r/knvw//6Hzn/lYdZ/7kXcwEDo53/EnD6ABk5u/+hYKQALxDzAAyN+/5D6rj/KRKhAK8GYP+grDT+GLC3/8bBVQF8eYn/lzJy/9zLPP/P7wUBACZr/zfuXv5GmF4A1dxNAXgRRf9VpL7/y+pRACYxJf49kHwAiU4x/qj3MABfpPwAaamHAP3khgBApksAUUkU/8/SCgDqapb/XiJa//6fOf7chWMAi5O0/hgXuQApOR7/vWFMAEG73//grCX/Ij5fAeeQ8ABNan7+QJhbAB1imwDi+zX/6tMF/5DL3v+ksN3+BecYALN6zQAkAYb/fUaX/mHk/ACsgRf+MFrR/5bgUgFUhh4A8cQuAGdx6v8uZXn+KHz6/4ct8v4J+aj/jGyD/4+jqwAyrcf/WN6O/8hfngCOwKP/B3WHAG98FgDsDEH+RCZB/+Ou/gD09SYA8DLQ/6E/+gA80e8AeiMTAA4h5v4Cn3EAahR//+TNYACJ0q7+tNSQ/1limgEiWIsAp6JwAUFuxQDxJakAQjiD/wrJU/6F/bv/sXAt/sT7AADE+pf/7ujW/5bRzQAc8HYAR0xTAexjWwAq+oMBYBJA/3beIwBx1sv/ene4/0ITJADMQPkAklmLAIY+hwFo6WUAvFQaADH5gQDQ1kv/z4JN/3Ov6wCrAon/r5G6ATf1h/+aVrUBZDr2/23HPP9SzIb/1zHmAYzlwP/ewfv/UYgP/7OVov8XJx3/B19L/r9R3gDxUVr/azHJ//TTnQDejJX/Qds4/r32Wv+yO50BMNs0AGIi1wAcEbv/r6kYAFxPof/syMIBk4/qAOXhBwHFqA4A6zM1Af14rgDFBqj/ynWrAKMVzgByVVr/DykK/8ITYwBBN9j+opJ0ADLO1P9Akh3/np6DAWSlgv+sF4H/fTUJ/w/BEgEaMQv/ta7JAYfJDv9kE5UA22JPACpjj/5gADD/xflT/miVT//rboj+UoAs/0EpJP5Y0woAu3m7AGKGxwCrvLP+0gvu/0J7gv406j0AMHEX/gZWeP93svUAV4HJAPKN0QDKclUAlBahAGfDMAAZMav/ikOCALZJev6UGIIA0+WaACCbngBUaT0AscIJ/6ZZVgE2U7sA+Sh1/20D1/81kiwBPy+zAMLYA/4OVIgAiLEN/0jzuv91EX3/0zrT/11P3wBaWPX/i9Fv/0beLwAK9k//xtmyAOPhCwFOfrP/Pit+AGeUIwCBCKX+9fCUAD0zjgBR0IYAD4lz/9N37P+f9fj/AoaI/+aLOgGgpP4AclWN/zGmtv+QRlQBVbYHAC41XQAJpqH/N6Ky/y24vACSHCz+qVoxAHiy8QEOe3//B/HHAb1CMv/Gj2X+vfOH/40YGP5LYVcAdvuaAe02nACrks//g8T2/4hAcQGX6DkA8NpzADE9G/9AgUkB/Kkb/yiECgFaycH//HnwAbrOKQArxmEAkWS3AMzYUP6slkEA+eXE/mh7Sf9NaGD+grQIAGh7OQDcyuX/ZvnTAFYO6P+2TtEA7+GkAGoNIP94SRH/hkPpAFP+tQC37HABMECD//HY8/9BweIAzvFk/mSGpv/tysUANw1RACB8Zv8o5LEAdrUfAeeghv93u8oAAI48/4Amvf+myZYAz3gaATa4rAAM8sz+hULmACImHwG4cFAAIDOl/r/zNwA6SZL+m6fN/2RomP/F/s//rRP3AO4KygDvl/IAXjsn//AdZv8KXJr/5VTb/6GBUADQWswB8Nuu/55mkQE1skz/NGyoAVPeawDTJG0Adjo4AAgdFgDtoMcAqtGdAIlHLwCPViAAxvICANQwiAFcrLoA5pdpAWC/5QCKUL/+8NiC/2IrBv6oxDEA/RJbAZBJeQA9kicBP2gY/7ilcP5+62IAUNVi/3s8V/9SjPUB33it/w/GhgHOPO8A5+pc/yHuE/+lcY4BsHcmAKArpv7vW2kAaz3CARkERAAPizMApIRq/yJ0Lv6oX8UAidQXAEicOgCJcEX+lmma/+zJnQAX1Jr/iFLj/uI73f9flcAAUXY0/yEr1wEOk0v/WZx5/g4STwCT0IsBl9o+/5xYCAHSuGL/FK97/2ZT5QDcQXQBlvoE/1yO3P8i90L/zOGz/pdRlwBHKOz/ij8+AAZP8P+3ubUAdjIbAD/jwAB7YzoBMuCb/xHh3/7c4E3/Dix7AY2ArwD41MgAlju3/5NhHQCWzLUA/SVHAJFVdwCayLoAAoD5/1MYfAAOV48AqDP1AXyX5//Q8MUBfL65ADA69gAU6egAfRJi/w3+H//1sYL/bI4jAKt98v6MDCL/paGiAM7NZQD3GSIBZJE5ACdGOQB2zMv/8gCiAKX0HgDGdOIAgG+Z/4w2tgE8eg//mzo5ATYyxgCr0x3/a4qn/61rx/9tocEAWUjy/85zWf/6/o7+scpe/1FZMgAHaUL/Gf7//stAF/9P3mz/J/lLAPF8MgDvmIUA3fFpAJOXYgDVoXn+8jGJAOkl+f4qtxsAuHfm/9kgo//Q++QBiT6D/09ACf5eMHEAEYoy/sH/FgD3EsUBQzdoABDNX/8wJUIAN5w/AUBSSv/INUf+70N9ABrg3gDfiV3/HuDK/wnchADGJusBZo1WADwrUQGIHBoA6SQI/s/ylACkoj8AMy7g/3IwT/8Jr+IA3gPB/y+g6P//XWn+DirmABqKUgHQK/QAGycm/2LQf/9Albb/BfrRALs8HP4xGdr/qXTN/3cSeACcdJP/hDVt/w0KygBuU6cAnduJ/wYDgv8ypx7/PJ8v/4GAnf5eA70AA6ZEAFPf1wCWWsIBD6hBAONTM//Nq0L/Nrs8AZhmLf93muEA8PeIAGTFsv+LR9//zFIQASnOKv+cwN3/2Hv0/9rauf+7uu///Kyg/8M0FgCQrrX+u2Rz/9NOsP8bB8EAk9Vo/1rJCv9Qe0IBFiG6AAEHY/4ezgoA5eoFADUe0gCKCNz+RzenAEjhVgF2vrwA/sFlAav5rP9enrf+XQJs/7BdTP9JY0//SkCB/vYuQQBj8X/+9pdm/yw10P47ZuoAmq+k/1jyIABvJgEA/7a+/3OwD/6pPIEAeu3xAFpMPwA+Snj/esNuAHcEsgDe8tIAgiEu/pwoKQCnknABMaNv/3mw6wBMzw7/AxnGASnr1QBVJNYBMVxt/8gYHv6o7MMAkSd8AezDlQBaJLj/Q1Wq/yYjGv6DfET/75sj/zbJpADEFnX/MQ/NABjgHQF+cZAAdRW2AMufjQDfh00AsOaw/77l1/9jJbX/MxWK/xm9Wf8xMKX+mC33AKps3gBQygUAG0Vn/swWgf+0/D7+0gFb/5Ju/v/bohwA3/zVATsIIQDOEPQAgdMwAGug0ABwO9EAbU3Y/iIVuf/2Yzj/s4sT/7kdMv9UWRMASvpi/+EqyP/A2c3/0hCnAGOEXwEr5jkA/gvL/2O8P/93wfv+UGk2AOi1vQG3RXD/0Kul/y9ttP97U6UAkqI0/5oLBP+X41r/kolh/j3pKf9eKjf/bKTsAJhE/gAKjIP/CmpP/vOeiQBDskL+sXvG/w8+IgDFWCr/lV+x/5gAxv+V/nH/4Vqj/33Z9wASEeAAgEJ4/sAZCf8y3c0AMdRGAOn/pAAC0QkA3TTb/qzg9P9eOM4B8rMC/x9bpAHmLor/vebcADkvPf9vC50AsVuYABzmYgBhV34AxlmR/6dPawD5TaABHenm/5YVVv48C8EAlyUk/rmW8//k1FMBrJe0AMmpmwD0POoAjusEAUPaPADAcUsBdPPP/0GsmwBRHpz/UEgh/hLnbf+OaxX+fRqE/7AQO/+WyToAzqnJANB54gAorA7/lj1e/zg5nP+NPJH/LWyV/+6Rm//RVR/+wAzSAGNiXf6YEJcA4bncAI3rLP+grBX+Rxof/w1AXf4cOMYAsT74AbYI8QCmZZT/TlGF/4He1wG8qYH/6AdhADFwPP/Z5fsAd2yKACcTe/6DMesAhFSRAILmlP8ZSrsABfU2/7nb8QESwuT/8cpmAGlxygCb608AFQmy/5wB7wDIlD0Ac/fS/zHdhwA6vQgBIy4JAFFBBf80nrn/fXQu/0qMDf/SXKz+kxdHANng/f5zbLT/kTow/tuxGP+c/zwBmpPyAP2GVwA1S+UAMMPe/x+vMv+c0nj/0CPe/xL4swECCmX/ncL4/57MZf9o/sX/Tz4EALKsZQFgkvv/QQqcAAKJpf90BOcA8tcBABMjHf8roU8AO5X2AftCsADIIQP/UG6O/8OhEQHkOEL/ey+R/oQEpABDrqwAGf1yAFdhVwH63FQAYFvI/yV9OwATQXYAoTTx/+2sBv+wv///AUGC/t++5gBl/ef/kiNtAPodTQExABMAe1qbARZWIP/a1UEAb11/ADxdqf8If7YAEboO/v2J9v/VGTD+TO4A//hcRv9j4IsAuAn/AQek0ADNg8YBV9bHAILWXwDdld4AFyar/sVu1QArc4z+17F2AGA0QgF1nu0ADkC2/y4/rv+eX77/4c2x/ysFjv+sY9T/9LuTAB0zmf/kdBj+HmXPABP2lv+G5wUAfYbiAU1BYgDsgiH/BW4+AEVsf/8HcRYAkRRT/sKh5/+DtTwA2dGx/+WU1P4Dg7gAdbG7ARwOH/+wZlAAMlSX/30fNv8VnYX/E7OLAeDoGgAidar/p/yr/0mNzv6B+iMASE/sAdzlFP8pyq3/Y0zu/8YW4P9sxsP/JI1gAeyeO/9qZFcAbuICAOPq3gCaXXf/SnCk/0NbAv8VkSH/ZtaJ/6/mZ/6j9qYAXfd0/qfgHP/cAjkBq85UAHvkEf8beHcAdwuTAbQv4f9oyLn+pQJyAE1O1AAtmrH/GMR5/lKdtgBaEL4BDJPFAF/vmP8L60cAVpJ3/6yG1gA8g8QAoeGBAB+CeP5fyDMAaefS/zoJlP8rqN3/fO2OAMbTMv4u9WcApPhUAJhG0P+0dbEARk+5APNKIACVnM8AxcShAfU17wAPXfb+i/Ax/8RYJP+iJnsAgMidAa5MZ/+tqSL+2AGr/3IzEQCI5MIAbpY4/mr2nwATuE//lk3w/5tQogAANan/HZdWAEReEABcB27+YnWV//lN5v/9CowA1nxc/iN26wBZMDkBFjWmALiQPf+z/8IA1vg9/jtu9gB5FVH+pgPkAGpAGv9F6Ib/8tw1/i7cVQBxlff/YbNn/75/CwCH0bYAXzSBAaqQzv96yMz/qGSSADyQlf5GPCgAejSx//bTZf+u7QgABzN4ABMfrQB+75z/j73LAMSAWP/pheL/Hn2t/8lsMgB7ZDv//qMDAd2Utf/WiDn+3rSJ/89YNv8cIfv/Q9Y0AdLQZABRql4AkSg1AOBv5/4jHPT/4sfD/u4R5gDZ2aT+qZ3dANouogHHz6P/bHOiAQ5gu/92PEwAuJ+YANHnR/4qpLr/upkz/t2rtv+ijq0A6y/BAAeLEAFfpED/EN2mANvFEACEHSz/ZEV1/zzrWP4oUa0AR749/7tYnQDnCxcA7XWkAOGo3/+acnT/o5jyARggqgB9YnH+qBNMABGd3P6bNAUAE2+h/0da/P+tbvAACsZ5//3/8P9Ce9IA3cLX/nmjEf/hB2MAvjG2AHMJhQHoGor/1USEACx3ev+zYjMAlVpqAEcy5v8KmXb/sUYZAKVXzQA3iuoA7h5hAHGbzwBimX8AImvb/nVyrP9MtP/+8jmz/90irP44ojH/UwP//3Hdvf+8GeT+EFhZ/0ccxv4WEZX/83n+/2vKY/8Jzg4B3C+ZAGuJJwFhMcL/lTPF/ro6C/9rK+gByAYO/7WFQf7d5Kv/ez7nAePqs/8ivdT+9Lv5AL4NUAGCWQEA34WtAAnexv9Cf0oAp9hd/5uoxgFCkQAARGYuAaxamgDYgEv/oCgzAJ4RGwF88DEA7Mqw/5d8wP8mwb4AX7Y9AKOTfP//pTP/HCgR/tdgTgBWkdr+HyTK/1YJBQBvKcj/7WxhADk+LAB1uA8BLfF0AJgB3P+dpbwA+g+DATwsff9B3Pv/SzK4ADVagP/nUML/iIF/ARUSu/8tOqH/R5MiAK75C/4jjR0A70Sx/3NuOgDuvrEBV/Wm/74x9/+SU7j/rQ4n/5LXaACO33gAlcib/9TPkQEQtdkArSBX//8jtQB336EByN9e/0YGuv/AQ1X/MqmYAJAae/8487P+FESIACeMvP790AX/yHOHASus5f+caLsAl/unADSHFwCXmUgAk8Vr/pSeBf/uj84AfpmJ/1iYxf4HRKcA/J+l/+9ONv8YPzf/Jt5eAO23DP/OzNIAEyf2/h5K5wCHbB0Bs3MAAHV2dAGEBvz/kYGhAWlDjQBSJeL/7uLk/8zWgf6ie2T/uXnqAC1s5wBCCDj/hIiAAKzgQv6vnbwA5t/i/vLbRQC4DncBUqI4AHJ7FACiZ1X/Me9j/pyH1wBv/6f+J8TWAJAmTwH5qH0Am2Gc/xc02/+WFpAALJWl/yh/twDETen/doHS/6qH5v/Wd8YA6fAjAP00B/91ZjD/Fcya/7OIsf8XAgMBlYJZ//wRnwFGPBoAkGsRALS+PP84tjv/bkc2/8YSgf+V4Ff/3xWY/4oWtv/6nM0A7C3Q/0+U8gFlRtEAZ06uAGWQrP+YiO0Bv8KIAHFQfQGYBI0Am5Y1/8R09QDvckn+E1IR/3x96v8oNL8AKtKe/5uEpQCyBSoBQFwo/yRVTf+y5HYAiUJg/nPiQgBu8EX+l29QAKeu7P/jbGv/vPJB/7dR/wA5zrX/LyK1/9XwngFHS18AnCgY/2bSUQCrx+T/miIpAOOvSwAV78MAiuVfAUzAMQB1e1cB4+GCAH0+P/8CxqsA/iQN/pG6zgCU//T/IwCmAB6W2wFc5NQAXMY8/j6FyP/JKTsAfe5t/7Sj7gGMelIACRZY/8WdL/+ZXjkAWB62AFShVQCyknwApqYH/xXQ3wCctvIAm3m5AFOcrv6aEHb/ulPoAd86ef8dF1gAI31//6oFlf6kDIL/m8QdAKFgiAAHIx0BoiX7AAMu8v8A2bwAOa7iAc7pAgA5u4j+e70J/8l1f/+6JMwA5xnYAFBOaQAThoH/lMtEAI1Rff74pcj/1pCHAJc3pv8m61sAFS6aAN/+lv8jmbT/fbAdAStiHv/Yeub/6aAMADm5DP7wcQf/BQkQ/hpbbABtxssACJMoAIGG5P98uij/cmKE/qaEFwBjRSwACfLu/7g1OwCEgWb/NCDz/pPfyP97U7P+h5DJ/40lOAGXPOP/WkmcAcusuwBQly//Xonn/yS/O//h0bX/StfV/gZ2s/+ZNsEBMgDnAGidSAGM45r/tuIQ/mDhXP9zFKr+BvpOAPhLrf81WQb/ALR2AEitAQBACM4BroXfALk+hf/WC2IAxR/QAKun9P8W57UBltq5APepYQGli/f/L3iVAWf4MwA8RRz+GbPEAHwH2v46a1EAuOmc//xKJAB2vEMAjV81/95epf4uPTUAzjtz/y/s+v9KBSABgZru/2og4gB5uz3/A6bx/kOqrP8d2LL/F8n8AP1u8wDIfTkAbcBg/zRz7gAmefP/yTghAMJ2ggBLYBn/qh7m/ic//QAkLfr/+wHvAKDUXAEt0e0A8yFX/u1Uyf/UEp3+1GN//9liEP6LrO8AqMmC/4/Bqf/ul8EB12gpAO89pf4CA/IAFsux/rHMFgCVgdX+Hwsp/wCfef6gGXL/olDIAJ2XCwCahk4B2Db8ADBnhQBp3MUA/ahN/jWzFwAYefAB/y5g/2s8h/5izfn/P/l3/3g70/9ytDf+W1XtAJXUTQE4STEAVsaWAF3RoABFzbb/9ForABQksAB6dN0AM6cnAecBP/8NxYYAA9Ei/4c7ygCnZE4AL99MALk8PgCypnsBhAyh/z2uKwDDRZAAfy+/ASIsTgA56jQB/xYo//ZekgBT5IAAPE7g/wBg0v+Zr+wAnxVJALRzxP6D4WoA/6eGAJ8IcP94RML/sMTG/3YwqP9dqQEAcMhmAUoY/gATjQT+jj4/AIOzu/9NnJv/d1akAKrQkv/QhZr/lJs6/6J46P781ZsA8Q0qAF4ygwCzqnAAjFOX/zd3VAGMI+//mS1DAeyvJwA2l2f/nipB/8Tvh/5WNcsAlWEv/tgjEf9GA0YBZyRa/ygarQC4MA0Ao9vZ/1EGAf/dqmz+6dBdAGTJ+f5WJCP/0ZoeAePJ+/8Cvaf+ZDkDAA2AKQDFZEsAlszr/5GuOwB4+JX/VTfhAHLSNf7HzHcADvdKAT/7gQBDaJcBh4JQAE9ZN/915p3/GWCPANWRBQBF8XgBlfNf/3IqFACDSAIAmjUU/0k+bQDEZpgAKQzM/3omCwH6CpEAz32UAPb03v8pIFUBcNV+AKL5VgFHxn//UQkVAWInBP/MRy0BS2+JAOo75wAgMF//zB9yAR3Etf8z8af+XW2OAGiQLQDrDLX/NHCkAEz+yv+uDqIAPeuT/ytAuf7pfdkA81in/koxCACczEIAfNZ7ACbddgGScOwAcmKxAJdZxwBXxXAAuZWhACxgpQD4sxT/vNvY/ig+DQDzjo0A5ePO/6zKI/91sOH/Um4mASr1Dv8UU2EAMasKAPJ3eAAZ6D0A1PCT/wRzOP+REe/+yhH7//kS9f9jde8AuASz//btM/8l74n/pnCm/1G8If+5+o7/NrutANBwyQD2K+QBaLhY/9Q0xP8zdWz//nWbAC5bD/9XDpD/V+PMAFMaUwGfTOMAnxvVARiXbAB1kLP+idFSACafCgBzhckA37acAW7EXf85POkABadp/5rFpABgIrr/k4UlAdxjvgABp1T/FJGrAMLF+/5fToX//Pjz/+Fdg/+7hsT/2JmqABR2nv6MAXYAVp4PAS3TKf+TAWT+cXRM/9N/bAFnDzAAwRBmAUUzX/9rgJ0AiavpAFp8kAFqobYAr0zsAciNrP+jOmgA6bQ0//D9Dv+icf7/Ju+K/jQupgDxZSH+g7qcAG/QPv98XqD/H6z+AHCuOP+8Yxv/Q4r7AH06gAGcmK7/sgz3//xUngBSxQ7+rMhT/yUnLgFqz6cAGL0iAIOykADO1QQAoeLSAEgzaf9hLbv/Trjf/7Ad+wBPoFb/dCWyAFJN1QFSVI3/4mXUAa9Yx//1XvcBrHZt/6a5vgCDtXgAV/5d/4bwSf8g9Y//i6Jn/7NiEv7ZzHAAk994/zUK8wCmjJYAfVDI/w5t2/9b2gH//Pwv/m2cdP9zMX8BzFfT/5TK2f8aVfn/DvWGAUxZqf/yLeYAO2Ks/3JJhP5OmzH/nn5UADGvK/8QtlT/nWcjAGjBbf9D3ZoAyawB/giiWAClAR3/fZvl/x6a3AFn71wA3AFt/8rGAQBeAo4BJDYsAOvinv+q+9b/uU0JAGFK8gDbo5X/8CN2/99yWP7AxwMAaiUY/8mhdv9hWWMB4Dpn/2XHk/7ePGMA6hk7ATSHGwBmA1v+qNjrAOXoiABoPIEALqjuACe/QwBLoy8Aj2Fi/zjYqAGo6fz/I28W/1xUKwAayFcBW/2YAMo4RgCOCE0AUAqvAfzHTAAWblL/gQHCAAuAPQFXDpH//d6+AQ9IrgBVo1b+OmMs/y0YvP4azQ8AE+XS/vhDwwBjR7gAmscl/5fzef8mM0v/yVWC/ixB+gA5k/P+kis7/1kcNQAhVBj/szMS/r1GUwALnLMBYoZ3AJ5vbwB3mkn/yD+M/i0NDf+awAL+UUgqAC6guf4scAYAkteVARqwaABEHFcB7DKZ/7OA+v7Owb//plyJ/jUo7wDSAcz+qK0jAI3zLQEkMm3/D/LC/+Ofev+wr8r+RjlIACjfOADQojr/t2JdAA9vDAAeCEz/hH/2/y3yZwBFtQ//CtEeAAOzeQDx6NoBe8dY/wLSygG8glH/XmXQAWckLQBMwRgBXxrx/6WiuwAkcowAykIF/yU4kwCYC/MBf1Xo//qH1AG5sXEAWtxL/0X4kgAybzIAXBZQAPQkc/6jZFL/GcEGAX89JAD9Qx7+Qeyq/6ER1/4/r4wAN38EAE9w6QBtoCgAj1MH/0Ea7v/ZqYz/Tl69/wCTvv+TR7r+ak1//+md6QGHV+3/0A3sAZttJP+0ZNoAtKMSAL5uCQERP3v/s4i0/6V7e/+QvFH+R/Bs/xlwC//j2jP/pzLq/3JPbP8fE3P/t/BjAONXj/9I2fj/ZqlfAYGVlQDuhQwB48wjANBzGgFmCOoAcFiPAZD5DgDwnqz+ZHB3AMKNmf4oOFP/ebAuACo1TP+ev5oAW9FcAK0NEAEFSOL/zP6VAFC4zwBkCXr+dmWr//zLAP6gzzYAOEj5ATiMDf8KQGv+W2U0/+G1+AGL/4QA5pERAOk4FwB3AfH/1amX/2NjCf65D7//rWdtAa4N+/+yWAf+GztE/wohAv/4YTsAGh6SAbCTCgBfec8BvFgYALle/v5zN8kAGDJGAHg1BgCOQpIA5OL5/2jA3gGtRNsAorgk/49mif+dCxcAfS1iAOtd4f44cKD/RnTzAZn5N/+BJxEB8VD0AFdFFQFe5En/TkJB/8Lj5wA9klf/rZsX/3B02/7YJgv/g7qFAF7UuwBkL1sAzP6v/94S1/6tRGz/4+RP/ybd1QCj45b+H74SAKCzCwEKWl7/3K5YAKPT5f/HiDQAgl/d/4y85/6LcYD/davs/jHcFP87FKv/5G28ABThIP7DEK4A4/6IAYcnaQCWTc7/0u7iADfUhP7vOXwAqsJd//kQ9/8Ylz7/CpcKAE+Lsv948soAGtvVAD59I/+QAmz/5iFT/1Et2AHgPhEA1tl9AGKZmf+zsGr+g12K/20+JP+yeSD/ePxGANz4JQDMWGcBgNz7/+zjBwFqMcb/PDhrAGNy7gDczF4BSbsBAFmaIgBO2aX/DsP5/wnm/f/Nh/UAGvwH/1TNGwGGAnAAJZ4gAOdb7f+/qsz/mAfeAG3AMQDBppL/6BO1/2mONP9nEBsB/cilAMPZBP80vZD/e5ug/leCNv9OeD3/DjgpABkpff9XqPUA1qVGANSpBv/b08L+SF2k/8UhZ/8rjo0Ag+GsAPRpHABEROEAiFQN/4I5KP6LTTgAVJY1ADZfnQCQDbH+X3O6AHUXdv/0pvH/C7qHALJqy/9h2l0AK/0tAKSYBACLdu8AYAEY/uuZ0/+obhT/Mu+wAHIp6ADB+jUA/qBv/oh6Kf9hbEMA15gX/4zR1AAqvaMAyioy/2pqvf++RNn/6Tp1AOXc8wHFAwQAJXg2/gSchv8kPav+pYhk/9ToDgBargoA2MZB/wwDQAB0cXP/+GcIAOd9Ev+gHMUAHrgjAd9J+f97FC7+hzgl/60N5QF3oSL/9T1JAM19cACJaIYA2fYe/+2OjwBBn2b/bKS+ANt1rf8iJXj+yEVQAB982v5KG6D/uprH/0fH/ABoUZ8BEcgnANM9wAEa7lsAlNkMADtb1f8LUbf/geZ6/3LLkQF3tEL/SIq0AOCVagB3Umj/0IwrAGIJtv/NZYb/EmUmAF/Fpv/L8ZMAPtCR/4X2+wACqQ4ADfe4AI4H/gAkyBf/WM3fAFuBNP8Vuh4Aj+TSAffq+P/mRR/+sLqH/+7NNAGLTysAEbDZ/iDzQwDyb+kALCMJ/+NyUQEERwz/Jmm/AAd1Mv9RTxAAP0RB/50kbv9N8QP/4i37AY4ZzgB4e9EBHP7u/wWAfv9b3tf/og+/AFbwSQCHuVH+LPGjANTb0v9wopsAz2V2AKhIOP/EBTQASKzy/34Wnf+SYDv/onmY/owQXwDD/sj+UpaiAHcrkf7MrE7/puCfAGgT7f/1ftD/4jvVAHXZxQCYSO0A3B8X/g5a5/+81EABPGX2/1UYVgABsW0AklMgAUu2wAB38eAAue0b/7hlUgHrJU3//YYTAOj2egA8arMAwwsMAG1C6wF9cTsAPSikAK9o8AACL7v/MgyNAMKLtf+H+mgAYVze/9mVyf/L8Xb/T5dDAHqO2v+V9e8AiirI/lAlYf98cKf/JIpX/4Idk//xV07/zGETAbHRFv/343/+Y3dT/9QZxgEQs7MAkU2s/lmZDv/avacAa+k7/yMh8/4scHD/oX9PAcyvCgAoFYr+aHTkAMdfif+Fvqj/kqXqAbdjJwC33Db+/96FAKLbef4/7wYA4WY2//sS9gAEIoEBhySDAM4yOwEPYbcAq9iH/2WYK/+W+1sAJpFfACLMJv6yjFP/GYHz/0yQJQBqJBr+dpCs/0S65f9rodX/LqNE/5Wq/QC7EQ8A2qCl/6sj9gFgDRMApct1ANZrwP/0e7EBZANoALLyYf/7TIL/000qAfpPRv8/9FABaWX2AD2IOgHuW9UADjti/6dUTQARhC7+Oa/F/7k+uABMQM8ArK/Q/q9KJQCKG9P+lH3CAApZUQCoy2X/K9XRAev1NgAeI+L/CX5GAOJ9Xv6cdRT/OfhwAeYwQP+kXKYB4Nbm/yR4jwA3CCv/+wH1AWpipQBKa2r+NQQ2/1qylgEDeHv/9AVZAXL6Pf/+mVIBTQ8RADnuWgFf3+YA7DQv/meUpP95zyQBEhC5/0sUSgC7C2UALjCB/xbv0v9N7IH/b03M/z1IYf/H2fv/KtfMAIWRyf855pIB62TGAJJJI/5sxhT/tk/S/1JniAD2bLAAIhE8/xNKcv6oqk7/ne8U/5UpqAA6eRwAT7OG/+d5h/+u0WL/83q+AKumzQDUdDAAHWxC/6LetgEOdxUA1Sf5//7f5P+3pcYAhb4wAHzQbf93r1X/CdF5ATCrvf/DR4YBiNsz/7Zbjf4xn0gAI3b1/3C64/87iR8AiSyjAHJnPP4I1ZYAogpx/8JoSADcg3T/sk9cAMv61f5dwb3/gv8i/tS8lwCIERT/FGVT/9TOpgDl7kn/l0oD/6hX1wCbvIX/poFJAPBPhf+y01H/y0ij/sGopQAOpMf+Hv/MAEFIWwGmSmb/yCoA/8Jx4/9CF9AA5dhk/xjvGgAK6T7/ewqyARokrv9328cBLaO+ABCoKgCmOcb/HBoaAH6l5wD7bGT/PeV5/zp2igBMzxEADSJw/lkQqAAl0Gn/I8nX/yhqZf4G73IAKGfi/vZ/bv8/pzoAhPCOAAWeWP+BSZ7/XlmSAOY2kgAILa0AT6kBAHO69wBUQIMAQ+D9/8+9QACaHFEBLbg2/1fU4P8AYEn/gSHrATRCUP/7rpv/BLMlAOqkXf5dr/0AxkVX/+BqLgBjHdIAPrxy/yzqCACpr/f/F22J/+W2JwDApV7+9WXZAL9YYADEXmP/au4L/jV+8wBeAWX/LpMCAMl8fP+NDNoADaadATD77f+b+nz/apSS/7YNygAcPacA2ZgI/tyCLf/I5v8BN0FX/12/Yf5y+w4AIGlcARrPjQAYzw3+FTIw/7qUdP/TK+EAJSKi/qTSKv9EF2D/ttYI//V1if9CwzIASwxT/lCMpAAJpSQB5G7jAPERWgEZNNQABt8M/4vzOQAMcUsB9re//9W/Rf/mD44AAcPE/4qrL/9AP2oBEKnW/8+uOAFYSYX/toWMALEOGf+TuDX/CuOh/3jY9P9JTekAne6LATtB6QBG+9gBKbiZ/yDLcACSk/0AV2VtASxShf/0ljX/Xpjo/ztdJ/9Yk9z/TlENASAv/P+gE3L/XWsn/3YQ0wG5d9H/49t//lhp7P+ibhf/JKZu/1vs3f9C6nQAbxP0/grpGgAgtwb+Ar/yANqcNf4pPEb/qOxvAHm5fv/ujs//N340ANyB0P5QzKT/QxeQ/toobP9/yqQAyyED/wKeAAAlYLz/wDFKAG0EAABvpwr+W9qH/8tCrf+WwuIAyf0G/65meQDNv24ANcIEAFEoLf4jZo//DGzG/xAb6P/8R7oBsG5yAI4DdQFxTY4AE5zFAVwv/AA16BYBNhLrAC4jvf/s1IEAAmDQ/sjux/87r6T/kivnAMLZNP8D3wwAijay/lXrzwDozyIAMTQy/6ZxWf8KLdj/Pq0cAG+l9gB2c1v/gFQ8AKeQywBXDfMAFh7kAbFxkv+Bqub+/JmB/5HhKwBG5wX/eml+/lb2lP9uJZr+0QNbAESRPgDkEKX/N935/rLSWwBTkuL+RZK6AF3SaP4QGa0A57omAL16jP/7DXD/aW5dAPtIqgDAF9//GAPKAeFd5ACZk8f+baoWAPhl9v+yfAz/sv5m/jcEQQB91rQAt2CTAC11F/6Ev/kAj7DL/oi3Nv+S6rEAkmVW/yx7jwEh0ZgAwFop/lMPff/VrFIA16mQABANIgAg0WT/VBL5AcUR7P/ZuuYAMaCw/292Yf/taOsATztc/kX5C/8jrEoBE3ZEAN58pf+0QiP/Vq72ACtKb/9+kFb/5OpbAPLVGP5FLOv/3LQjAAj4B/9mL1z/8M1m/3HmqwEfucn/wvZG/3oRuwCGRsf/lQOW/3U/ZwBBaHv/1DYTAQaNWABThvP/iDVnAKkbtACxMRgAbzanAMM91/8fAWwBPCpGALkDov/ClSj/9n8m/r53Jv89dwgBYKHb/yrL3QGx8qT/9Z8KAHTEAAAFXc3+gH+zAH3t9v+Votn/VyUU/ozuwAAJCcEAYQHiAB0mCgAAiD//5UjS/iaGXP9O2tABaCRU/wwFwf/yrz3/v6kuAbOTk/9xvov+fawfAANL/P7XJA8AwRsYAf9Flf9ugXYAy135AIqJQP4mRgYAmXTeAKFKewDBY0//djte/z0MKwGSsZ0ALpO/ABD/JgALMx8BPDpi/2/CTQGaW/QAjCiQAa0K+wDL0TL+bIJOAOS0WgCuB/oAH648ACmrHgB0Y1L/dsGL/7utxv7abzgAuXvYAPmeNAA0tF3/yQlb/zgtpv6Em8v/OuhuADTTWf/9AKIBCVe3AJGILAFeevUAVbyrAZNcxgAACGgAHl+uAN3mNAH39+v/ia41/yMVzP9H49YB6FLCAAsw4/+qSbj/xvv8/ixwIgCDZYP/SKi7AISHff+KaGH/7rio//NoVP+H2OL/i5DtALyJlgFQOIz/Vqmn/8JOGf/cEbT/EQ3BAHWJ1P+N4JcAMfSvAMFjr/8TY5oB/0E+/5zSN//y9AP/+g6VAJ5Y2f+dz4b+++gcAC6c+/+rOLj/7zPqAI6Kg/8Z/vMBCsnCAD9hSwDS76IAwMgfAXXW8wAYR97+Nijo/0y3b/6QDlf/1k+I/9jE1ACEG4z+gwX9AHxsE/8c10sATN43/um2PwBEq7/+NG/e/wppTf9QqusAjxhY/y3neQCUgeABPfZUAP0u2//vTCEAMZQS/uYlRQBDhhb+jpteAB+d0/7VKh7/BOT3/vywDf8nAB/+8fT//6otCv793vkA3nKEAP8vBv+0o7MBVF6X/1nRUv7lNKn/1ewAAdY45P+Hd5f/cMnBAFOgNf4Gl0IAEqIRAOlhWwCDBU4BtXg1/3VfP//tdbkAv36I/5B36QC3OWEBL8m7/6eldwEtZH4AFWIG/pGWX/94NpgA0WJoAI9vHv64lPkA69guAPjKlP85XxYA8uGjAOn36P9HqxP/Z/Qx/1RnXf9EefQBUuANAClPK//5zqf/1zQV/sAgFv/3bzwAZUom/xZbVP4dHA3/xufX/vSayADfie0A04QOAF9Azv8RPvf/6YN5AV0XTQDNzDT+Ub2IALTbigGPEl4AzCuM/ryv2wBvYo//lz+i/9MyR/4TkjUAki1T/rJS7v8QhVT/4sZd/8lhFP94diP/cjLn/6LlnP/TGgwAcidz/87UhgDF2aD/dIFe/sfX2/9L3/kB/XS1/+jXaP/kgvb/uXVWAA4FCADvHT0B7VeF/32Sif7MqN8ALqj1AJppFgDc1KH/a0UY/4natf/xVMb/gnrT/40Imf++sXYAYFmyAP8QMP56YGn/dTbo/yJ+af/MQ6YA6DSK/9OTDAAZNgcALA/X/jPsLQC+RIEBapPhABxdLf7sjQ//ET2hANxzwADskRj+b6ipAOA6P/9/pLwAUupLAeCehgDRRG4B2abZAEbhpgG7wY//EAdY/wrNjAB1wJwBETgmABt8bAGr1zf/X/3UAJuHqP/2spn+mkRKAOg9YP5phDsAIUzHAb2wgv8JaBn+S8Zm/+kBcABs3BT/cuZGAIzChf85nqT+kgZQ/6nEYQFVt4IARp7eATvt6v9gGRr/6K9h/wt5+P5YI8IA27T8/koI4wDD40kBuG6h/zHppAGANS8AUg55/8G+OgAwrnX/hBcgACgKhgEWMxn/8Auw/245kgB1j+8BnWV2/zZUTADNuBL/LwRI/05wVf/BMkIBXRA0/whphgAMbUj/Opz7AJAjzAAsoHX+MmvCAAFEpf9vbqIAnlMo/kzW6gA62M3/q2CT/yjjcgGw4/EARvm3AYhUi/88evf+jwl1/7Guif5J948A7Ll+/z4Z9/8tQDj/ofQGACI5OAFpylMAgJPQAAZnCv9KikH/YVBk/9auIf8yhkr/bpeC/m9UrABUx0v++Dtw/wjYsgEJt18A7hsI/qrN3ADD5YcAYkzt/+JbGgFS2yf/4b7HAdnIef9Rswj/jEHOALLPV/76/C7/aFluAf29nv+Q1p7/oPU2/zW3XAEVyML/kiFxAdEB/wDraiv/pzToAJ3l3QAzHhkA+t0bAUGTV/9Pe8QAQcTf/0wsEQFV8UQAyrf5/0HU1P8JIZoBRztQAK/CO/+NSAkAZKD0AObQOAA7GUv+UMLCABIDyP6gn3MAhI/3AW9dOf867QsBht6H/3qjbAF7K77/+73O/lC2SP/Q9uABETwJAKHPJgCNbVsA2A/T/4hObgBio2j/FVB5/62ytwF/jwQAaDxS/tYQDf9g7iEBnpTm/3+BPv8z/9L/Po3s/p034P9yJ/QAwLz6/+RMNQBiVFH/rcs9/pMyN//M678ANMX0AFgr0/4bv3cAvOeaAEJRoQBcwaAB+uN4AHs34gC4EUgAhagK/haHnP8pGWf/MMo6ALqVUf+8hu8A67W9/tmLvP9KMFIALtrlAL39+wAy5Qz/042/AYD0Gf+p53r+Vi+9/4S3F/8lspb/M4n9AMhOHwAWaTIAgjwAAISjW/4X57sAwE/vAJ1mpP/AUhQBGLVn//AJ6gABe6T/hekA/8ry8gA8uvUA8RDH/+B0nv6/fVv/4FbPAHkl5//jCcb/D5nv/3no2f5LcFIAXww5/jPWaf+U3GEBx2IkAJzRDP4K1DQA2bQ3/tSq6P/YFFT/nfqHAJ1jf/4BzikAlSRGATbEyf9XdAD+66uWABuj6gDKh7QA0F8A/nucXQC3PksAieu2AMzh///Wi9L/AnMI/x0MbwA0nAEA/RX7/yWlH/4MgtMAahI1/ipjmgAO2T3+2Atc/8jFcP6TJscAJPx4/mupTQABe5//z0tmAKOvxAAsAfAAeLqw/g1iTP/tfPH/6JK8/8hg4ADMHykA0MgNABXhYP+vnMQA99B+AD649P4Cq1EAVXOeADZALf8TinIAh0fNAOMvkwHa50IA/dEcAPQPrf8GD3b+EJbQ/7kWMv9WcM//S3HXAT+SK/8E4RP+4xc+/w7/1v4tCM3/V8WX/tJS1//1+Pf/gPhGAOH3VwBaeEYA1fVcAA2F4gAvtQUBXKNp/wYehf7osj3/5pUY/xIxngDkZD3+dPP7/01LXAFR25P/TKP+/o3V9gDoJZj+YSxkAMklMgHU9DkArqu3//lKcACmnB4A3t1h//NdSf77ZWT/2Nld//6Ku/+OvjT/O8ux/8heNABzcp7/pZhoAX5j4v92nfQBa8gQAMFa5QB5BlgAnCBd/n3x0/8O7Z3/pZoV/7jgFv/6GJj/cU0fAPerF//tscz/NImR/8K2cgDg6pUACm9nAcmBBADujk4ANAYo/27Vpf48z/0APtdFAGBhAP8xLcoAeHkW/+uLMAHGLSL/tjIbAYPSW/8uNoAAr3tp/8aNTv5D9O//9TZn/k4m8v8CXPn++65X/4s/kAAYbBv/ImYSASIWmABC5Xb+Mo9jAJCplQF2HpgAsgh5AQifEgBaZeb/gR13AEQkCwHotzcAF/9g/6Epwf8/i94AD7PzAP9kD/9SNYcAiTmVAWPwqv8W5uT+MbRS/z1SKwBu9dkAx309AC79NACNxdsA05/BADd5af63FIEAqXeq/8uyi/+HKLb/rA3K/0GylAAIzysAejV/AUqhMADj1oD+Vgvz/2RWBwH1RIb/PSsVAZhUXv++PPr+73bo/9aIJQFxTGv/XWhkAZDOF/9ulpoB5Ge5ANoxMv6HTYv/uQFOAAChlP9hHen/z5SV/6CoAABbgKv/BhwT/gtv9wAnu5b/iuiVAHU+RP8/2Lz/6+og/h05oP8ZDPEBqTy/ACCDjf/tn3v/XsVe/nT+A/9cs2H+eWFc/6pwDgAVlfgA+OMDAFBgbQBLwEoBDFri/6FqRAHQcn//cir//koaSv/3s5b+eYw8AJNGyP/WKKH/obzJ/41Bh//yc/wAPi/KALSV//6CN+0ApRG6/wqpwgCcbdr/cIx7/2iA3/6xjmz/eSXb/4BNEv9vbBcBW8BLAK71Fv8E7D7/K0CZAeOt/gDteoQBf1m6/45SgP78VK4AWrOxAfPWV/9nPKL/0IIO/wuCiwDOgdv/Xtmd/+/m5v90c5/+pGtfADPaAgHYfcb/jMqA/gtfRP83CV3+rpkG/8ysYABFoG4A1SYx/htQ1QB2fXIARkZD/w+OSf+Dern/8xQy/oLtKADSn4wBxZdB/1SZQgDDfloAEO7sAXa7Zv8DGIX/u0XmADjFXAHVRV7/UIrlAc4H5gDeb+YBW+l3/wlZBwECYgEAlEqF/zP2tP/ksXABOr1s/8LL7f4V0cMAkwojAVad4gAfo4v+OAdL/z5adAC1PKkAiqLU/lGnHwDNWnD/IXDjAFOXdQGx4En/rpDZ/+bMT/8WTej/ck7qAOA5fv4JMY0A8pOlAWi2jP+nhAwBe0R/AOFXJwH7bAgAxsGPAXmHz/+sFkYAMkR0/2WvKP/4aekApssHAG7F2gDX/hr+qOL9AB+PYAALZykAt4HL/mT3Sv/VfoQA0pMsAMfqGwGUL7UAm1ueATZpr/8CTpH+ZppfAIDPf/40fOz/glRHAN3z0wCYqs8A3mrHALdUXv5cyDj/irZzAY5gkgCFiOQAYRKWADf7QgCMZgQAymeXAB4T+P8zuM8AysZZADfF4f6pX/n/QkFE/7zqfgCm32QBcO/0AJAXwgA6J7YA9CwY/q9Es/+YdpoBsKKCANlyzP6tfk7/Id4e/yQCW/8Cj/MACevXAAOrlwEY1/X/qC+k/vGSzwBFgbQARPNxAJA1SP77LQ4AF26oAERET/9uRl/+rluQ/yHOX/+JKQf/E7uZ/iP/cP8Jkbn+Mp0lAAtwMQFmCL7/6vOpATxVFwBKJ70AdDHvAK3V0gAuoWz/n5YlAMR4uf8iYgb/mcM+/2HmR/9mPUwAGtTs/6RhEADGO5IAoxfEADgYPQC1YsEA+5Pl/2K9GP8uNs7/6lL2ALdnJgFtPswACvDgAJIWdf+OmngARdQjANBjdgF5/wP/SAbCAHURxf99DxcAmk+ZANZexf+5N5P/Pv5O/n9SmQBuZj//bFKh/2m71AFQiicAPP9d/0gMugDS+x8BvqeQ/+QsE/6AQ+gA1vlr/oiRVv+ELrAAvbvj/9AWjADZ03QAMlG6/ov6HwAeQMYBh5tkAKDOF/67otP/ELw/AP7QMQBVVL8A8cDy/5l+kQHqoqL/5mHYAUCHfgC+lN8BNAAr/xwnvQFAiO4Ar8S5AGLi1f9/n/QB4q88AKDpjgG088//RZhZAR9lFQCQGaT+i7/RAFsZeQAgkwUAJ7p7/z9z5v9dp8b/j9Xc/7OcE/8ZQnoA1qDZ/wItPv9qT5L+M4lj/1dk5/+vkej/ZbgB/64JfQBSJaEBJHKN/zDejv/1upoABa7d/j9ym/+HN6ABUB+HAH76swHs2i0AFByRARCTSQD5vYQBEb3A/9+Oxv9IFA//+jXt/g8LEgAb03H+1Ws4/66Tkv9gfjAAF8FtASWiXgDHnfn+GIC7/80xsv5dpCr/K3frAVi37f/a0gH/a/4qAOYKY/+iAOIA2+1bAIGyywDQMl/+ztBf//e/Wf5u6k//pT3zABR6cP/29rn+ZwR7AOlj5gHbW/z/x94W/7P16f/T8eoAb/rA/1VUiABlOjL/g62c/nctM/926RD+8lrWAF6f2wEDA+r/Ykxc/lA25gAF5Of+NRjf/3E4dgEUhAH/q9LsADjxnv+6cxP/COWuADAsAAFycqb/Bkni/81Z9ACJ40sB+K04AEp49v53Awv/UXjG/4h6Yv+S8d0BbcJO/9/xRgHWyKn/Yb4v/y9nrv9jXEj+dum0/8Ej6f4a5SD/3vzGAMwrR//HVKwAhma+AG/uYf7mKOYA481A/sgM4QCmGd4AcUUz/4+fGACnuEoAHeB0/p7Q6QDBdH7/1AuF/xY6jAHMJDP/6B4rAOtGtf9AOJL+qRJU/+IBDf/IMrD/NNX1/qjRYQC/RzcAIk6cAOiQOgG5Sr0Auo6V/kBFf/+hy5P/sJe/AIjny/6jtokAoX77/ukgQgBEz0IAHhwlAF1yYAH+XPf/LKtFAMp3C/+8djIB/1OI/0dSGgBG4wIAIOt5AbUpmgBHhuX+yv8kACmYBQCaP0n/IrZ8AHndlv8azNUBKaxXAFqdkv9tghQAR2vI//NmvQABw5H+Llh1AAjO4wC/bv3/bYAU/oZVM/+JsXAB2CIW/4MQ0P95laoAchMXAaZQH/9x8HoA6LP6AERutP7SqncA32yk/89P6f8b5eL+0WJR/09EBwCDuWQAqh2i/xGia/85FQsBZMi1/39BpgGlhswAaKeoAAGkTwCShzsBRjKA/2Z3Df7jBocAoo6z/6Bk3gAb4NsBnl3D/+qNiQAQGH3/7s4v/2ERYv90bgz/YHNNAFvj6P/4/k//XOUG/ljGiwDOS4EA+k3O/430ewGKRdwAIJcGAYOnFv/tRKf+x72WAKOriv8zvAb/Xx2J/pTiswC1a9D/hh9S/5dlLf+ByuEA4EiTADCKl//DQM7+7dqeAGodif79ven/Zw8R/8Jh/wCyLan+xuGbACcwdf+HanMAYSa1AJYvQf9TguX+9iaBAFzvmv5bY38AoW8h/+7Z8v+DucP/1b+e/ymW2gCEqYMAWVT8AatGgP+j+Mv+ATK0/3xMVQH7b1AAY0Lv/5rttv/dfoX+Ssxj/0GTd/9jOKf/T/iV/3Sb5P/tKw7+RYkL/xb68QFbeo//zfnzANQaPP8wtrABMBe//8t5mP4tStX/PloS/vWj5v+5anT/UyOfAAwhAv9QIj4AEFeu/61lVQDKJFH+oEXM/0DhuwA6zl4AVpAvAOVW9QA/kb4BJQUnAG37GgCJk+oAonmR/5B0zv/F6Ln/t76M/0kM/v+LFPL/qlrv/2FCu//1tYf+3og0APUFM/7LL04AmGXYAEkXfQD+YCEB69JJ/yvRWAEHgW0Aemjk/qryywDyzIf/yhzp/0EGfwCfkEcAZIxfAE6WDQD7a3YBtjp9/wEmbP+NvdH/CJt9AXGjW/95T77/hu9s/0wv+ACj5O8AEW8KAFiVS//X6+8Ap58Y/y+XbP9r0bwA6edj/hzKlP+uI4r/bhhE/wJFtQBrZlIAZu0HAFwk7f/dolMBN8oG/4fqh/8Y+t4AQV6o/vX40v+nbMn+/6FvAM0I/gCIDXQAZLCE/yvXfv+xhYL/nk+UAEPgJQEMzhX/PiJuAe1or/9QhG//jq5IAFTltP5ps4wAQPgP/+mKEAD1Q3v+2nnU/z9f2gHVhYn/j7ZS/zAcCwD0co0B0a9M/521lv+65QP/pJ1vAee9iwB3yr7/2mpA/0TrP/5gGqz/uy8LAdcS+/9RVFkARDqAAF5xBQFcgdD/YQ9T/gkcvADvCaQAPM2YAMCjYv+4EjwA2baLAG07eP8EwPsAqdLw/yWsXP6U0/X/s0E0AP0NcwC5rs4BcryV/+1arQArx8D/WGxxADQjTABCGZT/3QQH/5fxcv++0egAYjLHAJeW1f8SSiQBNSgHABOHQf8arEUAru1VAGNfKQADOBAAJ6Cx/8hq2v65RFT/W7o9/kOPjf8N9Kb/Y3LGAMduo//BEroAfO/2AW5EFgAC6y4B1DxrAGkqaQEO5pgABwWDAI1omv/VAwYAg+Si/7NkHAHne1X/zg7fAf1g5gAmmJUBYol6ANbNA//imLP/BoWJAJ5FjP9xopr/tPOs/xu9c/+PLtz/1Ybh/34dRQC8K4kB8kYJAFrM///nqpMAFzgT/jh9nf8ws9r/T7b9/ybUvwEp63wAYJccAIeUvgDN+Sf+NGCI/9QsiP9D0YP//IIX/9uAFP/GgXYAbGULALIFkgE+B2T/texe/hwapABMFnD/eGZPAMrA5QHIsNcAKUD0/864TgCnLT8BoCMA/zsMjv/MCZD/217lAXobcAC9aW3/QNBK//t/NwEC4sYALEzRAJeYTf/SFy4ByatF/yzT5wC+JeD/9cQ+/6m13v8i0xEAd/HF/+UjmAEVRSj/suKhAJSzwQDbwv4BKM4z/+dc+gFDmaoAFZTxAKpFUv95Euf/XHIDALg+5gDhyVf/kmCi/7Xy3ACtu90B4j6q/zh+2QF1DeP/syzvAJ2Nm/+Q3VMA69HQACoRpQH7UYUAfPXJ/mHTGP9T1qYAmiQJ//gvfwBa24z/odkm/tSTP/9CVJQBzwMBAOaGWQF/Tnr/4JsB/1KISgCynND/uhkx/94D0gHllr7/VaI0/ylUjf9Je1T+XRGWAHcTHAEgFtf/HBfM/47xNP/kNH0AHUzPANen+v6vpOYAN89pAW279f+hLNwBKWWA/6cQXgBd1mv/dkgA/lA96v95r30Ai6n7AGEnk/76xDH/pbNu/t9Gu/8Wjn0BmrOK/3awKgEKrpkAnFxmAKgNof+PECAA+sW0/8ujLAFXICQAoZkU/3v8DwAZ41AAPFiOABEWyQGazU3/Jz8vAAh6jQCAF7b+zCcT/wRwHf8XJIz/0up0/jUyP/95q2j/oNteAFdSDv7nKgUApYt//lZOJgCCPEL+yx4t/y7EegH5NaL/iI9n/tfScgDnB6D+qZgq/28t9gCOg4f/g0fM/yTiCwAAHPL/4YrV//cu2P71A7cAbPxKAc4aMP/NNvb/08Yk/3kjMgA02Mr/JouB/vJJlABD543/Ki/MAE50GQEE4b//BpPkADpYsQB6peX//FPJ/+CnYAGxuJ7/8mmzAfjG8ACFQssB/iQvAC0Yc/93Pv4AxOG6/nuNrAAaVSn/4m+3ANXnlwAEOwf/7oqUAEKTIf8f9o3/0Y10/2hwHwBYoawAU9fm/i9vlwAtJjQBhC3MAIqAbf7pdYb/876t/vHs8ABSf+z+KN+h/2624f97ru8Ah/KRATPRmgCWA3P+2aT8/zecRQFUXv//6EktARQT1P9gxTv+YPshACbHSQFArPf/dXQ4/+QREgA+imcB9uWk//R2yf5WIJ//bSKJAVXTugAKwcH+esKxAHruZv+i2qsAbNmhAZ6qIgCwL5sBteQL/wicAAAQS10AzmL/ATqaIwAM87j+Q3VC/+blewDJKm4AhuSy/rpsdv86E5r/Uqk+/3KPcwHvxDL/rTDB/5MCVP+WhpP+X+hJAG3jNP6/iQoAKMwe/kw0Yf+k634A/ny8AEq2FQF5HSP/8R4H/lXa1v8HVJb+URt1/6CfmP5CGN3/4wo8AY2HZgDQvZYBdbNcAIQWiP94xxwAFYFP/rYJQQDao6kA9pPG/2smkAFOr83/1gX6/i9YHf+kL8z/KzcG/4OGz/50ZNYAYIxLAWrckADDIBwBrFEF/8ezNP8lVMsAqnCuAAsEWwBF9BsBdYNcACGYr/+MmWv/+4cr/leKBP/G6pP+eZhU/81lmwGdCRkASGoR/myZAP+95boAwQiw/66V0QDugh0A6dZ+AT3iZgA5owQBxm8z/y1PTgFz0gr/2gkZ/56Lxv/TUrv+UIVTAJ2B5gHzhYb/KIgQAE1rT/+3VVwBsczKAKNHk/+YRb4ArDO8AfrSrP/T8nEBWVka/0BCb/50mCoAoScb/zZQ/gBq0XMBZ3xhAN3mYv8f5wYAssB4/g/Zy/98nk8AcJH3AFz6MAGjtcH/JS+O/pC9pf8ukvAABkuAACmdyP5XedUAAXHsAAUt+gCQDFIAH2znAOHvd/+nB73/u+SE/269IgBeLMwBojTFAE688f45FI0A9JIvAc5kMwB9a5T+G8NNAJj9WgEHj5D/MyUfACJ3Jv8HxXYAmbzTAJcUdP71QTT/tP1uAS+x0QChYxH/dt7KAH2z/AF7Nn7/kTm/ADe6eQAK84oAzdPl/32c8f6UnLn/4xO8/3wpIP8fIs7+ETlTAMwWJf8qYGIAd2a4AQO+HABuUtr/yMzA/8mRdgB1zJIAhCBiAcDCeQBqofgB7Vh8ABfUGgDNq1r/+DDYAY0l5v98ywD+nqge/9b4FQBwuwf/S4Xv/0rj8//6k0YA1niiAKcJs/8WnhIA2k3RAWFtUf/0IbP/OTQ5/0Gs0v/5R9H/jqnuAJ69mf+u/mf+YiEOAI1M5v9xizT/DzrUAKjXyf/4zNcB30Sg/zmat/4v53kAaqaJAFGIigClKzMA54s9ADlfO/52Yhn/lz/sAV6++v+puXIBBfo6/0tpYQHX34YAcWOjAYA+cABjapMAo8MKACHNtgDWDq7/gSbn/zW23wBiKp//9w0oALzSsQEGFQD//z2U/oktgf9ZGnT+fiZyAPsy8v55hoD/zPmn/qXr1wDKsfMAhY0+APCCvgFur/8AABSSASXSef8HJ4IAjvpU/43IzwAJX2j/C/SuAIbofgCnAXv+EMGV/+jp7wHVRnD//HSg/vLe3P/NVeMAB7k6AHb3PwF0TbH/PvXI/j8SJf9rNej+Mt3TAKLbB/4CXisAtj62/qBOyP+HjKoA67jkAK81iv5QOk3/mMkCAT/EIgAFHrgAq7CaAHk7zgAmYycArFBN/gCGlwC6IfH+Xv3f/yxy/ABsfjn/ySgN/yflG/8n7xcBl3kz/5mW+AAK6q7/dvYE/sj1JgBFofIBELKWAHE4ggCrH2kAGlhs/zEqagD7qUIARV2VABQ5/gCkGW8AWrxa/8wExQAo1TIB1GCE/1iKtP7kknz/uPb3AEF1Vv/9ZtL+/nkkAIlzA/88GNgAhhIdADviYQCwjkcAB9GhAL1UM/6b+kgA1VTr/y3e4ADulI//qio1/06ndQC6ACj/fbFn/0XhQgDjB1gBS6wGAKkt4wEQJEb/MgIJ/4vBFgCPt+f+2kUyAOw4oQHVgyoAipEs/ojlKP8xPyP/PZH1/2XAAv7op3EAmGgmAXm52gB5i9P+d/AjAEG92f67s6L/oLvmAD74Dv88TmEA//ej/+E7W/9rRzr/8S8hATJ17ADbsT/+9FqzACPC1/+9QzL/F4eBAGi9Jf+5OcIAIz7n/9z4bAAM57IAj1BbAYNdZf+QJwIB//qyAAUR7P6LIC4AzLwm/vVzNP+/cUn+v2xF/xZF9QEXy7IAqmOqAEH4bwAlbJn/QCVFAABYPv5ZlJD/v0TgAfEnNQApy+3/kX7C/90q/f8ZY5cAYf3fAUpzMf8Gr0j/O7DLAHy3+QHk5GMAgQzP/qjAw//MsBD+mOqrAE0lVf8heIf/jsLjAR/WOgDVu33/6C48/750Kv6XshP/Mz7t/szswQDC6DwArCKd/70QuP5nA1//jekk/ikZC/8Vw6YAdvUtAEPVlf+fDBL/u6TjAaAZBQAMTsMBK8XhADCOKf7Emzz/38cSAZGInAD8dan+keLuAO8XawBttbz/5nAx/kmq7f/nt+P/UNwUAMJrfwF/zWUALjTFAdKrJP9YA1r/OJeNAGC7//8qTsgA/kZGAfR9qADMRIoBfNdGAGZCyP4RNOQAddyP/sv4ewA4Eq7/upek/zPo0AGg5Cv/+R0ZAUS+PwANAAAAAP8AAAAA9QAAAAAAAPsAAAAAAAD9AAAAAPMAAAAABwAAAAAAAwAAAADzAAAAAAUAAAAAAAAAAAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACbolY/CsiewRcP0ifLvmPDV36wF08YzObE4AohtU/wFxxdqcD1N2E+6PAt2DRBnDyogU/osOczGTsf9d5KsA3rs////////////////////////////////////////f+3///////////////////////////////////////9/7v///////////////////////////////////////38GbQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gW5gvikKRRDdxz/vAtaXbtelbwlY58RHxWaSCP5LVXhyrmKoH2AFbgxK+hTEkw30MVXRdvnL+sd6Apwbcm3Txm8HBaZvkhke+78adwQ/MoQwkbyzpLaqEdErcqbBc2oj5dlJRPphtxjGoyCcDsMd/Wb/zC+DGR5Gn1VFjygZnKSkUhQq3JzghGy78bSxNEw04U1RzCmW7Cmp2LsnCgYUscpKh6L+iS2YaqHCLS8KjUWzHGeiS0SQGmdaFNQ70cKBqEBbBpBkIbDceTHdIJ7W8sDSzDBw5SqrYTk/KnFvzby5o7oKPdG9jpXgUeMiECALHjPr/vpDrbFCk96P5vvJ4ccaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMm882fmCWo7p8qEha5nuyv4lP5y82488TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gWyKuKNeYL4pCzWXvI5FEN3EvO03sz/vAtbzbiYGl27XpOLVI81vCVjkZ0AW28RHxWZtPGa+kgj+SGIFt2tVeHKtCAgOjmKoH2L5vcEUBW4MSjLLkTr6FMSTitP/Vw30MVW+Je/J0Xb5ysZYWO/6x3oA1Esclpwbcm5Qmac908ZvB0krxnsFpm+TjJU84hke+77XVjIvGncEPZZysd8yhDCR1AitZbyzpLYPkpm6qhHRK1PtBvdypsFy1UxGD2oj5dqvfZu5SUT6YEDK0LW3GMag/IfuYyCcDsOQO777Hf1m/wo+oPfML4MYlpwqTR5Gn1W+CA+BRY8oGcG4OCmcpKRT8L9JGhQq3JybJJlw4IRsu7SrEWvxtLE3fs5WdEw04U95jr4tUcwplqLJ3PLsKanbmru1HLsnCgTs1ghSFLHKSZAPxTKHov6IBMEK8S2YaqJGX+NBwi0vCML5UBqNRbMcYUu/WGeiS0RCpZVUkBpnWKiBxV4U1DvS40bsycKBqEMjQ0rgWwaQZU6tBUQhsNx6Z647fTHdIJ6hIm+G1vLA0Y1rJxbMMHDnLikHjSqrYTnPjY3dPypxbo7iy1vNvLmj8su9d7oKPdGAvF0NvY6V4cqvwoRR4yITsOWQaCALHjCgeYyP6/76Q6b2C3utsUKQVecay96P5vitTcuPyeHHGnGEm6s4+J8oHwsAhx7iG0R7r4M3WfdrqeNFu7n9PffW6bxdyqmfwBqaYyKLFfWMKrg35vgSYPxEbRxwTNQtxG4R9BCP1d9sokyTHQHuryjK8vskVCr6ePEwNEJzEZx1DtkI+y77UxUwqfmX8nCl/Wez61jqrb8tfF1hHSowZRGyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg63p8O0G4rhZW4/rxn8Rq2gmN65wysf2GYgUWX0m4AF+clbyjUIwksdCxVZyD71sERFzEWByOhtgiTt3QnxFX7P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMBAAAAAAAAAAAAAAAAAAAA7dP1XBpjEljWnPei3vneFAAAAAAAAAAAAAAAAAAAABBobWFjc2hhNTEyMjU2AGN1cnZlMjU1MTl4c2Fsc2EyMHBvbHkxMzA1AFMtPmJ1ZmxlbiA8PSBCTEFLRTJCX0JMT0NLQllURVMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2JsYWtlMmItcmVmLmMAY3J5cHRvX2dlbmVyaWNoYXNoX2JsYWtlMmJfX2ZpbmFsAG91dGxlbiA8PSBVSU5UOF9NQVgAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2dlbmVyaWNoYXNoX2JsYWtlMmIuYwBjcnlwdG9fZ2VuZXJpY2hhc2hfYmxha2UyYl9maW5hbABzaGE1MTIAYmxha2UyYgB4MjU1MTlibGFrZTJiAHBvbHkxMzA1ACRhcmdvbjJpZAAkYXJnb24yaQAkdj0AJG09ACx0PQAscD0AJGFyZ29uMmlkJHY9ACRhcmdvbjJpJHY9ACRhcmdvbjJpZCQAJGFyZ29uMmkkAGFyZ29uMmkAY3VydmUyNTUxOQB4c2Fsc2EyMHBvbHkxMzA1AHNpcGhhc2gyNABlZDI1NTE5AHhzYWxzYTIwAGpzACJ7IHJldHVybiBNb2R1bGUuZ2V0UmFuZG9tVmFsdWUoKTsgfSIAeyBpZiAoTW9kdWxlLmdldFJhbmRvbVZhbHVlID09PSB1bmRlZmluZWQpIHsgdHJ5IHsgdmFyIHdpbmRvd18gPSAnb2JqZWN0JyA9PT0gdHlwZW9mIHdpbmRvdyA/IHdpbmRvdyA6IHNlbGY7IHZhciBjcnlwdG9fID0gdHlwZW9mIHdpbmRvd18uY3J5cHRvICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvd18uY3J5cHRvIDogd2luZG93Xy5tc0NyeXB0bzsgdmFyIHJhbmRvbVZhbHVlc1N0YW5kYXJkID0gZnVuY3Rpb24oKSB7IHZhciBidWYgPSBuZXcgVWludDMyQXJyYXkoMSk7IGNyeXB0b18uZ2V0UmFuZG9tVmFsdWVzKGJ1Zik7IHJldHVybiBidWZbMF0gPj4+IDA7IH07IHJhbmRvbVZhbHVlc1N0YW5kYXJkKCk7IE1vZHVsZS5nZXRSYW5kb21WYWx1ZSA9IHJhbmRvbVZhbHVlc1N0YW5kYXJkOyB9IGNhdGNoIChlKSB7IHRyeSB7IHZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTsgdmFyIHJhbmRvbVZhbHVlTm9kZUpTID0gZnVuY3Rpb24oKSB7IHZhciBidWYgPSBjcnlwdG9bJ3JhbmRvbUJ5dGVzJ10oNCk7IHJldHVybiAoYnVmWzBdIDw8IDI0IHwgYnVmWzFdIDw8IDE2IHwgYnVmWzJdIDw8IDggfCBidWZbM10pID4+PiAwOyB9OyByYW5kb21WYWx1ZU5vZGVKUygpOyBNb2R1bGUuZ2V0UmFuZG9tVmFsdWUgPSByYW5kb21WYWx1ZU5vZGVKUzsgfSBjYXRjaCAoZSkgeyB0aHJvdyAnTm8gc2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGZvdW5kJzsgfSB9IH0gfQBMaWJzb2RpdW1EUkdidWZfbGVuIDw9IFNJWkVfTUFYAHJhbmRvbWJ5dGVzL3JhbmRvbWJ5dGVzLmMAcmFuZG9tYnl0ZXMAYjY0X3BvcyA8PSBiNjRfbGVuAHNvZGl1bS9jb2RlY3MuYwBzb2RpdW1fYmluMmJhc2U2NAAxLjAuMTcALi8wMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egAkNyQ=";var ne=z;function oe(e){return a.___errno_location&&(Q[a.___errno_location()>>2]=e),e}q=z+=16,M=b(S=(D=b(z=z+4+15&-16))+N),Q[q>>2]=M;var se=!1;function le(e){for(var a=[],r=0;r255&&(se&&v(!1,"Character code "+i+" ("+String.fromCharCode(i)+") at offset "+r+" not in 0x00-0xFF."),i&=255),a.push(String.fromCharCode(i))}return a.join("")}var ce="function"==typeof atob?atob:function(e){var a,r,i,t,n,o,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l="",c=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{a=s.indexOf(e.charAt(c++))<<2|(t=s.indexOf(e.charAt(c++)))>>4,r=(15&t)<<4|(n=s.indexOf(e.charAt(c++)))>>2,i=(3&n)<<6|(o=s.indexOf(e.charAt(c++))),l+=String.fromCharCode(a),64!==n&&(l+=String.fromCharCode(r)),64!==o&&(l+=String.fromCharCode(i))}while(c>2]>r)return!1;var i=G;for(G=Math.max(G,16777216);G>2];)G=G<=536870912?R(2*G,e):Math.min(R((3*G+2147483648)/4,e),r);var t,n=a.reallocBuffer(G);return n&&n.byteLength==G?(t=n,a.buffer=_=t,H(),!0):(G=i,!1)},d:function(){return G},e:function(e){k=e},f:function(){return k},g:function(){we("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+G+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},h:function(e,a,r,i){we("Assertion failed: "+I(e)+", at: "+[a?I(a):"unknown filename",r,i?I(i):"unknown function"])},i:oe,j:function(){a.abort()},k:function(e){return te[e]()},l:function(e,a,r){return C.set(C.subarray(a,a+r),e),e},m:function(e){switch(e){case 30:return 16384;case 85:return 130048;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return oe(22),-1},n:q,o:ne,p:D,q:S};var de,he=function(e,a,r){var i=e.Int8Array,t=new i(r),n=e.Int16Array,o=new n(r),s=e.Int32Array,l=new s(r),c=e.Uint8Array,u=new c(r),d=e.Uint16Array,h=(new d(r),e.Uint32Array),A=(new h(r),e.Float32Array),g=(new A(r),e.Float64Array),p=(new g(r),e.byteLength),m=0|a.n,f=(a.o,0|a.p),y=(a.q,0),b=(e.NaN,e.Infinity,e.Math.floor,e.Math.abs,e.Math.sqrt,e.Math.pow,e.Math.cos,e.Math.sin,e.Math.tan,e.Math.acos,e.Math.asin,e.Math.atan,e.Math.atan2,e.Math.exp,e.Math.log,e.Math.ceil,e.Math.imul),k=(e.Math.min,e.Math.max,e.Math.clz32),w=(a.a,a.b,a.c),v=a.d,I=a.e,_=a.f,B=a.g,C=a.h,E=a.i,Q=a.j,x=a.k,j=a.l,z=a.m;function D(e,a){e|=0,a|=0;var r,i,n,o,s,c,d=0,h=0,A=0,g=0,p=0,m=0,y=0,b=0,k=0,w=0,v=0,I=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0,N=0,G=0,Y=0,J=0,P=0,L=0,T=0,K=0,$=0,O=0,X=0,V=0,W=0,Z=0,ee=0,ae=0,re=0,ie=0,te=0,ne=0,oe=0,se=0,le=0,ce=0,ue=0,de=0,he=0,Ae=0,ge=0,pe=0,me=0,fe=0,ye=0;r=f,i=f=f+63&-64,f=f+256|0,d=0;do{g=0|gi(a+(d<<3)|0),A=0|_(),l[(h=i+128+(d<<3)|0)>>2]=g,l[h+4>>2]=A,d=d+1|0}while(16!=(0|d));a=e,h=(d=i)+64|0;do{t[d>>0]=0|t[a>>0],d=d+1|0,a=a+1|0}while((0|d)<(0|h));for(l[i+88>>2]=1595750129,l[i+88+4>>2]=-1521486534,P=-1377402159^(u[e+64>>0]|u[e+64+1>>0]<<8|u[e+64+2>>0]<<16|u[e+64+3>>0]<<24),J=1359893119^(u[e+64+4>>0]|u[e+64+4+1>>0]<<8|u[e+64+4+2>>0]<<16|u[e+64+4+3>>0]<<24),D=725511199^(u[e+72>>0]|u[e+72+1>>0]<<8|u[e+72+2>>0]<<16|u[e+72+3>>0]<<24),S=-1694144372^(u[e+72+4>>0]|u[e+72+4+1>>0]<<8|u[e+72+4+2>>0]<<16|u[e+72+4+3>>0]<<24),v=-79577749^(u[e+80>>0]|u[e+80+1>>0]<<8|u[e+80+2>>0]<<16|u[e+80+3>>0]<<24),I=528734635^(u[e+80+4>>0]|u[e+80+4+1>>0]<<8|u[e+80+4+2>>0]<<16|u[e+80+4+3>>0]<<24),ee=327033209^(u[e+88>>0]|u[e+88+1>>0]<<8|u[e+88+2>>0]<<16|u[e+88+3>>0]<<24),Z=1541459225^(u[e+88+4>>0]|u[e+88+4+1>>0]<<8|u[e+88+4+2>>0]<<16|u[e+88+4+3>>0]<<24),P=0|wi((fe=0|yt(0|(me=0|yt(0|(b=0|wi((a=0|yt(0|(J=0|wi((fe=0|yt(0|(me=0|yt(0|(y=0|l[i+32>>2]),0|(b=0|l[i+32+4>>2]),0|l[i>>2],0|l[i+4>>2])),0|(fe=0|_()),0|(L=0|l[i+128>>2]),0|(T=0|l[i+128+4>>2])))^P,(me=0|_())^J,32)),0|(P=0|_()),-205731576,1779033703))^y,(g=0|_())^b,24)),0|(y=0|_()),0|fe,0|me)),0|(fe=0|_()),0|(ae=0|l[i+128+8>>2]),0|(re=0|l[i+128+8+4>>2])))^J,(me=0|_())^P,16),J=0|_(),l[i+96>>2]=P,l[i+96+4>>2]=J,g=0|yt(0|P,0|J,0|a,0|g),a=0|_(),l[i+64>>2]=g,l[i+64+4>>2]=a,y=0|wi(g^b,a^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,D=0|wi((de=0|yt(0|(he=0|yt(0|(V=0|wi((m=0|yt(0|(S=0|wi((de=0|yt(0|(he=0|yt(0|(X=0|l[i+40>>2]),0|(V=0|l[i+40+4>>2]),0|l[i+8>>2],0|l[i+8+4>>2])),0|(de=0|_()),0|(d=0|l[i+128+16>>2]),0|(h=0|l[i+128+16+4>>2])))^D,(he=0|_())^S,32)),0|(D=0|_()),-2067093701,-1150833019))^X,(k=0|_())^V,24)),0|(X=0|_()),0|de,0|he)),0|(de=0|_()),0|(w=0|l[i+128+24>>2]),0|(B=0|l[i+128+24+4>>2])))^S,(he=0|_())^D,16),S=0|_(),l[i+104>>2]=D,l[i+104+4>>2]=S,k=0|yt(0|D,0|S,0|m,0|k),m=0|_(),l[i+72>>2]=k,l[i+72+4>>2]=m,X=0|wi(k^V,m^X,63),V=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(ce=0|yt(0|(G=0|wi((O=0|yt(0|(I=0|wi((le=0|yt(0|(ce=0|yt(0|(N=0|l[i+48>>2]),0|(G=0|l[i+48+4>>2]),0|l[i+16>>2],0|l[i+16+4>>2])),0|(le=0|_()),0|(c=0|l[i+128+32>>2]),0|(Ae=0|l[i+128+32+4>>2])))^v,(ce=0|_())^I,32)),0|(v=0|_()),-23791573,1013904242))^N,(W=0|_())^G,24)),0|(N=0|_()),0|le,0|ce)),0|(le=0|_()),0|(n=0|l[i+128+40>>2]),0|(Q=0|l[i+128+40+4>>2])))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(oe=0|yt(0|(x=0|wi((H=0|yt(0|(Z=0|wi((ne=0|yt(0|(oe=0|yt(0|(j=0|l[i+56>>2]),0|(x=0|l[i+56+4>>2]),0|l[i+24>>2],0|l[i+24+4>>2])),0|(ne=0|_()),0|(E=0|l[i+128+48>>2]),0|(C=0|l[i+128+48+4>>2])))^ee,(oe=0|_())^Z,32)),0|(ee=0|_()),1595750129,-1521486534))^j,(Y=0|_())^x,24)),0|(j=0|_()),0|ne,0|oe)),0|(ne=0|_()),0|(z=0|l[i+128+56>>2]),0|(M=0|l[i+128+56+4>>2])))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),ee=0|wi((fe=0|yt(0|(me=0|yt(0|(V=0|wi((O=0|yt(0|(Z=0|wi((fe=0|yt(0|(me=0|yt(0|X,0|V,0|fe,0|me)),0|(fe=0|_()),0|(K=0|l[i+128+64>>2]),0|($=0|l[i+128+64+4>>2])))^ee,(me=0|_())^Z,32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24)),0|(X=0|_()),0|fe,0|me)),0|(fe=0|_()),0|(s=0|l[i+128+72>>2]),0|(ue=0|l[i+128+72+4>>2])))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,W=0|yt(0|ee,0|Z,0|O,0|W),O=0|_(),l[i+80>>2]=W,l[i+80+4>>2]=O,X=0|wi(W^V,O^X,63),V=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(he=0|yt(0|(G=0|wi((H=0|yt(0|(J=0|wi((de=0|yt(0|(he=0|yt(0|N,0|G,0|de,0|he)),0|(de=0|_()),0|(ie=0|l[i+128+80>>2]),0|(te=0|l[i+128+80+4>>2])))^P,(he=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24)),0|(N=0|_()),0|de,0|he)),0|(de=0|_()),0|(q=0|l[i+128+88>>2]),0|(F=0|l[i+128+88+4>>2])))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(ce=0|yt(0|(x=0|wi((a=0|yt(0|(S=0|wi((le=0|yt(0|(ce=0|yt(0|j,0|x,0|le,0|ce)),0|(le=0|_()),0|(A=0|l[i+128+96>>2]),0|(p=0|l[i+128+96+4>>2])))^D,(ce=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24)),0|(j=0|_()),0|le,0|ce)),0|(le=0|_()),0|(o=0|l[i+128+104>>2]),0|(se=0|l[i+128+104+4>>2])))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(oe=0|yt(0|(b=0|wi((m=0|yt(0|(I=0|wi((ne=0|yt(0|(oe=0|yt(0|ne,0|oe,0|y,0|b)),0|(ne=0|_()),0|(ge=0|l[i+128+112>>2]),0|(pe=0|l[i+128+112+4>>2])))^v,(oe=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24)),0|(y=0|_()),0|ne,0|oe)),0|(ne=0|_()),0|(U=0|l[i+128+120>>2]),0|(R=0|l[i+128+120+4>>2])))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|ge,0|pe,0|fe,0|me)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|ie,0|te)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|c,0|Ae)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|K,0|$)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|s,0|ue)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|U,0|R,0|ce,0|le)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|o,0|se)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|E,0|C)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|ae,0|re)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|A,0|p)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|L,0|T)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|d,0|h)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|q,0|F)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|z,0|M)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|n,0|Q)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|w,0|B)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|fe,0|me,0|q,0|F)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|K,0|$)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|A,0|p)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|L,0|T)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|n,0|Q)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|d,0|h)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|U,0|R)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|o,0|se)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|ie,0|te)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|ge,0|pe)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|w,0|B)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|E,0|C)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|z,0|M)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|ae,0|re)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|s,0|ue)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|c,0|Ae)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|fe,0|me,0|z,0|M)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|s,0|ue)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|w,0|B)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|ae,0|re)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|o,0|se)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|A,0|p)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|q,0|F)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|ge,0|pe)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|d,0|h)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|E,0|C)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|n,0|Q)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|ie,0|te)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|c,0|Ae)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|L,0|T)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|U,0|R)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|K,0|$)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|fe,0|me,0|s,0|ue)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|L,0|T)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|n,0|Q)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|z,0|M)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|d,0|h)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|c,0|Ae)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|ie,0|te)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|U,0|R)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|ge,0|pe)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|ae,0|re)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|q,0|F)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|A,0|p)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|E,0|C)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|K,0|$)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|w,0|B)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|o,0|se)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|fe,0|me,0|d,0|h)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|A,0|p)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|E,0|C)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|ie,0|te)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|L,0|T)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|q,0|F)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|K,0|$)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|w,0|B)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|c,0|Ae)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|o,0|se)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|z,0|M)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|n,0|Q)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|U,0|R)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|ge,0|pe)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|ae,0|re)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|s,0|ue)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|fe,0|me,0|A,0|p)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|n,0|Q)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|ae,0|re)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|U,0|R)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|ge,0|pe)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|o,0|se)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|c,0|Ae)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|ie,0|te)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|L,0|T)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|z,0|M)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|E,0|C)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|w,0|B)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|s,0|ue)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|d,0|h)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|K,0|$)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|q,0|F)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|fe,0|me,0|o,0|se)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|q,0|F)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|z,0|M)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|ge,0|pe)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|A,0|p)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|ae,0|re)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|w,0|B)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|s,0|ue)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|n,0|Q)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|L,0|T)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|U,0|R)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|c,0|Ae)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|K,0|$)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|E,0|C)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|d,0|h)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|ie,0|te)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|fe,0|me,0|E,0|C)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|U,0|R)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|ge,0|pe)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|s,0|ue)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|q,0|F)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|w,0|B)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|L,0|T)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|K,0|$)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|A,0|p)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|d,0|h)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|o,0|se)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|z,0|M)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|ae,0|re)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|c,0|Ae)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|ie,0|te)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|n,0|Q)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|fe,0|me,0|ie,0|te)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|d,0|h)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|K,0|$)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|c,0|Ae)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|z,0|M)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|E,0|C)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|ae,0|re)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|n,0|Q)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|U,0|R)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|q,0|F)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|s,0|ue)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|ge,0|pe)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|w,0|B)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|A,0|p)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|o,0|se)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|L,0|T)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((me=0|yt(0|(me=0|yt(0|fe,0|me,0|L,0|T)),0|_(),0|y,0|b))^P,(fe=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|ae,0|re)),0|_(),0|b,0|y))^J,(me=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(ye=0|yt(0|X,0|V,0|d,0|h)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|w,0|B)),0|_(),0|V,0|X))^S,(he=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ye=0|yt(0|N,0|G,0|c,0|Ae)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|n,0|Q)),0|_(),0|G,0|N))^I,(ce=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(ye=0|yt(0|j,0|x,0|E,0|C)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|z,0|M)),0|_(),0|x,0|j))^Z,(oe=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(me=0|yt(0|(me=0|yt(0|fe,0|me,0|K,0|$)),0|_(),0|X,0|V)),Z^(fe=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),ee=0|wi((fe=0|yt(0|(fe=0|yt(0|me,0|fe,0|s,0|ue)),0|_(),0|V,0|X))^Z,(me=0|_())^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,X=0|wi((W=0|yt(0|ee,0|Z,0|O,0|W))^V,(O=0|_())^X,63),V=0|_(),G=0|wi((H=0|yt(0|(J=0|wi((he=0|yt(0|(he=0|yt(0|de,0|he,0|ie,0|te)),0|_(),0|N,0|G))^P,(de=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),N=0|wi((Y=0|yt(0|(P=0|wi((de=0|yt(0|(de=0|yt(0|he,0|de,0|q,0|F)),0|_(),0|G,0|N))^J,(he=0|_())^P,16)),0|(J=0|_()),0|H,0|Y))^G,(H=0|_())^N,63),G=0|_(),x=0|wi((a=0|yt(0|(S=0|wi((ce=0|yt(0|(ce=0|yt(0|le,0|ce,0|A,0|p)),0|_(),0|j,0|x))^D,(le=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),j=0|wi((g=0|yt(0|(D=0|wi((le=0|yt(0|(le=0|yt(0|ce,0|le,0|o,0|se)),0|_(),0|x,0|j))^S,(ce=0|_())^D,16)),0|(S=0|_()),0|a,0|g))^x,(a=0|_())^j,63),x=0|_(),b=0|wi((m=0|yt(0|(I=0|wi((oe=0|yt(0|(ye=0|yt(0|y,0|b,0|ge,0|pe)),0|_(),0|ne,0|oe))^v,(ne=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),y=0|wi((k=0|yt(0|(v=0|wi((ne=0|yt(0|(ne=0|yt(0|oe,0|ne,0|U,0|R)),0|_(),0|b,0|y))^I,(oe=0|_())^v,16)),0|(I=0|_()),0|m,0|k))^b,(m=0|_())^y,63),b=0|_(),b=0|wi((a=0|yt(0|(J=0|wi((pe=0|yt(0|(pe=0|yt(0|fe,0|me,0|ge,0|pe)),0|_(),0|y,0|b))^P,(ge=0|_())^J,32)),0|(P=0|_()),0|g,0|a))^y,(g=0|_())^b,24),y=0|_(),y=0|wi((g=0|yt(0|(P=0|wi((te=0|yt(0|(te=0|yt(0|pe,0|ge,0|ie,0|te)),0|_(),0|b,0|y))^J,(ie=0|_())^P,16)),0|(J=0|_()),0|a,0|g))^b,(a=0|_())^y,63),b=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=b,V=0|wi((m=0|yt(0|(S=0|wi(D^(he=0|yt(0|(Ae=0|yt(0|X,0|V,0|c,0|Ae)),0|_(),0|de,0|he)),S^(de=0|_()),32)),0|(D=0|_()),0|k,0|m))^X,(k=0|_())^V,24),X=0|_(),X=0|wi((k=0|yt(0|(D=0|wi(($=0|yt(0|($=0|yt(0|he,0|de,0|K,0|$)),0|_(),0|V,0|X))^S,(K=0|_())^D,16)),0|(S=0|_()),0|m,0|k))^V,(m=0|_())^X,63),V=0|_(),G=0|wi((O=0|yt(0|(I=0|wi(v^(ce=0|yt(0|(ue=0|yt(0|N,0|G,0|s,0|ue)),0|_(),0|le,0|ce)),I^(le=0|_()),32)),0|(v=0|_()),0|W,0|O))^N,(W=0|_())^G,24),N=0|_(),N=0|wi((W=0|yt(0|(v=0|wi((R=0|yt(0|(R=0|yt(0|ce,0|le,0|U,0|R)),0|_(),0|G,0|N))^I,(U=0|_())^v,16)),0|(I=0|_()),0|O,0|W))^G,(O=0|_())^N,63),G=0|_(),x=0|wi((H=0|yt(0|(Z=0|wi((oe=0|yt(0|(se=0|yt(0|j,0|x,0|o,0|se)),0|_(),0|ne,0|oe))^ee,(ne=0|_())^Z,32)),0|(ee=0|_()),0|Y,0|H))^j,(Y=0|_())^x,24),j=0|_(),j=0|wi((Y=0|yt(0|(ee=0|wi((C=0|yt(0|(C=0|yt(0|oe,0|ne,0|E,0|C)),0|_(),0|x,0|j))^Z,(E=0|_())^ee,16)),0|(Z=0|_()),0|H,0|Y))^x,(H=0|_())^j,63),x=0|_(),V=0|wi((O=0|yt(0|(Z=0|wi(ee^(re=0|yt(0|(re=0|yt(0|te,0|ie,0|ae,0|re)),0|_(),0|X,0|V)),Z^(ae=0|_()),32)),0|(ee=0|_()),0|W,0|O))^X,(W=0|_())^V,24),X=0|_(),p=0|yt(0|(p=0|yt(0|re,0|ae,0|A,0|p)),0|_(),0|V,0|X),A=0|_(),l[i>>2]=p,l[i+4>>2]=A,ee=0|wi(p^Z,A^ee,16),Z=0|_(),l[i+120>>2]=ee,l[i+120+4>>2]=Z,W=0|yt(0|ee,0|Z,0|O,0|W),O=0|_(),l[i+80>>2]=W,l[i+80+4>>2]=O,X=0|wi(W^V,O^X,63),O=0|_(),l[i+40>>2]=X,l[i+40+4>>2]=O,G=0|wi((H=0|yt(0|(J=0|wi((T=0|yt(0|(T=0|yt(0|$,0|K,0|L,0|T)),0|_(),0|N,0|G))^P,(L=0|_())^J,32)),0|(P=0|_()),0|Y,0|H))^N,(Y=0|_())^G,24),N=0|_(),h=0|yt(0|(h=0|yt(0|T,0|L,0|d,0|h)),0|_(),0|G,0|N),d=0|_(),l[i+8>>2]=h,l[i+8+4>>2]=d,P=0|wi(h^J,d^P,16),J=0|_(),l[i+96>>2]=P,l[i+96+4>>2]=J,Y=0|yt(0|P,0|J,0|H,0|Y),H=0|_(),l[i+88>>2]=Y,l[i+88+4>>2]=H,N=0|wi(Y^G,H^N,63),H=0|_(),l[i+48>>2]=N,l[i+48+4>>2]=H,x=0|wi((a=0|yt(0|(S=0|wi((F=0|yt(0|(F=0|yt(0|R,0|U,0|q,0|F)),0|_(),0|j,0|x))^D,(q=0|_())^S,32)),0|(D=0|_()),0|g,0|a))^j,(g=0|_())^x,24),j=0|_(),M=0|yt(0|(M=0|yt(0|F,0|q,0|z,0|M)),0|_(),0|x,0|j),z=0|_(),l[i+16>>2]=M,l[i+16+4>>2]=z,D=0|wi(M^S,z^D,16),z=0|_(),l[i+104>>2]=D,l[i+104+4>>2]=z,g=0|yt(0|D,0|z,0|a,0|g),a=0|_(),l[i+64>>2]=g,l[i+64+4>>2]=a,j=0|wi(g^x,a^j,63),x=0|_(),l[i+56>>2]=j,l[i+56+4>>2]=x,b=0|wi((m=0|yt(0|(I=0|wi((E=0|yt(0|(Q=0|yt(0|y,0|b,0|n,0|Q)),0|_(),0|C,0|E))^v,(C=0|_())^I,32)),0|(v=0|_()),0|k,0|m))^y,(k=0|_())^b,24),y=0|_(),B=0|yt(0|(B=0|yt(0|E,0|C,0|w,0|B)),0|_(),0|b,0|y),w=0|_(),l[i+24>>2]=B,l[i+24+4>>2]=w,v=0|wi(B^I,w^v,16),w=0|_(),l[i+112>>2]=v,l[i+112+4>>2]=w,k=0|yt(0|v,0|w,0|m,0|k),m=0|_(),l[i+72>>2]=k,l[i+72+4>>2]=m,y=0|wi(k^b,m^y,63),m=0|_(),l[i+32>>2]=y,l[i+32+4>>2]=m,g=p^(u[e>>0]|u[e+1>>0]<<8|u[e+2>>0]<<16|u[e+3>>0]<<24)^g,a=A^(u[e+4>>0]|u[e+4+1>>0]<<8|u[e+4+2>>0]<<16|u[e+4+3>>0]<<24)^a,t[e>>0]=g,t[e+1>>0]=g>>8,t[e+2>>0]=g>>16,t[e+3>>0]=g>>24,t[e+4>>0]=a,t[e+4+1>>0]=a>>8,t[e+4+2>>0]=a>>16,t[e+4+3>>0]=a>>24,a=1;me=i+(a+8<<3)|0,fe=h^(u[(ye=e+(a<<3)|0)>>0]|u[ye+1>>0]<<8|u[ye+2>>0]<<16|u[ye+3>>0]<<24)^l[me>>2],d=d^(u[ye+4>>0]|u[ye+4+1>>0]<<8|u[ye+4+2>>0]<<16|u[ye+4+3>>0]<<24)^l[me+4>>2],t[ye>>0]=fe,t[ye+1>>0]=fe>>8,t[ye+2>>0]=fe>>16,t[ye+3>>0]=fe>>24,t[ye+4>>0]=d,t[ye+4+1>>0]=d>>8,t[ye+4+2>>0]=d>>16,t[ye+4+3>>0]=d>>24,8!=(0|(d=a+1|0));)a=d,h=0|l[i+(d<<3)>>2],d=0|l[i+(d<<3)+4>>2];f=r}function S(e,a,r,i){e|=0,r|=0,i|=0;var n,o,s,l,c,u,d,h,A,g,p,m,f,y,b,k,w,v,I,B,C,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0,N=0,G=0,Y=0,J=0,P=0,L=0,T=0,K=0,$=0,O=0,X=0,V=0,W=0,Z=0,ee=0,ae=0,re=0,ie=0,te=0,ne=0,oe=0,se=0,le=0,ce=0,ue=0,de=0,he=0,Ae=0,ge=0,pe=0,me=0,fe=0,ye=0,be=0,ke=0,we=0,ve=0,Ie=0,_e=0,Be=0,Ce=0,Ee=0,Qe=0,xe=0,je=0,ze=0,De=0,Se=0,Me=0,qe=0,Fe=0,Ue=0,Re=0,He=0,Ne=0,Ge=0,Ye=0,Je=0,Pe=0,Le=0,Te=0,Ke=0,$e=0,Oe=0,Xe=0,Ve=0,We=0,Ze=0,ea=0,aa=0,ra=0,ia=0,ta=0,na=0,oa=0,sa=0,la=0,ca=0,ua=0,da=0,ha=0,Aa=0,ga=0,pa=0,ma=0,fa=0,ya=0,ba=0,ka=0,wa=0,va=0,Ia=0,_a=0,Ba=0,Ca=0,Ea=0,Qa=0,xa=0,ja=0,za=0,Da=0,Sa=0,Ma=0,qa=0,Fa=0,Ua=0,Ra=0,Ha=0,Na=0,Ga=0,Ya=0,Ja=0,Pa=0,La=0,Ta=0,Ka=0,$a=0,Oa=0,Xa=0,Va=0,Wa=0,Za=0,er=0,ar=0,rr=0,ir=0,tr=0,nr=0,or=0,sr=0,lr=0,cr=0,ur=0,dr=0,hr=0,Ar=0,gr=0,pr=0,mr=0,fr=0;me=0|Qi(0|t[(a|=0)>>0],0|t[a+1>>0],0|t[a+2>>0]),_(),Da=0|Oi(0|(Da=0|Er(a+2|0)),0|_(),5),_(),Ia=0|Oi(0|(Ia=0|Qi(0|t[a+5>>0],0|t[a+6>>0],0|t[a+7>>0])),0|_(),2),_(),za=0|Oi(0|(za=0|Er(a+7|0)),0|_(),7),_(),fa=0|Oi(0|(fa=0|Er(a+10|0)),0|_(),4),_(),te=0|Oi(0|(te=0|Qi(0|t[a+13>>0],0|t[a+14>>0],0|t[a+15>>0])),0|_(),1),_(),we=0|Oi(0|(we=0|Er(a+15|0)),0|_(),6),_(),E=0|Oi(0|(E=0|Qi(0|t[a+18>>0],0|t[a+19>>0],0|t[a+20>>0])),0|_(),3),_(),ne=0|Qi(0|t[a+21>>0],0|t[a+22>>0],0|t[a+23>>0]),_(),K=0|Oi(0|(K=0|Er(a+23|0)),0|_(),5),_(),_e=0|Oi(0|(_e=0|Qi(0|t[a+26>>0],0|t[a+27>>0],0|t[a+28>>0])),0|_(),2),_(),Qe=0|Oi(0|(Qe=0|Er(a+28|0)),0|_(),7),xe=0|_(),Ja=0|Qi(0|t[r>>0],0|t[r+1>>0],0|t[r+2>>0]),_(),ba=0|Oi(0|(ba=0|Er(r+2|0)),0|_(),5),_(),ra=0|Oi(0|(ra=0|Qi(0|t[r+5>>0],0|t[r+6>>0],0|t[r+7>>0])),0|_(),2),_(),Q=0|Oi(0|(Q=0|Er(r+7|0)),0|_(),7),_(),x=0|Oi(0|(x=0|Er(r+10|0)),0|_(),4),_(),Y=0|Oi(0|(Y=0|Qi(0|t[r+13>>0],0|t[r+14>>0],0|t[r+15>>0])),0|_(),1),_(),Oe=0|Oi(0|(Oe=0|Er(r+15|0)),0|_(),6),_(),ye=0|Oi(0|(ye=0|Qi(0|t[r+18>>0],0|t[r+19>>0],0|t[r+20>>0])),0|_(),3),_(),Re=0|Qi(0|t[r+21>>0],0|t[r+22>>0],0|t[r+23>>0]),_(),ae=0|Oi(0|(ae=0|Er(r+23|0)),0|_(),5),_(),Ra=0|Oi(0|(Ra=0|Qi(0|t[r+26>>0],0|t[r+27>>0],0|t[r+28>>0])),0|_(),2),_(),Ae=0|Oi(0|(Ae=0|Er(r+28|0)),0|_(),7),he=0|_(),Ge=0|Qi(0|t[i>>0],0|t[i+1>>0],0|t[i+2>>0]),_(),ie=0|Oi(0|(ie=0|Er(i+2|0)),0|_(),5),_(),Je=0|Oi(0|(Je=0|Qi(0|t[i+5>>0],0|t[i+6>>0],0|t[i+7>>0])),0|_(),2),_(),qe=0|Oi(0|(qe=0|Er(i+7|0)),0|_(),7),_(),Ue=0|Oi(0|(Ue=0|Er(i+10|0)),0|_(),4),_(),Xe=0|Oi(0|(Xe=0|Qi(0|t[i+13>>0],0|t[i+14>>0],0|t[i+15>>0])),0|_(),1),_(),Ca=0|Oi(0|(Ca=0|Er(i+15|0)),0|_(),6),_(),S=0|Oi(0|(S=0|Qi(0|t[i+18>>0],0|t[i+19>>0],0|t[i+20>>0])),0|_(),3),_(),ua=0|Qi(0|t[i+21>>0],0|t[i+22>>0],0|t[i+23>>0]),_(),Te=0|Oi(0|(Te=0|Er(i+23|0)),0|_(),5),_(),ge=0|Oi(0|(ge=0|Qi(0|t[i+26>>0],0|t[i+27>>0],0|t[i+28>>0])),0|_(),2),_(),wa=0|Oi(0|(wa=0|Er(i+28|0)),0|_(),7),Ea=0|_(),Ne=0|yt(2097151&Ge|0,0,0|(Ne=0|ji(2097151&Ja|0,0,2097151&me|0,0)),0|_()),Ge=0|_(),k=0|ji(2097151&ba|0,0,2097151&me|0,0),b=0|_(),y=0|ji(2097151&Ja|0,0,2097151&Da|0,0),Ze=0|_(),W=0|ji(2097151&ra|0,0,2097151&me|0,0),Ye=0|_(),Je=0|yt(0|(Ye=0|yt(0|(Me=0|yt(0|(V=0|ji(2097151&ba|0,0,2097151&Da|0,0)),0|_(),0|(Me=0|ji(2097151&Ja|0,0,2097151&Ia|0,0)),0|_())),0|_(),0|W,0|Ye)),0|_(),2097151&Je|0,0),Ye=0|_(),W=0|ji(2097151&Q|0,0,2097151&me|0,0),Me=0|_(),C=0|ji(2097151&ra|0,0,2097151&Da|0,0),V=0|_(),f=0|ji(2097151&ba|0,0,2097151&Ia|0,0),m=0|_(),p=0|ji(2097151&Ja|0,0,2097151&za|0,0),fr=0|_(),de=0|ji(2097151&x|0,0,2097151&me|0,0),Fe=0|_(),hr=0|ji(2097151&Q|0,0,2097151&Da|0,0),Ve=0|_(),gr=0|ji(2097151&ra|0,0,2097151&Ia|0,0),U=0|_(),Ue=0|yt(0|(Fe=0|yt(0|(Ve=0|yt(0|(U=0|yt(0|(Ar=0|yt(0|(pr=0|ji(2097151&ba|0,0,2097151&za|0,0)),0|_(),0|(Ar=0|ji(2097151&Ja|0,0,2097151&fa|0,0)),0|_())),0|_(),0|gr,0|U)),0|_(),0|hr,0|Ve)),0|_(),0|de,0|Fe)),0|_(),2097151&Ue|0,0),Fe=0|_(),de=0|ji(2097151&Y|0,0,2097151&me|0,0),Ve=0|_(),hr=0|ji(2097151&x|0,0,2097151&Da|0,0),U=0|_(),gr=0|ji(2097151&Q|0,0,2097151&Ia|0,0),Ar=0|_(),B=0|ji(2097151&ra|0,0,2097151&za|0,0),pr=0|_(),g=0|ji(2097151&ba|0,0,2097151&fa|0,0),A=0|_(),h=0|ji(2097151&Ja|0,0,2097151&te|0,0),mr=0|_(),a=0|ji(2097151&Oe|0,0,2097151&me|0,0),ka=0|_(),ir=0|ji(2097151&Y|0,0,2097151&Da|0,0),j=0|_(),nr=0|ji(2097151&x|0,0,2097151&Ia|0,0),D=0|_(),sr=0|ji(2097151&Q|0,0,2097151&za|0,0),tr=0|_(),cr=0|ji(2097151&ra|0,0,2097151&fa|0,0),or=0|_(),Ca=0|yt(0|(ka=0|yt(0|(j=0|yt(0|(D=0|yt(0|(tr=0|yt(0|(or=0|yt(0|(lr=0|yt(0|(ur=0|ji(2097151&ba|0,0,2097151&te|0,0)),0|_(),0|(lr=0|ji(2097151&Ja|0,0,2097151&we|0,0)),0|_())),0|_(),0|cr,0|or)),0|_(),0|sr,0|tr)),0|_(),0|nr,0|D)),0|_(),0|ir,0|j)),0|_(),0|a,0|ka)),0|_(),2097151&Ca|0,0),ka=0|_(),a=0|ji(2097151&ye|0,0,2097151&me|0,0),j=0|_(),ir=0|ji(2097151&Oe|0,0,2097151&Da|0,0),D=0|_(),nr=0|ji(2097151&Y|0,0,2097151&Ia|0,0),tr=0|_(),sr=0|ji(2097151&x|0,0,2097151&za|0,0),or=0|_(),cr=0|ji(2097151&Q|0,0,2097151&fa|0,0),lr=0|_(),I=0|ji(2097151&ra|0,0,2097151&te|0,0),ur=0|_(),d=0|ji(2097151&ba|0,0,2097151&we|0,0),u=0|_(),c=0|ji(2097151&Ja|0,0,2097151&E|0,0),dr=0|_(),Ta=0|ji(2097151&Re|0,0,2097151&me|0,0),z=0|_(),T=0|ji(2097151&ye|0,0,2097151&Da|0,0),da=0|_(),Pa=0|ji(2097151&Oe|0,0,2097151&Ia|0,0),La=0|_(),$a=0|ji(2097151&Y|0,0,2097151&za|0,0),L=0|_(),Xa=0|ji(2097151&x|0,0,2097151&fa|0,0),Ka=0|_(),Wa=0|ji(2097151&Q|0,0,2097151&te|0,0),Oa=0|_(),er=0|ji(2097151&ra|0,0,2097151&we|0,0),Va=0|_(),ua=0|yt(0|(da=0|yt(0|(z=0|yt(0|(La=0|yt(0|(L=0|yt(0|(Ka=0|yt(0|(Oa=0|yt(0|(Va=0|yt(0|(Za=0|yt(0|(ar=0|ji(2097151&ba|0,0,2097151&E|0,0)),0|_(),0|(Za=0|ji(2097151&Ja|0,0,2097151&ne|0,0)),0|_())),0|_(),0|er,0|Va)),0|_(),0|Wa,0|Oa)),0|_(),0|Xa,0|Ka)),0|_(),0|$a,0|L)),0|_(),0|Pa,0|La)),0|_(),0|Ta,0|z)),0|_(),0|T,0|da)),0|_(),2097151&ua|0,0),da=0|_(),T=0|ji(2097151&ae|0,0,2097151&me|0,0),z=0|_(),Ta=0|ji(2097151&Re|0,0,2097151&Da|0,0),La=0|_(),Pa=0|ji(2097151&ye|0,0,2097151&Ia|0,0),L=0|_(),$a=0|ji(2097151&Oe|0,0,2097151&za|0,0),Ka=0|_(),Xa=0|ji(2097151&Y|0,0,2097151&fa|0,0),Oa=0|_(),Wa=0|ji(2097151&x|0,0,2097151&te|0,0),Va=0|_(),er=0|ji(2097151&Q|0,0,2097151&we|0,0),Za=0|_(),v=0|ji(2097151&ra|0,0,2097151&E|0,0),ar=0|_(),l=0|ji(2097151&ba|0,0,2097151&ne|0,0),s=0|_(),o=0|ji(2097151&Ja|0,0,2097151&K|0,0),rr=0|_(),fe=0|ji(2097151&Ra|0,0,2097151&me|0,0),pe=0|_(),X=0|ji(2097151&ae|0,0,2097151&Da|0,0),O=0|_(),sa=0|ji(2097151&Re|0,0,2097151&Ia|0,0),oa=0|_(),qa=0|ji(2097151&ye|0,0,2097151&za|0,0),Ma=0|_(),oe=0|ji(2097151&Oe|0,0,2097151&fa|0,0),q=0|_(),Ba=0|ji(2097151&Y|0,0,2097151&te|0,0),_a=0|_(),aa=0|ji(2097151&x|0,0,2097151&we|0,0),ea=0|_(),Aa=0|ji(2097151&Q|0,0,2097151&E|0,0),ha=0|_(),$=0|ji(2097151&ra|0,0,2097151&ne|0,0),i=0|_(),ge=0|yt(0|(pe=0|yt(0|(O=0|yt(0|(Ma=0|yt(0|(oa=0|yt(0|(q=0|yt(0|(_a=0|yt(0|(ea=0|yt(0|(ha=0|yt(0|(i=0|yt(0|(Ga=0|yt(0|ji(2097151&ba|0,0,2097151&K|0,0),0|(Na=0|_()),0|(Ga=0|ji(2097151&Ja|0,0,2097151&_e|0,0)),0|_())),0|_(),0|$,0|i)),0|_(),0|Aa,0|ha)),0|_(),0|aa,0|ea)),0|_(),0|Ba,0|_a)),0|_(),0|oe,0|q)),0|_(),0|sa,0|oa)),0|_(),0|qa,0|Ma)),0|_(),0|X,0|O)),0|_(),0|fe,0|pe)),0|_(),2097151&ge|0,0),pe=0|_(),me=0|ji(0|Ae,0|he,2097151&me|0,0),fe=0|_(),O=0|ji(2097151&Ra|0,0,2097151&Da|0,0),X=0|_(),Ma=0|ji(2097151&ae|0,0,2097151&Ia|0,0),qa=0|_(),oa=0|ji(2097151&Re|0,0,2097151&za|0,0),sa=0|_(),q=0|ji(2097151&ye|0,0,2097151&fa|0,0),oe=0|_(),_a=0|ji(2097151&Oe|0,0,2097151&te|0,0),Ba=0|_(),ea=0|ji(2097151&Y|0,0,2097151&we|0,0),aa=0|_(),ha=0|ji(2097151&x|0,0,2097151&E|0,0),Aa=0|_(),i=0|ji(2097151&Q|0,0,2097151&ne|0,0),$=0|_(),Ga=0|ji(2097151&ra|0,0,2097151&K|0,0),Na=0|_(),w=0|ji(2097151&ba|0,0,2097151&_e|0,0),n=0|_(),Ja=0|ji(2097151&Ja|0,0,0|Qe,0|xe),Ya=0|_(),Da=0|ji(0|Ae,0|he,2097151&Da|0,0),Sa=0|_(),be=0|ji(2097151&Ra|0,0,2097151&Ia|0,0),va=0|_(),Fa=0|ji(2097151&ae|0,0,2097151&za|0,0),H=0|_(),Ie=0|ji(2097151&Re|0,0,2097151&fa|0,0),ue=0|_(),ce=0|ji(2097151&ye|0,0,2097151&te|0,0),Ua=0|_(),De=0|ji(2097151&Oe|0,0,2097151&we|0,0),G=0|_(),Be=0|ji(2097151&Y|0,0,2097151&E|0,0),Se=0|_(),pa=0|ji(2097151&x|0,0,2097151&ne|0,0),je=0|_(),ya=0|ji(2097151&Q|0,0,2097151&K|0,0),ga=0|_(),Sa=0|yt(0|(va=0|yt(0|(H=0|yt(0|(Ua=0|yt(0|(ue=0|yt(0|(G=0|yt(0|(Se=0|yt(0|(je=0|yt(0|(ga=0|yt(0|(ba=0|yt(0|(ja=0|ji(2097151&ra|0,0,2097151&_e|0,0)),0|(ia=0|_()),0|(ba=0|ji(2097151&ba|0,0,0|Qe,0|xe)),0|_())),0|_(),0|ya,0|ga)),0|_(),0|pa,0|je)),0|_(),0|Be,0|Se)),0|_(),0|De,0|G)),0|_(),0|Ie,0|ue)),0|_(),0|ce,0|Ua)),0|_(),0|Fa,0|H)),0|_(),0|be,0|va)),0|_(),0|Da,0|Sa),Da=0|_(),Ia=0|ji(0|Ae,0|he,2097151&Ia|0,0),va=0|_(),be=0|ji(2097151&Ra|0,0,2097151&za|0,0),H=0|_(),Fa=0|ji(2097151&ae|0,0,2097151&fa|0,0),Ua=0|_(),ce=0|ji(2097151&Re|0,0,2097151&te|0,0),ue=0|_(),Ie=0|ji(2097151&ye|0,0,2097151&we|0,0),G=0|_(),De=0|ji(2097151&Oe|0,0,2097151&E|0,0),Se=0|_(),Be=0|ji(2097151&Y|0,0,2097151&ne|0,0),je=0|_(),pa=0|ji(2097151&x|0,0,2097151&K|0,0),ga=0|_(),ya=0|ji(2097151&Q|0,0,2097151&_e|0,0),ba=0|_(),ra=0|ji(2097151&ra|0,0,0|Qe,0|xe),ia=0|_(),za=0|ji(0|Ae,0|he,2097151&za|0,0),ja=0|_(),Qa=0|ji(2097151&Ra|0,0,2097151&fa|0,0),ma=0|_(),J=0|ji(2097151&ae|0,0,2097151&te|0,0),xa=0|_(),Ke=0|ji(2097151&Re|0,0,2097151&we|0,0),Z=0|_(),F=0|ji(2097151&ye|0,0,2097151&E|0,0),r=0|_(),M=0|ji(2097151&Oe|0,0,2097151&ne|0,0),We=0|_(),ve=0|ji(2097151&Y|0,0,2097151&K|0,0),ke=0|_(),ja=0|yt(0|(ma=0|yt(0|(xa=0|yt(0|(r=0|yt(0|(Z=0|yt(0|(We=0|yt(0|(ke=0|yt(0|(Q=0|yt(0|(Ha=0|ji(2097151&x|0,0,2097151&_e|0,0)),0|(N=0|_()),0|(Q=0|ji(2097151&Q|0,0,0|Qe,0|xe)),0|_())),0|_(),0|ve,0|ke)),0|_(),0|M,0|We)),0|_(),0|Ke,0|Z)),0|_(),0|F,0|r)),0|_(),0|J,0|xa)),0|_(),0|Qa,0|ma)),0|_(),0|za,0|ja),za=0|_(),fa=0|ji(0|Ae,0|he,2097151&fa|0,0),ma=0|_(),Qa=0|ji(2097151&Ra|0,0,2097151&te|0,0),xa=0|_(),J=0|ji(2097151&ae|0,0,2097151&we|0,0),r=0|_(),F=0|ji(2097151&Re|0,0,2097151&E|0,0),Z=0|_(),Ke=0|ji(2097151&ye|0,0,2097151&ne|0,0),We=0|_(),M=0|ji(2097151&Oe|0,0,2097151&K|0,0),ke=0|_(),ve=0|ji(2097151&Y|0,0,2097151&_e|0,0),Q=0|_(),x=0|ji(2097151&x|0,0,0|Qe,0|xe),N=0|_(),te=0|ji(0|Ae,0|he,2097151&te|0,0),Ha=0|_(),na=0|ji(2097151&Ra|0,0,2097151&we|0,0),re=0|_(),Ee=0|ji(2097151&ae|0,0,2097151&E|0,0),ta=0|_(),P=0|ji(2097151&Re|0,0,2097151&ne|0,0),se=0|_(),le=0|ji(2097151&ye|0,0,2097151&K|0,0),Ce=0|_(),Ha=0|yt(0|(re=0|yt(0|(ta=0|yt(0|(Ce=0|yt(0|(se=0|yt(0|(Y=0|yt(0|(R=0|ji(2097151&Oe|0,0,2097151&_e|0,0)),0|($e=0|_()),0|(Y=0|ji(2097151&Y|0,0,0|Qe,0|xe)),0|_())),0|_(),0|P,0|se)),0|_(),0|le,0|Ce)),0|_(),0|Ee,0|ta)),0|_(),0|na,0|re)),0|_(),0|te,0|Ha),te=0|_(),we=0|ji(0|Ae,0|he,2097151&we|0,0),re=0|_(),na=0|ji(2097151&Ra|0,0,2097151&E|0,0),ta=0|_(),Ee=0|ji(2097151&ae|0,0,2097151&ne|0,0),Ce=0|_(),le=0|ji(2097151&Re|0,0,2097151&K|0,0),se=0|_(),P=0|ji(2097151&ye|0,0,2097151&_e|0,0),Y=0|_(),Oe=0|ji(2097151&Oe|0,0,0|Qe,0|xe),$e=0|_(),E=0|ji(0|Ae,0|he,2097151&E|0,0),R=0|_(),Pe=0|ji(2097151&Ra|0,0,2097151&ne|0,0),ee=0|_(),ca=0|ji(2097151&ae|0,0,2097151&K|0,0),Le=0|_(),He=0|ji(2097151&Re|0,0,2097151&_e|0,0),la=0|_(),R=0|yt(0|(ee=0|yt(0|(Le=0|yt(0|(la=0|yt(0|(ye=0|ji(2097151&ye|0,0,0|Qe,0|xe)),0|_(),0|He,0|la)),0|_(),0|ca,0|Le)),0|_(),0|Pe,0|ee)),0|_(),0|E,0|R),E=0|_(),ne=0|ji(0|Ae,0|he,2097151&ne|0,0),ee=0|_(),Pe=0|ji(2097151&Ra|0,0,2097151&K|0,0),Le=0|_(),ca=0|ji(2097151&ae|0,0,2097151&_e|0,0),la=0|_(),Re=0|ji(2097151&Re|0,0,0|Qe,0|xe),He=0|_(),K=0|ji(0|Ae,0|he,2097151&K|0,0),ye=0|_(),ye=0|yt(0|(ae=0|yt(0|ji(2097151&Ra|0,0,2097151&_e|0,0),0|(ze=0|_()),0|(ae=0|ji(2097151&ae|0,0,0|Qe,0|xe)),0|_())),0|_(),0|K,0|ye),K=0|_(),Ra=0|yt(0|(_e=0|ji(0|Ae,0|he,2097151&_e|0,0)),0|(ae=0|_()),0|(Ra=0|ji(2097151&Ra|0,0,0|Qe,0|xe)),0|_()),ae=0|_(),xe=0|ji(0|Ae,0|he,0|Qe,0|xe),Qe=0|_(),_e=0|Oi(0|(he=0|yt(0|Ne,0|Ge,1048576,0)),0|(Ae=0|_()),21),ze=0|_(),ze=0|yt(0|(ie=0|yt(0|(Ze=0|yt(0|k,0|b,0|y,0|Ze)),0|_(),2097151&ie|0,0)),0|_(),0|_e,0|ze),_e=0|_(),Ae=0|mt(0|Ne,0|Ge,-2097152&he|0,4095&Ae|0),he=0|_(),ie=0|Oi(0|(Ge=0|yt(0|Je,0|Ye,1048576,0)),0|(Ne=0|_()),21),Ze=0|_(),Ze=0|yt(0|(qe=0|yt(0|(Me=0|yt(0|(V=0|yt(0|(fr=0|yt(0|f,0|m,0|p,0|fr)),0|_(),0|C,0|V)),0|_(),0|W,0|Me)),0|_(),2097151&qe|0,0)),0|_(),0|ie,0|Ze),ie=0|_(),W=0|Mi(0|(qe=0|yt(0|Ue,0|Fe,1048576,0)),0|(Me=0|_()),21),V=0|_(),V=0|yt(0|(Xe=0|yt(0|(Ve=0|yt(0|(U=0|yt(0|(Ar=0|yt(0|(pr=0|yt(0|(mr=0|yt(0|g,0|A,0|h,0|mr)),0|_(),0|B,0|pr)),0|_(),0|gr,0|Ar)),0|_(),0|hr,0|U)),0|_(),0|de,0|Ve)),0|_(),2097151&Xe|0,0)),0|_(),0|W,0|V),W=0|_(),de=0|Mi(0|(Xe=0|yt(0|Ca,0|ka,1048576,0)),0|(Ve=0|_()),21),U=0|_(),U=0|yt(0|(S=0|yt(0|(j=0|yt(0|(D=0|yt(0|(tr=0|yt(0|(or=0|yt(0|(lr=0|yt(0|(ur=0|yt(0|(dr=0|yt(0|d,0|u,0|c,0|dr)),0|_(),0|I,0|ur)),0|_(),0|cr,0|lr)),0|_(),0|sr,0|or)),0|_(),0|nr,0|tr)),0|_(),0|ir,0|D)),0|_(),0|a,0|j)),0|_(),2097151&S|0,0)),0|_(),0|de,0|U),de=0|_(),a=0|Mi(0|(S=0|yt(0|ua,0|da,1048576,0)),0|(j=0|_()),21),D=0|_(),D=0|yt(0|(Te=0|yt(0|(z=0|yt(0|(L=0|yt(0|(La=0|yt(0|(Ka=0|yt(0|(Oa=0|yt(0|(Va=0|yt(0|(Za=0|yt(0|(ar=0|yt(0|(rr=0|yt(0|l,0|s,0|o,0|rr)),0|_(),0|v,0|ar)),0|_(),0|er,0|Za)),0|_(),0|Wa,0|Va)),0|_(),0|Xa,0|Oa)),0|_(),0|$a,0|Ka)),0|_(),0|Ta,0|La)),0|_(),0|Pa,0|L)),0|_(),0|T,0|z)),0|_(),2097151&Te|0,0)),0|_(),0|a,0|D),a=0|_(),T=0|Mi(0|(Te=0|yt(0|ge,0|pe,1048576,0)),0|(z=0|_()),21),L=0|_(),L=0|yt(0|(Ea=0|yt(0|(X=0|yt(0|(fe=0|yt(0|(qa=0|yt(0|(oe=0|yt(0|(sa=0|yt(0|(Ba=0|yt(0|(aa=0|yt(0|(Aa=0|yt(0|($=0|yt(0|(Na=0|yt(0|(Ya=0|yt(0|w,0|n,0|Ja,0|Ya)),0|_(),0|Ga,0|Na)),0|_(),0|i,0|$)),0|_(),0|ha,0|Aa)),0|_(),0|ea,0|aa)),0|_(),0|_a,0|Ba)),0|_(),0|oa,0|sa)),0|_(),0|q,0|oe)),0|_(),0|Ma,0|qa)),0|_(),0|me,0|fe)),0|_(),0|O,0|X)),0|_(),0|wa,0|Ea)),0|_(),0|T,0|L),T=0|_(),X=0|Mi(0|(Ea=0|yt(0|Sa,0|Da,1048576,0)),0|(wa=0|_()),21),O=0|_(),O=0|yt(0|(va=0|yt(0|(H=0|yt(0|(Ua=0|yt(0|(G=0|yt(0|(ue=0|yt(0|(Se=0|yt(0|(je=0|yt(0|(ga=0|yt(0|(ia=0|yt(0|ya,0|ba,0|ra,0|ia)),0|_(),0|pa,0|ga)),0|_(),0|Be,0|je)),0|_(),0|De,0|Se)),0|_(),0|ce,0|ue)),0|_(),0|Ie,0|G)),0|_(),0|Fa,0|Ua)),0|_(),0|be,0|H)),0|_(),0|Ia,0|va)),0|_(),0|X,0|O),X=0|_(),H=0|Mi(0|(va=0|yt(0|ja,0|za,1048576,0)),0|(Ia=0|_()),21),be=0|_(),be=0|yt(0|(ma=0|yt(0|(xa=0|yt(0|(r=0|yt(0|(We=0|yt(0|(Z=0|yt(0|(ke=0|yt(0|(N=0|yt(0|ve,0|Q,0|x,0|N)),0|_(),0|M,0|ke)),0|_(),0|F,0|Z)),0|_(),0|Ke,0|We)),0|_(),0|J,0|r)),0|_(),0|Qa,0|xa)),0|_(),0|fa,0|ma)),0|_(),0|H,0|be),H=0|_(),xa=0|Mi(0|(ma=0|yt(0|Ha,0|te,1048576,0)),0|(fa=0|_()),21),Qa=0|_(),Qa=0|yt(0|(re=0|yt(0|(ta=0|yt(0|(Ce=0|yt(0|(Y=0|yt(0|($e=0|yt(0|le,0|se,0|Oe,0|$e)),0|_(),0|P,0|Y)),0|_(),0|Ee,0|Ce)),0|_(),0|na,0|ta)),0|_(),0|we,0|re)),0|_(),0|xa,0|Qa),xa=0|_(),ta=0|Mi(0|(re=0|yt(0|R,0|E,1048576,0)),0|(we=0|_()),21),na=0|_(),na=0|yt(0|(ee=0|yt(0|(Le=0|yt(0|(He=0|yt(0|ca,0|la,0|Re,0|He)),0|_(),0|Pe,0|Le)),0|_(),0|ne,0|ee)),0|_(),0|ta,0|na),ta=0|_(),we=0|mt(0|R,0|E,-2097152&re|0,0|we),re=0|_(),ee=0|yt(0|Ra,0|ae,0|(ee=0|Mi(0|(E=0|yt(0|ye,0|K,1048576,0)),0|(R=0|_()),21)),0|_()),ae=0|_(),R=0|mt(0|ye,0|K,-2097152&E|0,0|R),E=0|_(),Ra=0|Mi(0|(K=0|yt(0|xe,0|Qe,1048576,0)),0|(ye=0|_()),21),ne=0|_(),ye=0|mt(0|xe,0|Qe,-2097152&K|0,0|ye),K=0|_(),Le=0|Oi(0|(Qe=0|yt(0|ze,0|_e,1048576,0)),0|(xe=0|_()),21),Pe=0|_(),xe=0|mt(0|ze,0|_e,-2097152&Qe|0,0|xe),Qe=0|_(),He=0|Mi(0|(_e=0|yt(0|Ze,0|ie,1048576,0)),0|(ze=0|_()),21),Re=0|_(),ze=0|mt(0|Ze,0|ie,-2097152&_e|0,0|ze),_e=0|_(),la=0|Mi(0|(ie=0|yt(0|V,0|W,1048576,0)),0|(Ze=0|_()),21),ca=0|_(),Ze=0|mt(0|V,0|W,-2097152&ie|0,0|Ze),ie=0|_(),Ce=0|Mi(0|(W=0|yt(0|U,0|de,1048576,0)),0|(V=0|_()),21),Ee=0|_(),$e=0|Mi(0|(Y=0|yt(0|D,0|a,1048576,0)),0|(P=0|_()),21),Oe=0|_(),r=0|Mi(0|(se=0|yt(0|L,0|T,1048576,0)),0|(le=0|_()),21),J=0|_(),Z=0|Mi(0|(We=0|yt(0|O,0|X,1048576,0)),0|(Ke=0|_()),21),F=0|_(),N=0|Mi(0|(ke=0|yt(0|be,0|H,1048576,0)),0|(M=0|_()),21),x=0|_(),re=0|yt(0|(Ua=0|Mi(0|(Q=0|yt(0|Qa,0|xa,1048576,0)),0|(ve=0|_()),21)),0|_(),0|we,0|re),we=0|_(),ve=0|mt(0|Qa,0|xa,-2097152&Q|0,0|ve),Q=0|_(),E=0|yt(0|(Ua=0|Mi(0|(xa=0|yt(0|na,0|ta,1048576,0)),0|(Qa=0|_()),21)),0|_(),0|R,0|E),R=0|_(),Qa=0|mt(0|na,0|ta,-2097152&xa|0,0|Qa),xa=0|_(),K=0|yt(0|(Ua=0|Mi(0|(ta=0|yt(0|ee,0|ae,1048576,0)),0|(na=0|_()),21)),0|_(),0|ye,0|K),ye=0|_(),na=0|mt(0|ee,0|ae,-2097152&ta|0,0|na),ta=0|_(),ae=0|ji(0|Ra,0|ne,666643,0),ee=0|_(),Ua=0|ji(0|Ra,0|ne,470296,0),Fa=0|_(),G=0|ji(0|Ra,0|ne,654183,0),Ie=0|_(),ue=0|ji(0|Ra,0|ne,-997805,-1),ce=0|_(),Se=0|ji(0|Ra,0|ne,136657,0),De=0|_(),x=0|yt(0|(fa=0|mt(0|(ne=0|yt(0|Ha,0|te,0|(ne=0|ji(0|Ra,0|ne,-683901,-1)),0|_())),0|_(),-2097152&ma|0,0|fa)),0|_(),0|N,0|x),N=0|_(),fa=0|ji(0|K,0|ye,666643,0),ma=0|_(),ne=0|ji(0|K,0|ye,470296,0),te=0|_(),Ha=0|ji(0|K,0|ye,654183,0),Ra=0|_(),je=0|ji(0|K,0|ye,-997805,-1),Be=0|_(),ga=0|ji(0|K,0|ye,136657,0),pa=0|_(),ye=0|ji(0|K,0|ye,-683901,-1),K=0|_(),ia=0|ji(0|na,0|ta,666643,0),ra=0|_(),ba=0|ji(0|na,0|ta,470296,0),ya=0|_(),fe=0|ji(0|na,0|ta,654183,0),me=0|_(),qa=0|ji(0|na,0|ta,-997805,-1),Ma=0|_(),oe=0|ji(0|na,0|ta,136657,0),q=0|_(),ta=0|ji(0|na,0|ta,-683901,-1),na=0|_(),F=0|yt(0|(Ia=0|mt(0|(na=0|yt(0|(pa=0|yt(0|(ce=0|yt(0|ja,0|za,0|ue,0|ce)),0|_(),0|ga,0|pa)),0|_(),0|ta,0|na)),0|_(),-2097152&va|0,0|Ia)),0|_(),0|Z,0|F),Z=0|_(),Ia=0|ji(0|E,0|R,666643,0),va=0|_(),na=0|ji(0|E,0|R,470296,0),ta=0|_(),pa=0|ji(0|E,0|R,654183,0),ga=0|_(),ce=0|ji(0|E,0|R,-997805,-1),ue=0|_(),za=0|ji(0|E,0|R,136657,0),ja=0|_(),R=0|ji(0|E,0|R,-683901,-1),E=0|_(),sa=0|ji(0|Qa,0|xa,666643,0),oa=0|_(),Ba=0|ji(0|Qa,0|xa,470296,0),_a=0|_(),aa=0|ji(0|Qa,0|xa,654183,0),ea=0|_(),Aa=0|ji(0|Qa,0|xa,-997805,-1),ha=0|_(),$=0|ji(0|Qa,0|xa,136657,0),i=0|_(),xa=0|ji(0|Qa,0|xa,-683901,-1),Qa=0|_(),J=0|yt(0|(wa=0|mt(0|(Qa=0|yt(0|(ja=0|yt(0|(Da=0|yt(0|(Ma=0|yt(0|(Fa=0|yt(0|Ha,0|Ra,0|Ua,0|Fa)),0|_(),0|qa,0|Ma)),0|_(),0|Sa,0|Da)),0|_(),0|za,0|ja)),0|_(),0|xa,0|Qa)),0|_(),-2097152&Ea|0,0|wa)),0|_(),0|r,0|J),r=0|_(),Ve=0|mt(0|(ca=0|yt(0|(wa=0|yt(0|Ca,0|ka,0|(wa=0|ji(0|re,0|we,666643,0)),0|_())),0|_(),0|la,0|ca)),0|_(),-2097152&Xe|0,0|Ve),Xe=0|_(),ca=0|ji(0|re,0|we,470296,0),la=0|_(),wa=0|ji(0|re,0|we,654183,0),ka=0|_(),Ee=0|yt(0|(j=0|mt(0|(da=0|yt(0|(ka=0|yt(0|(va=0|yt(0|Ba,0|_a,0|Ia,0|va)),0|_(),0|wa,0|ka)),0|_(),0|ua,0|da)),0|_(),-2097152&S|0,0|j)),0|_(),0|Ce,0|Ee),Ce=0|_(),j=0|ji(0|re,0|we,-997805,-1),S=0|_(),da=0|ji(0|re,0|we,136657,0),ua=0|_(),z=0|mt(0|(Oe=0|yt(0|(pe=0|yt(0|(ua=0|yt(0|(ha=0|yt(0|(ga=0|yt(0|(ma=0|yt(0|ba,0|ya,0|fa,0|ma)),0|_(),0|pa,0|ga)),0|_(),0|Aa,0|ha)),0|_(),0|da,0|ua)),0|_(),0|ge,0|pe)),0|_(),0|$e,0|Oe)),0|_(),-2097152&Te|0,0|z),Te=0|_(),we=0|ji(0|re,0|we,-683901,-1),re=0|_(),pe=0|Mi(0|(Oe=0|yt(0|Ve,0|Xe,1048576,0)),0|($e=0|_()),21),ge=0|_(),ge=0|yt(0|(V=0|mt(0|(de=0|yt(0|(oa=0|yt(0|ca,0|la,0|sa,0|oa)),0|_(),0|U,0|de)),0|_(),-2097152&W|0,0|V)),0|_(),0|pe,0|ge),pe=0|_(),de=0|Mi(0|(V=0|yt(0|Ee,0|Ce,1048576,0)),0|(W=0|_()),21),U=0|_(),U=0|yt(0|(P=0|mt(0|(a=0|yt(0|(S=0|yt(0|(ea=0|yt(0|(ra=0|yt(0|na,0|ta,0|ia,0|ra)),0|_(),0|aa,0|ea)),0|_(),0|j,0|S)),0|_(),0|D,0|a)),0|_(),-2097152&Y|0,0|P)),0|_(),0|de,0|U),de=0|_(),a=0|Mi(0|(P=0|yt(0|z,0|Te,1048576,0)),0|(Y=0|_()),21),D=0|_(),D=0|yt(0|(le=0|mt(0|(T=0|yt(0|(re=0|yt(0|(i=0|yt(0|(ue=0|yt(0|(me=0|yt(0|(ee=0|yt(0|ne,0|te,0|ae,0|ee)),0|_(),0|fe,0|me)),0|_(),0|ce,0|ue)),0|_(),0|$,0|i)),0|_(),0|we,0|re)),0|_(),0|L,0|T)),0|_(),-2097152&se|0,0|le)),0|_(),0|a,0|D),a=0|_(),T=0|Mi(0|(le=0|yt(0|J,0|r,1048576,0)),0|(se=0|_()),21),L=0|_(),L=0|yt(0|(Ke=0|mt(0|(X=0|yt(0|(E=0|yt(0|(q=0|yt(0|(Ie=0|yt(0|je,0|Be,0|G,0|Ie)),0|_(),0|oe,0|q)),0|_(),0|R,0|E)),0|_(),0|O,0|X)),0|_(),-2097152&We|0,0|Ke)),0|_(),0|T,0|L),T=0|_(),se=0|mt(0|J,0|r,-2097152&le|0,0|se),le=0|_(),Ke=0|Mi(0|(r=0|yt(0|F,0|Z,1048576,0)),0|(J=0|_()),21),We=0|_(),We=0|yt(0|(M=0|mt(0|(H=0|yt(0|(De=0|yt(0|ye,0|K,0|Se,0|De)),0|_(),0|be,0|H)),0|_(),-2097152&ke|0,0|M)),0|_(),0|Ke,0|We),Ke=0|_(),J=0|mt(0|F,0|Z,-2097152&r|0,0|J),r=0|_(),Q=0|yt(0|(M=0|Mi(0|(Z=0|yt(0|x,0|N,1048576,0)),0|(F=0|_()),21)),0|_(),0|ve,0|Q),ve=0|_(),F=0|mt(0|x,0|N,-2097152&Z|0,0|F),Z=0|_(),M=0|Mi(0|(N=0|yt(0|ge,0|pe,1048576,0)),0|(x=0|_()),21),ke=0|_(),De=0|Mi(0|(H=0|yt(0|U,0|de,1048576,0)),0|(be=0|_()),21),Se=0|_(),le=0|yt(0|(X=0|Mi(0|(K=0|yt(0|D,0|a,1048576,0)),0|(ye=0|_()),21)),0|_(),0|se,0|le),se=0|_(),ye=0|mt(0|D,0|a,-2097152&K|0,0|ye),K=0|_(),r=0|yt(0|(X=0|Mi(0|(a=0|yt(0|L,0|T,1048576,0)),0|(D=0|_()),21)),0|_(),0|J,0|r),J=0|_(),D=0|mt(0|L,0|T,-2097152&a|0,0|D),a=0|_(),Z=0|yt(0|(X=0|Mi(0|(T=0|yt(0|We,0|Ke,1048576,0)),0|(L=0|_()),21)),0|_(),0|F,0|Z),F=0|_(),L=0|mt(0|We,0|Ke,-2097152&T|0,0|L),T=0|_(),Ke=0|yt(0|Ze,0|ie,0|(Ke=0|ji(0|Q,0|ve,666643,0)),0|_()),ie=0|_(),Ze=0|ji(0|Q,0|ve,470296,0),We=0|_(),X=0|ji(0|Q,0|ve,654183,0),O=0|_(),E=0|ji(0|Q,0|ve,-997805,-1),R=0|_(),q=0|ji(0|Q,0|ve,136657,0),oe=0|_(),Y=0|mt(0|(Se=0|yt(0|(ve=0|yt(0|z,0|Te,0|(ve=0|ji(0|Q,0|ve,-683901,-1)),0|_())),0|_(),0|De,0|Se)),0|_(),-2097152&P|0,0|Y),P=0|_(),Se=0|ji(0|Z,0|F,666643,0),De=0|_(),ve=0|yt(0|Ke,0|ie,0|(ve=0|ji(0|Z,0|F,470296,0)),0|_()),ie=0|_(),Ke=0|ji(0|Z,0|F,654183,0),Te=0|_(),z=0|ji(0|Z,0|F,-997805,-1),Q=0|_(),Ie=0|ji(0|Z,0|F,136657,0),G=0|_(),F=0|ji(0|Z,0|F,-683901,-1),Z=0|_(),Be=0|yt(0|ze,0|_e,0|(Be=0|ji(0|L,0|T,666643,0)),0|_()),_e=0|_(),ze=0|ji(0|L,0|T,470296,0),je=0|_(),re=0|yt(0|ve,0|ie,0|(re=0|ji(0|L,0|T,654183,0)),0|_()),ie=0|_(),ve=0|ji(0|L,0|T,-997805,-1),we=0|_(),i=0|ji(0|L,0|T,136657,0),$=0|_(),T=0|ji(0|L,0|T,-683901,-1),L=0|_(),L=0|yt(0|(G=0|yt(0|(W=0|mt(0|(ke=0|yt(0|(R=0|yt(0|Ee,0|Ce,0|E,0|R)),0|_(),0|M,0|ke)),0|_(),-2097152&V|0,0|W)),0|_(),0|Ie,0|G)),0|_(),0|T,0|L),T=0|_(),G=0|ji(0|r,0|J,666643,0),Ie=0|_(),W=0|ji(0|r,0|J,470296,0),V=0|_(),ke=0|ji(0|r,0|J,654183,0),M=0|_(),R=0|ji(0|r,0|J,-997805,-1),E=0|_(),Ce=0|ji(0|r,0|J,136657,0),Ee=0|_(),J=0|ji(0|r,0|J,-683901,-1),r=0|_(),ue=0|ji(0|D,0|a,666643,0),ce=0|_(),me=0|ji(0|D,0|a,470296,0),fe=0|_(),ee=0|ji(0|D,0|a,654183,0),ae=0|_(),te=0|ji(0|D,0|a,-997805,-1),ne=0|_(),S=0|ji(0|D,0|a,136657,0),j=0|_(),a=0|ji(0|D,0|a,-683901,-1),D=0|_(),D=0|yt(0|(Ee=0|yt(0|(we=0|yt(0|(Te=0|yt(0|($e=0|mt(0|(Xe=0|yt(0|Ze,0|We,0|Ve,0|Xe)),0|_(),-2097152&Oe|0,0|$e)),0|_(),0|Ke,0|Te)),0|_(),0|ve,0|we)),0|_(),0|Ce,0|Ee)),0|_(),0|a,0|D),a=0|_(),he=0|yt(0|(Ee=0|ji(0|le,0|se,666643,0)),0|_(),0|Ae,0|he),Ae=0|_(),Ee=0|ji(0|le,0|se,470296,0),Ce=0|_(),we=0|ji(0|le,0|se,654183,0),ve=0|_(),fe=0|yt(0|(Ie=0|yt(0|(ve=0|yt(0|(Ne=0|mt(0|(Ye=0|yt(0|Le,0|Pe,0|Je,0|Ye)),0|_(),-2097152&Ge|0,0|Ne)),0|_(),0|we,0|ve)),0|_(),0|G,0|Ie)),0|_(),0|me,0|fe),me=0|_(),Ie=0|ji(0|le,0|se,-997805,-1),G=0|_(),ve=0|ji(0|le,0|se,136657,0),we=0|_(),ne=0|yt(0|(M=0|yt(0|(we=0|yt(0|(je=0|yt(0|(De=0|yt(0|(Me=0|mt(0|(Fe=0|yt(0|He,0|Re,0|Ue,0|Fe)),0|_(),-2097152&qe|0,0|Me)),0|_(),0|Se,0|De)),0|_(),0|ze,0|je)),0|_(),0|ve,0|we)),0|_(),0|ke,0|M)),0|_(),0|te,0|ne),te=0|_(),se=0|ji(0|le,0|se,-683901,-1),le=0|_(),we=0|Mi(0|(M=0|yt(0|he,0|Ae,1048576,0)),0|(ke=0|_()),21),ve=0|_(),ve=0|yt(0|(ce=0|yt(0|(Ce=0|yt(0|xe,0|Qe,0|Ee,0|Ce)),0|_(),0|ue,0|ce)),0|_(),0|we,0|ve),we=0|_(),ke=0|mt(0|he,0|Ae,-2097152&M|0,0|ke),M=0|_(),ce=0|Mi(0|(Ae=0|yt(0|fe,0|me,1048576,0)),0|(he=0|_()),21),ue=0|_(),ue=0|yt(0|(ae=0|yt(0|(V=0|yt(0|(G=0|yt(0|Be,0|_e,0|Ie,0|G)),0|_(),0|W,0|V)),0|_(),0|ee,0|ae)),0|_(),0|ce,0|ue),ce=0|_(),V=0|Mi(0|(ae=0|yt(0|ne,0|te,1048576,0)),0|(ee=0|_()),21),W=0|_(),W=0|yt(0|(j=0|yt(0|(E=0|yt(0|(le=0|yt(0|re,0|ie,0|se,0|le)),0|_(),0|R,0|E)),0|_(),0|S,0|j)),0|_(),0|V,0|W),V=0|_(),E=0|Mi(0|(j=0|yt(0|D,0|a,1048576,0)),0|(S=0|_()),21),R=0|_(),R=0|yt(0|(r=0|yt(0|($=0|yt(0|(Q=0|yt(0|(x=0|mt(0|(O=0|yt(0|ge,0|pe,0|X,0|O)),0|_(),-2097152&N|0,0|x)),0|_(),0|z,0|Q)),0|_(),0|i,0|$)),0|_(),0|J,0|r)),0|_(),0|E,0|R),E=0|_(),S=0|mt(0|D,0|a,-2097152&j|0,0|S),j=0|_(),r=0|Mi(0|(a=0|yt(0|L,0|T,1048576,0)),0|(D=0|_()),21),J=0|_(),J=0|yt(0|(be=0|mt(0|(de=0|yt(0|(oe=0|yt(0|F,0|Z,0|q,0|oe)),0|_(),0|U,0|de)),0|_(),-2097152&H|0,0|be)),0|_(),0|r,0|J),r=0|_(),D=0|mt(0|L,0|T,-2097152&a|0,0|D),a=0|_(),be=0|yt(0|ye,0|K,0|(be=0|Mi(0|(T=0|yt(0|Y,0|P,1048576,0)),0|(L=0|_()),21)),0|_()),K=0|_(),de=0|Mi(0|(ye=0|yt(0|ve,0|we,1048576,0)),0|(H=0|_()),21),U=0|_(),Z=0|Mi(0|(oe=0|yt(0|ue,0|ce,1048576,0)),0|(q=0|_()),21),F=0|_(),Q=0|yt(0|S,0|j,0|(Q=0|Mi(0|($=0|yt(0|W,0|V,1048576,0)),0|(i=0|_()),21)),0|_()),j=0|_(),x=0|yt(0|D,0|a,0|(x=0|Mi(0|(S=0|yt(0|R,0|E,1048576,0)),0|(z=0|_()),21)),0|_()),a=0|_(),z=0|mt(0|R,0|E,-2097152&S|0,0|z),S=0|_(),D=0|Mi(0|(E=0|yt(0|J,0|r,1048576,0)),0|(R=0|_()),21),N=0|_(),R=0|mt(0|J,0|r,-2097152&E|0,0|R),E=0|_(),O=0|Mi(0|(r=0|yt(0|be,0|K,1048576,0)),0|(J=0|_()),21),X=0|_(),J=0|mt(0|be,0|K,-2097152&r|0,0|J),r=0|_(),K=0|yt(0|ke,0|M,0|(K=0|ji(0|O,0|X,666643,0)),0|_()),M=0|_(),ke=0|ji(0|O,0|X,470296,0),be=0|_(),pe=0|ji(0|O,0|X,654183,0),ge=0|_(),le=0|ji(0|O,0|X,-997805,-1),se=0|_(),ie=0|ji(0|O,0|X,136657,0),re=0|_(),X=0|ji(0|O,0|X,-683901,-1),O=0|_(),M=0|Mi(0|K,0|M,21),G=0|_(),M=0|Mi(0|(G=0|yt(0|(H=0|mt(0|(be=0|yt(0|ve,0|we,0|ke,0|be)),0|_(),-2097152&ye|0,0|H)),0|_(),0|M,0|G)),0|_(),21),H=0|_(),M=0|Mi(0|(H=0|yt(0|(U=0|yt(0|(he=0|mt(0|(ge=0|yt(0|fe,0|me,0|pe,0|ge)),0|_(),-2097152&Ae|0,0|he)),0|_(),0|de,0|U)),0|_(),0|M,0|H)),0|_(),21),U=0|_(),M=0|Mi(0|(U=0|yt(0|(q=0|mt(0|(se=0|yt(0|ue,0|ce,0|le,0|se)),0|_(),-2097152&oe|0,0|q)),0|_(),0|M,0|U)),0|_(),21),q=0|_(),M=0|Mi(0|(q=0|yt(0|(F=0|yt(0|(ee=0|mt(0|(re=0|yt(0|ne,0|te,0|ie,0|re)),0|_(),-2097152&ae|0,0|ee)),0|_(),0|Z,0|F)),0|_(),0|M,0|q)),0|_(),21),F=0|_(),R=0|Mi(0|(E=0|yt(0|(a=0|Mi(0|(z=0|yt(0|x,0|a,0|(z=0|Mi(0|(S=0|yt(0|(j=0|Mi(0|(M=0|yt(0|Q,0|j,0|(M=0|Mi(0|(F=0|yt(0|(i=0|mt(0|(O=0|yt(0|W,0|V,0|X,0|O)),0|_(),-2097152&$|0,0|i)),0|_(),0|M,0|F)),0|_(),21)),0|_())),0|_(),21)),0|_(),0|z,0|S)),0|_(),21)),0|_())),0|_(),21)),0|_(),0|R,0|E)),0|_(),21),a=0|_(),K=0|yt(0|(L=0|ji(0|(J=0|Mi(0|(r=0|yt(0|(R=0|Mi(0|(a=0|yt(0|(L=0|mt(0|(P=0|yt(0|D,0|N,0|Y,0|P)),0|_(),-2097152&T|0,0|L)),0|_(),0|R,0|a)),0|_(),21)),0|_(),0|J,0|r)),0|_(),21)),0|(R=0|_()),666643,0)),0|_(),2097151&K|0,0),L=0|_(),G=0|yt(0|(T=0|ji(0|J,0|R,470296,0)),0|_(),2097151&G|0,0),T=0|_(),H=0|yt(0|(P=0|ji(0|J,0|R,654183,0)),0|_(),2097151&H|0,0),P=0|_(),U=0|yt(0|(Y=0|ji(0|J,0|R,-997805,-1)),0|_(),2097151&U|0,0),Y=0|_(),q=0|yt(0|(N=0|ji(0|J,0|R,136657,0)),0|_(),2097151&q|0,0),N=0|_(),r=0|yt(0|(i=0|Mi(0|(a=0|yt(0|(Q=0|Mi(0|(E=0|yt(0|(j=0|Mi(0|(z=0|yt(0|(x=0|Mi(0|(S=0|yt(0|(D=0|Mi(0|(M=0|yt(0|(F=0|Mi(0|(q=0|yt(0|(F=0|yt(0|(R=0|ji(0|J,0|R,-683901,-1)),0|_(),2097151&F|0,0)),0|(R=0|_()),0|(q=0|Mi(0|(U=0|yt(0|q,0|N,0|(U=0|Mi(0|(H=0|yt(0|U,0|Y,0|(H=0|Mi(0|(G=0|yt(0|H,0|P,0|(G=0|Mi(0|(J=0|yt(0|G,0|T,0|(J=0|Mi(0|K,0|L,21)),0|_())),0|(T=0|_()),21)),0|_())),0|(P=0|_()),21)),0|_())),0|(Y=0|_()),21)),0|_())),0|(N=0|_()),21)),0|_())),0|(R=0|_()),21)),0|_(),2097151&M|0,0)),0|(F=0|_()),21)),0|_(),2097151&S|0,0)),0|(D=0|_()),21)),0|_(),2097151&z|0,0)),0|(x=0|_()),21)),0|_(),2097151&E|0,0)),0|(j=0|_()),21)),0|_(),2097151&a|0,0)),0|(Q=0|_()),21)),0|_(),2097151&r|0,0),i=0|_(),t[e>>0]=K,$=0|Oi(0|K,0|L,8),_(),t[e+1>>0]=$,L=0|Oi(0|K,0|L,16),_(),K=0|Li(2097151&J|0,0,5),_(),t[e+2>>0]=K|31&L,L=0|Oi(0|J,0|T,3),_(),t[e+3>>0]=L,T=0|Oi(0|J,0|T,11),_(),t[e+4>>0]=T,J=0|Oi(2097151&J|0,0,19),T=0|_(),L=0|Li(2097151&G|0,0,2),_(),t[e+5>>0]=L|J,P=0|Oi(0|G,0|P,6),_(),t[e+6>>0]=P,G=0|Oi(2097151&G|0,0,14),P=0|_(),J=0|Li(2097151&H|0,0,7),_(),t[e+7>>0]=J|G,G=0|Oi(0|H,0|Y,1),_(),t[e+8>>0]=G,Y=0|Oi(0|H,0|Y,9),_(),t[e+9>>0]=Y,H=0|Oi(2097151&H|0,0,17),Y=0|_(),G=0|Li(2097151&U|0,0,4),_(),t[e+10>>0]=G|H,H=0|Oi(0|U,0|N,4),_(),t[e+11>>0]=H,N=0|Oi(0|U,0|N,12),_(),t[e+12>>0]=N,U=0|Oi(2097151&U|0,0,20),N=0|_(),H=0|Li(2097151&q|0,0,1),_(),t[e+13>>0]=H|U,R=0|Oi(0|q,0|R,7),_(),t[e+14>>0]=R,q=0|Oi(2097151&q|0,0,15),R=0|_(),U=0|Li(2097151&M|0,0,6),_(),t[e+15>>0]=U|q,q=0|Oi(0|M,0|F,2),_(),t[e+16>>0]=q,F=0|Oi(0|M,0|F,10),_(),t[e+17>>0]=F,M=0|Oi(2097151&M|0,0,18),F=0|_(),q=0|Li(0|S,0|D,3),_(),t[e+18>>0]=q|M,M=0|Oi(0|S,0|D,5),_(),t[e+19>>0]=M,D=0|Oi(0|S,0|D,13),_(),t[e+20>>0]=D,t[e+21>>0]=z,D=0|Oi(0|z,0|x,8),_(),t[e+22>>0]=D,x=0|Oi(0|z,0|x,16),_(),z=0|Li(2097151&E|0,0,5),_(),t[e+23>>0]=z|31&x,x=0|Oi(0|E,0|j,3),_(),t[e+24>>0]=x,j=0|Oi(0|E,0|j,11),_(),t[e+25>>0]=j,E=0|Oi(2097151&E|0,0,19),j=0|_(),x=0|Li(2097151&a|0,0,2),_(),t[e+26>>0]=x|E,Q=0|Oi(0|a,0|Q,6),_(),t[e+27>>0]=Q,a=0|Oi(2097151&a|0,0,14),Q=0|_(),E=0|Li(0|r,0|i,7),_(),t[e+28>>0]=E|a,a=0|Oi(0|r,0|i,1),_(),t[e+29>>0]=a,a=0|Oi(0|r,0|i,9),_(),t[e+30>>0]=a,i=0|Mi(0|r,0|i,17),_(),t[e+31>>0]=i}function M(e,a,r){e|=0,r|=0;var i,n,o,s,l,c,u,d,h,A,g,p,m,f,y,b,k,w,v=0,I=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0,N=0,G=0,Y=0,J=0,P=0,L=0,T=0,K=0,$=0,O=0,X=0,V=0,W=0,Z=0,ee=0,ae=0,re=0,ie=0,te=0,ne=0,oe=0,se=0,le=0,ce=0,ue=0,de=0,he=0,Ae=0,ge=0,pe=0,me=0,fe=0,ye=0,be=0,ke=0,we=0,ve=0,Ie=0,_e=0,Be=0,Ce=0,Ee=0,Qe=0,xe=0,je=0,ze=0,De=0,Se=0,Me=0,qe=0,Fe=0,Ue=0,Re=0,He=0,Ne=0,Ge=0,Ye=0,Je=0,Pe=0,Le=0,Te=0,Ke=0,$e=0,Oe=0,Xe=0,Ve=0,We=0,Ze=0,ea=0,aa=0,ra=0,ia=0,ta=0,na=0,oa=0,sa=0,la=0,ca=0,ua=0,da=0,ha=0,Aa=0,ga=0,pa=0,ma=0,fa=0,ya=0,ba=0,ka=0,wa=0,va=0,Ia=0,_a=0,Ba=0,Ca=0,Ea=0,Qa=0,xa=0,ja=0,za=0,Da=0,Sa=0,Ma=0,qa=0,Fa=0,Ua=0,Ra=0,Ha=0,Na=0,Ga=0,Ya=0,Ja=0,Pa=0,La=0,Ta=0,Ka=0,$a=0,Oa=0,Xa=0,Va=0,Wa=0,Za=0,er=0,ar=0,rr=0,ir=0,tr=0,nr=0,or=0,sr=0,lr=0;q=0|Qi(0|t[(a|=0)>>0],0|t[a+1>>0],0|t[a+2>>0]),_(),fa=0|Oi(0|(fa=0|Er(a+2|0)),0|_(),5),_(),Te=0|Oi(0|(Te=0|Qi(0|t[a+5>>0],0|t[a+6>>0],0|t[a+7>>0])),0|_(),2),_(),F=0|Oi(0|(F=0|Er(a+7|0)),0|_(),7),_(),la=0|Oi(0|(la=0|Er(a+10|0)),0|_(),4),_(),Je=0|Oi(0|(Je=0|Qi(0|t[a+13>>0],0|t[a+14>>0],0|t[a+15>>0])),0|_(),1),_(),x=0|Oi(0|(x=0|Er(a+15|0)),0|_(),6),_(),ge=0|Oi(0|(ge=0|Qi(0|t[a+18>>0],0|t[a+19>>0],0|t[a+20>>0])),0|_(),3),_(),Pe=0|Qi(0|t[a+21>>0],0|t[a+22>>0],0|t[a+23>>0]),_(),V=0|Oi(0|(V=0|Er(a+23|0)),0|_(),5),_(),ee=0|Oi(0|(ee=0|Qi(0|t[a+26>>0],0|t[a+27>>0],0|t[a+28>>0])),0|_(),2),_(),le=0|Oi(0|(le=0|Er(a+28|0)),0|_(),7),se=0|_(),qa=0|Qi(0|t[r>>0],0|t[r+1>>0],0|t[r+2>>0]),_(),ka=0|Oi(0|(ka=0|Er(r+2|0)),0|_(),5),_(),He=0|Oi(0|(He=0|Qi(0|t[r+5>>0],0|t[r+6>>0],0|t[r+7>>0])),0|_(),2),_(),je=0|Oi(0|(je=0|Er(r+7|0)),0|_(),7),_(),wa=0|Oi(0|(wa=0|Er(r+10|0)),0|_(),4),_(),D=0|Oi(0|(D=0|Qi(0|t[r+13>>0],0|t[r+14>>0],0|t[r+15>>0])),0|_(),1),_(),N=0|Oi(0|(N=0|Er(r+15|0)),0|_(),6),_(),W=0|Oi(0|(W=0|Qi(0|t[r+18>>0],0|t[r+19>>0],0|t[r+20>>0])),0|_(),3),_(),be=0|Qi(0|t[r+21>>0],0|t[r+22>>0],0|t[r+23>>0]),_(),Ye=0|Oi(0|(Ye=0|Er(r+23|0)),0|_(),5),_(),Ia=0|Oi(0|(Ia=0|Qi(0|t[r+26>>0],0|t[r+27>>0],0|t[r+28>>0])),0|_(),2),_(),oe=0|Oi(0|(oe=0|Er(r+28|0)),0|_(),7),ne=0|_(),we=0|ji(2097151&qa|0,0,2097151&q|0,0),ve=0|_(),T=0|yt(0|(Ie=0|ji(2097151&ka|0,0,2097151&q|0,0)),0|(U=0|_()),0|(T=0|ji(2097151&qa|0,0,2097151&fa|0,0)),0|_()),U=0|_(),Ie=0|ji(2097151&He|0,0,2097151&q|0,0),_e=0|_(),_e=0|yt(0|(R=0|yt(0|(G=0|ji(2097151&ka|0,0,2097151&fa|0,0)),0|(me=0|_()),0|(R=0|ji(2097151&qa|0,0,2097151&Te|0,0)),0|_())),0|_(),0|Ie,0|_e),Ie=0|_(),R=0|ji(2097151&je|0,0,2097151&q|0,0),me=0|_(),G=0|ji(2097151&He|0,0,2097151&fa|0,0),a=0|_(),f=0|ji(2097151&ka|0,0,2097151&Te|0,0),m=0|_(),p=0|ji(2097151&qa|0,0,2097151&F|0,0),lr=0|_(),fe=0|ji(2097151&wa|0,0,2097151&q|0,0),ye=0|_(),Y=0|ji(2097151&je|0,0,2097151&fa|0,0),P=0|_(),Xe=0|ji(2097151&He|0,0,2097151&Te|0,0),Oe=0|_(),ye=0|yt(0|(P=0|yt(0|(Oe=0|yt(0|(nr=0|yt(0|ji(2097151&ka|0,0,2097151&F|0,0),0|(tr=0|_()),0|(nr=0|ji(2097151&qa|0,0,2097151&la|0,0)),0|_())),0|_(),0|Xe,0|Oe)),0|_(),0|Y,0|P)),0|_(),0|fe,0|ye),fe=0|_(),P=0|ji(2097151&D|0,0,2097151&q|0,0),Y=0|_(),Oe=0|ji(2097151&wa|0,0,2097151&fa|0,0),Xe=0|_(),nr=0|ji(2097151&je|0,0,2097151&Te|0,0),tr=0|_(),w=0|ji(2097151&He|0,0,2097151&F|0,0),or=0|_(),g=0|ji(2097151&ka|0,0,2097151&la|0,0),A=0|_(),h=0|ji(2097151&qa|0,0,2097151&Je|0,0),sr=0|_(),ce=0|ji(2097151&N|0,0,2097151&q|0,0),r=0|_(),de=0|ji(2097151&D|0,0,2097151&fa|0,0),ta=0|_(),Ve=0|ji(2097151&wa|0,0,2097151&Te|0,0),We=0|_(),Xa=0|ji(2097151&je|0,0,2097151&F|0,0),Va=0|_(),Wa=0|ji(2097151&He|0,0,2097151&la|0,0),Za=0|_(),r=0|yt(0|(ta=0|yt(0|(We=0|yt(0|(Va=0|yt(0|(Za=0|yt(0|(ar=0|yt(0|ji(2097151&ka|0,0,2097151&Je|0,0),0|(er=0|_()),0|(ar=0|ji(2097151&qa|0,0,2097151&x|0,0)),0|_())),0|_(),0|Wa,0|Za)),0|_(),0|Xa,0|Va)),0|_(),0|Ve,0|We)),0|_(),0|de,0|ta)),0|_(),0|ce,0|r),ce=0|_(),ta=0|ji(2097151&W|0,0,2097151&q|0,0),de=0|_(),We=0|ji(2097151&N|0,0,2097151&fa|0,0),Ve=0|_(),Va=0|ji(2097151&D|0,0,2097151&Te|0,0),Xa=0|_(),Za=0|ji(2097151&wa|0,0,2097151&F|0,0),Wa=0|_(),ar=0|ji(2097151&je|0,0,2097151&la|0,0),er=0|_(),k=0|ji(2097151&He|0,0,2097151&Je|0,0),rr=0|_(),d=0|ji(2097151&ka|0,0,2097151&x|0,0),u=0|_(),c=0|ji(2097151&qa|0,0,2097151&ge|0,0),ir=0|_(),C=0|ji(2097151&be|0,0,2097151&q|0,0),J=0|_(),Se=0|ji(2097151&W|0,0,2097151&fa|0,0),Me=0|_(),Ra=0|ji(2097151&N|0,0,2097151&Te|0,0),Ha=0|_(),Fa=0|ji(2097151&D|0,0,2097151&F|0,0),Ua=0|_(),Na=0|ji(2097151&wa|0,0,2097151&la|0,0),Ga=0|_(),Ya=0|ji(2097151&je|0,0,2097151&Je|0,0),Ja=0|_(),Pa=0|ji(2097151&He|0,0,2097151&x|0,0),La=0|_(),J=0|yt(0|(Me=0|yt(0|(Ha=0|yt(0|(Ua=0|yt(0|(Ga=0|yt(0|(Ja=0|yt(0|(La=0|yt(0|(Ka=0|yt(0|ji(2097151&ka|0,0,2097151&ge|0,0),0|(Ta=0|_()),0|(Ka=0|ji(2097151&qa|0,0,2097151&Pe|0,0)),0|_())),0|_(),0|Pa,0|La)),0|_(),0|Ya,0|Ja)),0|_(),0|Na,0|Ga)),0|_(),0|Fa,0|Ua)),0|_(),0|Ra,0|Ha)),0|_(),0|Se,0|Me)),0|_(),0|C,0|J),C=0|_(),Me=0|ji(2097151&Ye|0,0,2097151&q|0,0),Se=0|_(),Ha=0|ji(2097151&be|0,0,2097151&fa|0,0),Ra=0|_(),Ua=0|ji(2097151&W|0,0,2097151&Te|0,0),Fa=0|_(),Ga=0|ji(2097151&N|0,0,2097151&F|0,0),Na=0|_(),Ja=0|ji(2097151&D|0,0,2097151&la|0,0),Ya=0|_(),La=0|ji(2097151&wa|0,0,2097151&Je|0,0),Pa=0|_(),Ka=0|ji(2097151&je|0,0,2097151&x|0,0),Ta=0|_(),b=0|ji(2097151&He|0,0,2097151&ge|0,0),$a=0|_(),l=0|ji(2097151&ka|0,0,2097151&Pe|0,0),s=0|_(),o=0|ji(2097151&qa|0,0,2097151&V|0,0),Oa=0|_(),na=0|ji(2097151&Ia|0,0,2097151&q|0,0),oa=0|_(),H=0|ji(2097151&Ye|0,0,2097151&fa|0,0),z=0|_(),qe=0|ji(2097151&be|0,0,2097151&Te|0,0),Qe=0|_(),Ee=0|ji(2097151&W|0,0,2097151&F|0,0),j=0|_(),M=0|ji(2097151&N|0,0,2097151&la|0,0),Fe=0|_(),Ca=0|ji(2097151&D|0,0,2097151&Je|0,0),te=0|_(),Qa=0|ji(2097151&wa|0,0,2097151&x|0,0),Ba=0|_(),ja=0|ji(2097151&je|0,0,2097151&ge|0,0),Ea=0|_(),Da=0|ji(2097151&He|0,0,2097151&Pe|0,0),xa=0|_(),oa=0|yt(0|(z=0|yt(0|(j=0|yt(0|(Qe=0|yt(0|(Fe=0|yt(0|(te=0|yt(0|(Ba=0|yt(0|(Ea=0|yt(0|(xa=0|yt(0|(za=0|yt(0|(Sa=0|ji(2097151&ka|0,0,2097151&V|0,0)),0|_(),0|(za=0|ji(2097151&qa|0,0,2097151&ee|0,0)),0|_())),0|_(),0|Da,0|xa)),0|_(),0|ja,0|Ea)),0|_(),0|Qa,0|Ba)),0|_(),0|Ca,0|te)),0|_(),0|M,0|Fe)),0|_(),0|qe,0|Qe)),0|_(),0|Ee,0|j)),0|_(),0|H,0|z)),0|_(),0|na,0|oa),na=0|_(),q=0|ji(0|oe,0|ne,2097151&q|0,0),z=0|_(),H=0|ji(2097151&Ia|0,0,2097151&fa|0,0),j=0|_(),Ee=0|ji(2097151&Ye|0,0,2097151&Te|0,0),Qe=0|_(),qe=0|ji(2097151&be|0,0,2097151&F|0,0),Fe=0|_(),M=0|ji(2097151&W|0,0,2097151&la|0,0),te=0|_(),Ca=0|ji(2097151&N|0,0,2097151&Je|0,0),Ba=0|_(),Qa=0|ji(2097151&D|0,0,2097151&x|0,0),Ea=0|_(),ja=0|ji(2097151&wa|0,0,2097151&ge|0,0),xa=0|_(),Da=0|ji(2097151&je|0,0,2097151&Pe|0,0),za=0|_(),y=0|ji(2097151&He|0,0,2097151&V|0,0),Sa=0|_(),n=0|ji(2097151&ka|0,0,2097151&ee|0,0),i=0|_(),qa=0|ji(2097151&qa|0,0,0|le,0|se),Ma=0|_(),fa=0|ji(0|oe,0|ne,2097151&fa|0,0),ya=0|_(),ue=0|ji(2097151&Ia|0,0,2097151&Te|0,0),Ke=0|_(),ma=0|ji(2097151&Ye|0,0,2097151&F|0,0),B=0|_(),K=0|ji(2097151&be|0,0,2097151&la|0,0),De=0|_(),ze=0|ji(2097151&W|0,0,2097151&Je|0,0),pa=0|_(),Re=0|ji(2097151&N|0,0,2097151&x|0,0),$=0|_(),Ze=0|ji(2097151&D|0,0,2097151&ge|0,0),Ue=0|_(),ca=0|ji(2097151&wa|0,0,2097151&Pe|0,0),ea=0|_(),ba=0|ji(2097151&je|0,0,2097151&V|0,0),ua=0|_(),ya=0|yt(0|(Ke=0|yt(0|(B=0|yt(0|(pa=0|yt(0|(De=0|yt(0|($=0|yt(0|(Ue=0|yt(0|(ea=0|yt(0|(ua=0|yt(0|(ka=0|yt(0|(Le=0|ji(2097151&He|0,0,2097151&ee|0,0)),0|(Ne=0|_()),0|(ka=0|ji(2097151&ka|0,0,0|le,0|se)),0|_())),0|_(),0|ba,0|ua)),0|_(),0|ca,0|ea)),0|_(),0|Ze,0|Ue)),0|_(),0|Re,0|$)),0|_(),0|K,0|De)),0|_(),0|ze,0|pa)),0|_(),0|ma,0|B)),0|_(),0|ue,0|Ke)),0|_(),0|fa,0|ya),fa=0|_(),Te=0|ji(0|oe,0|ne,2097151&Te|0,0),Ke=0|_(),ue=0|ji(2097151&Ia|0,0,2097151&F|0,0),B=0|_(),ma=0|ji(2097151&Ye|0,0,2097151&la|0,0),pa=0|_(),ze=0|ji(2097151&be|0,0,2097151&Je|0,0),De=0|_(),K=0|ji(2097151&W|0,0,2097151&x|0,0),$=0|_(),Re=0|ji(2097151&N|0,0,2097151&ge|0,0),Ue=0|_(),Ze=0|ji(2097151&D|0,0,2097151&Pe|0,0),ea=0|_(),ca=0|ji(2097151&wa|0,0,2097151&V|0,0),ua=0|_(),ba=0|ji(2097151&je|0,0,2097151&ee|0,0),ka=0|_(),He=0|ji(2097151&He|0,0,0|le,0|se),Ne=0|_(),F=0|ji(0|oe,0|ne,2097151&F|0,0),Le=0|_(),Aa=0|ji(2097151&Ia|0,0,2097151&la|0,0),sa=0|_(),he=0|ji(2097151&Ye|0,0,2097151&Je|0,0),ga=0|_(),Q=0|ji(2097151&be|0,0,2097151&x|0,0),I=0|_(),S=0|ji(2097151&W|0,0,2097151&ge|0,0),ae=0|_(),X=0|ji(2097151&N|0,0,2097151&Pe|0,0),Ae=0|_(),xe=0|ji(2097151&D|0,0,2097151&V|0,0),O=0|_(),Le=0|yt(0|(sa=0|yt(0|(ga=0|yt(0|(ae=0|yt(0|(I=0|yt(0|(Ae=0|yt(0|(O=0|yt(0|(je=0|yt(0|(_a=0|ji(2097151&wa|0,0,2097151&ee|0,0)),0|(va=0|_()),0|(je=0|ji(2097151&je|0,0,0|le,0|se)),0|_())),0|_(),0|xe,0|O)),0|_(),0|X,0|Ae)),0|_(),0|Q,0|I)),0|_(),0|S,0|ae)),0|_(),0|he,0|ga)),0|_(),0|Aa,0|sa)),0|_(),0|F,0|Le),F=0|_(),la=0|ji(0|oe,0|ne,2097151&la|0,0),sa=0|_(),Aa=0|ji(2097151&Ia|0,0,2097151&Je|0,0),ga=0|_(),he=0|ji(2097151&Ye|0,0,2097151&x|0,0),ae=0|_(),S=0|ji(2097151&be|0,0,2097151&ge|0,0),I=0|_(),Q=0|ji(2097151&W|0,0,2097151&Pe|0,0),Ae=0|_(),X=0|ji(2097151&N|0,0,2097151&V|0,0),O=0|_(),xe=0|ji(2097151&D|0,0,2097151&ee|0,0),je=0|_(),wa=0|ji(2097151&wa|0,0,0|le,0|se),va=0|_(),Je=0|ji(0|oe,0|ne,2097151&Je|0,0),_a=0|_(),ra=0|ji(2097151&Ia|0,0,2097151&x|0,0),E=0|_(),ia=0|ji(2097151&Ye|0,0,2097151&ge|0,0),aa=0|_(),Z=0|ji(2097151&be|0,0,2097151&Pe|0,0),v=0|_(),ie=0|ji(2097151&W|0,0,2097151&V|0,0),$e=0|_(),_a=0|yt(0|(E=0|yt(0|(aa=0|yt(0|($e=0|yt(0|(v=0|yt(0|(D=0|yt(0|(pe=0|ji(2097151&N|0,0,2097151&ee|0,0)),0|(re=0|_()),0|(D=0|ji(2097151&D|0,0,0|le,0|se)),0|_())),0|_(),0|Z,0|v)),0|_(),0|ie,0|$e)),0|_(),0|ia,0|aa)),0|_(),0|ra,0|E)),0|_(),0|Je,0|_a),Je=0|_(),x=0|ji(0|oe,0|ne,2097151&x|0,0),E=0|_(),ra=0|ji(2097151&Ia|0,0,2097151&ge|0,0),aa=0|_(),ia=0|ji(2097151&Ye|0,0,2097151&Pe|0,0),$e=0|_(),ie=0|ji(2097151&be|0,0,2097151&V|0,0),v=0|_(),Z=0|ji(2097151&W|0,0,2097151&ee|0,0),D=0|_(),N=0|ji(2097151&N|0,0,0|le,0|se),re=0|_(),ge=0|ji(0|oe,0|ne,2097151&ge|0,0),pe=0|_(),Be=0|ji(2097151&Ia|0,0,2097151&Pe|0,0),Ge=0|_(),da=0|ji(2097151&Ye|0,0,2097151&V|0,0),Ce=0|_(),ke=0|ji(2097151&be|0,0,2097151&ee|0,0),ha=0|_(),pe=0|yt(0|(Ge=0|yt(0|(Ce=0|yt(0|(ha=0|yt(0|(W=0|ji(2097151&W|0,0,0|le,0|se)),0|_(),0|ke,0|ha)),0|_(),0|da,0|Ce)),0|_(),0|Be,0|Ge)),0|_(),0|ge,0|pe),ge=0|_(),Pe=0|ji(0|oe,0|ne,2097151&Pe|0,0),Ge=0|_(),Be=0|ji(2097151&Ia|0,0,2097151&V|0,0),Ce=0|_(),da=0|ji(2097151&Ye|0,0,2097151&ee|0,0),ha=0|_(),be=0|ji(2097151&be|0,0,0|le,0|se),ke=0|_(),V=0|ji(0|oe,0|ne,2097151&V|0,0),W=0|_(),W=0|yt(0|(Ye=0|yt(0|ji(2097151&Ia|0,0,2097151&ee|0,0),0|(L=0|_()),0|(Ye=0|ji(2097151&Ye|0,0,0|le,0|se)),0|_())),0|_(),0|V,0|W),V=0|_(),Ia=0|yt(0|(ee=0|ji(0|oe,0|ne,2097151&ee|0,0)),0|(Ye=0|_()),0|(Ia=0|ji(2097151&Ia|0,0,0|le,0|se)),0|_()),Ye=0|_(),se=0|ji(0|oe,0|ne,0|le,0|se),le=0|_(),ee=0|yt(0|T,0|U,0|(ee=0|Oi(0|(ne=0|yt(0|we,0|ve,1048576,0)),0|(oe=0|_()),21)),0|_()),U=0|_(),oe=0|mt(0|we,0|ve,-2097152&ne|0,2047&oe|0),ne=0|_(),T=0|Oi(0|(ve=0|yt(0|_e,0|Ie,1048576,0)),0|(we=0|_()),21),L=0|_(),L=0|yt(0|(me=0|yt(0|(a=0|yt(0|(lr=0|yt(0|f,0|m,0|p,0|lr)),0|_(),0|G,0|a)),0|_(),0|R,0|me)),0|_(),0|T,0|L),T=0|_(),a=0|Mi(0|(me=0|yt(0|ye,0|fe,1048576,0)),0|(R=0|_()),21),G=0|_(),G=0|yt(0|(Y=0|yt(0|(Xe=0|yt(0|(tr=0|yt(0|(or=0|yt(0|(sr=0|yt(0|g,0|A,0|h,0|sr)),0|_(),0|w,0|or)),0|_(),0|nr,0|tr)),0|_(),0|Oe,0|Xe)),0|_(),0|P,0|Y)),0|_(),0|a,0|G),a=0|_(),Xe=0|Mi(0|(Y=0|yt(0|r,0|ce,1048576,0)),0|(P=0|_()),21),Oe=0|_(),Oe=0|yt(0|(de=0|yt(0|(Ve=0|yt(0|(Xa=0|yt(0|(Wa=0|yt(0|(er=0|yt(0|(rr=0|yt(0|(ir=0|yt(0|d,0|u,0|c,0|ir)),0|_(),0|k,0|rr)),0|_(),0|ar,0|er)),0|_(),0|Za,0|Wa)),0|_(),0|Va,0|Xa)),0|_(),0|We,0|Ve)),0|_(),0|ta,0|de)),0|_(),0|Xe,0|Oe),Xe=0|_(),Ve=0|Mi(0|(de=0|yt(0|J,0|C,1048576,0)),0|(ta=0|_()),21),We=0|_(),We=0|yt(0|(Se=0|yt(0|(Fa=0|yt(0|(Ra=0|yt(0|(Na=0|yt(0|(Ya=0|yt(0|(Pa=0|yt(0|(Ta=0|yt(0|($a=0|yt(0|(Oa=0|yt(0|l,0|s,0|o,0|Oa)),0|_(),0|b,0|$a)),0|_(),0|Ka,0|Ta)),0|_(),0|La,0|Pa)),0|_(),0|Ja,0|Ya)),0|_(),0|Ga,0|Na)),0|_(),0|Ha,0|Ra)),0|_(),0|Ua,0|Fa)),0|_(),0|Me,0|Se)),0|_(),0|Ve,0|We),Ve=0|_(),ta=0|mt(0|J,0|C,-2097152&de|0,0|ta),de=0|_(),Se=0|Mi(0|(C=0|yt(0|oa,0|na,1048576,0)),0|(J=0|_()),21),Me=0|_(),Me=0|yt(0|(z=0|yt(0|(j=0|yt(0|(Qe=0|yt(0|(te=0|yt(0|(Fe=0|yt(0|(Ba=0|yt(0|(Ea=0|yt(0|(xa=0|yt(0|(za=0|yt(0|(Sa=0|yt(0|(Ma=0|yt(0|n,0|i,0|qa,0|Ma)),0|_(),0|y,0|Sa)),0|_(),0|Da,0|za)),0|_(),0|ja,0|xa)),0|_(),0|Qa,0|Ea)),0|_(),0|Ca,0|Ba)),0|_(),0|qe,0|Fe)),0|_(),0|M,0|te)),0|_(),0|Ee,0|Qe)),0|_(),0|H,0|j)),0|_(),0|q,0|z)),0|_(),0|Se,0|Me),Se=0|_(),j=0|Mi(0|(z=0|yt(0|ya,0|fa,1048576,0)),0|(q=0|_()),21),H=0|_(),H=0|yt(0|(Ke=0|yt(0|(B=0|yt(0|(pa=0|yt(0|($=0|yt(0|(De=0|yt(0|(Ue=0|yt(0|(ea=0|yt(0|(ua=0|yt(0|(Ne=0|yt(0|ba,0|ka,0|He,0|Ne)),0|_(),0|ca,0|ua)),0|_(),0|Ze,0|ea)),0|_(),0|Re,0|Ue)),0|_(),0|ze,0|De)),0|_(),0|K,0|$)),0|_(),0|ma,0|pa)),0|_(),0|ue,0|B)),0|_(),0|Te,0|Ke)),0|_(),0|j,0|H),j=0|_(),B=0|Mi(0|(Ke=0|yt(0|Le,0|F,1048576,0)),0|(Te=0|_()),21),ue=0|_(),ue=0|yt(0|(sa=0|yt(0|(ga=0|yt(0|(ae=0|yt(0|(Ae=0|yt(0|(I=0|yt(0|(O=0|yt(0|(va=0|yt(0|xe,0|je,0|wa,0|va)),0|_(),0|X,0|O)),0|_(),0|S,0|I)),0|_(),0|Q,0|Ae)),0|_(),0|he,0|ae)),0|_(),0|Aa,0|ga)),0|_(),0|la,0|sa)),0|_(),0|B,0|ue),B=0|_(),ga=0|Mi(0|(sa=0|yt(0|_a,0|Je,1048576,0)),0|(la=0|_()),21),Aa=0|_(),Aa=0|yt(0|(E=0|yt(0|(aa=0|yt(0|($e=0|yt(0|(D=0|yt(0|(re=0|yt(0|ie,0|v,0|N,0|re)),0|_(),0|Z,0|D)),0|_(),0|ia,0|$e)),0|_(),0|ra,0|aa)),0|_(),0|x,0|E)),0|_(),0|ga,0|Aa),ga=0|_(),aa=0|Mi(0|(E=0|yt(0|pe,0|ge,1048576,0)),0|(x=0|_()),21),ra=0|_(),ra=0|yt(0|(Ge=0|yt(0|(Ce=0|yt(0|(ke=0|yt(0|da,0|ha,0|be,0|ke)),0|_(),0|Be,0|Ce)),0|_(),0|Pe,0|Ge)),0|_(),0|aa,0|ra),aa=0|_(),x=0|mt(0|pe,0|ge,-2097152&E|0,0|x),E=0|_(),Ge=0|yt(0|Ia,0|Ye,0|(Ge=0|Mi(0|(ge=0|yt(0|W,0|V,1048576,0)),0|(pe=0|_()),21)),0|_()),Ye=0|_(),pe=0|mt(0|W,0|V,-2097152&ge|0,0|pe),ge=0|_(),Ia=0|Mi(0|(V=0|yt(0|se,0|le,1048576,0)),0|(W=0|_()),21),Pe=0|_(),W=0|mt(0|se,0|le,-2097152&V|0,0|W),V=0|_(),Ce=0|Oi(0|(le=0|yt(0|ee,0|U,1048576,0)),0|(se=0|_()),21),Be=0|_(),se=0|mt(0|ee,0|U,-2097152&le|0,8191&se|0),le=0|_(),ke=0|Mi(0|(U=0|yt(0|L,0|T,1048576,0)),0|(ee=0|_()),21),be=0|_(),ee=0|mt(0|L,0|T,-2097152&U|0,0|ee),U=0|_(),ha=0|Mi(0|(T=0|yt(0|G,0|a,1048576,0)),0|(L=0|_()),21),da=0|_(),L=0|mt(0|G,0|a,-2097152&T|0,0|L),T=0|_(),$e=0|yt(0|ta,0|de,0|($e=0|Mi(0|(a=0|yt(0|Oe,0|Xe,1048576,0)),0|(G=0|_()),21)),0|_()),de=0|_(),G=0|mt(0|Oe,0|Xe,-2097152&a|0,0|G),a=0|_(),ta=0|Mi(0|(Xe=0|yt(0|We,0|Ve,1048576,0)),0|(Oe=0|_()),21),ia=0|_(),re=0|Mi(0|(D=0|yt(0|Me,0|Se,1048576,0)),0|(Z=0|_()),21),N=0|_(),ae=0|Mi(0|(v=0|yt(0|H,0|j,1048576,0)),0|(ie=0|_()),21),he=0|_(),I=0|Mi(0|(Ae=0|yt(0|ue,0|B,1048576,0)),0|(Q=0|_()),21),S=0|_(),E=0|yt(0|(va=0|Mi(0|(O=0|yt(0|Aa,0|ga,1048576,0)),0|(X=0|_()),21)),0|_(),0|x,0|E),x=0|_(),X=0|mt(0|Aa,0|ga,-2097152&O|0,0|X),O=0|_(),ge=0|yt(0|(va=0|Mi(0|(ga=0|yt(0|ra,0|aa,1048576,0)),0|(Aa=0|_()),21)),0|_(),0|pe,0|ge),pe=0|_(),Aa=0|mt(0|ra,0|aa,-2097152&ga|0,0|Aa),ga=0|_(),V=0|yt(0|(va=0|Mi(0|(aa=0|yt(0|Ge,0|Ye,1048576,0)),0|(ra=0|_()),21)),0|_(),0|W,0|V),W=0|_(),ra=0|mt(0|Ge,0|Ye,-2097152&aa|0,0|ra),aa=0|_(),Ye=0|ji(0|Ia,0|Pe,666643,0),Ge=0|_(),va=0|ji(0|Ia,0|Pe,470296,0),wa=0|_(),je=0|ji(0|Ia,0|Pe,654183,0),xe=0|_(),pa=0|ji(0|Ia,0|Pe,-997805,-1),ma=0|_(),$=0|ji(0|Ia,0|Pe,136657,0),K=0|_(),S=0|yt(0|(la=0|mt(0|(Pe=0|yt(0|_a,0|Je,0|(Pe=0|ji(0|Ia,0|Pe,-683901,-1)),0|_())),0|_(),-2097152&sa|0,0|la)),0|_(),0|I,0|S),I=0|_(),la=0|ji(0|V,0|W,666643,0),sa=0|_(),Pe=0|ji(0|V,0|W,470296,0),Je=0|_(),_a=0|ji(0|V,0|W,654183,0),Ia=0|_(),De=0|ji(0|V,0|W,-997805,-1),ze=0|_(),Ue=0|ji(0|V,0|W,136657,0),Re=0|_(),W=0|ji(0|V,0|W,-683901,-1),V=0|_(),ea=0|ji(0|ra,0|aa,666643,0),Ze=0|_(),ua=0|ji(0|ra,0|aa,470296,0),ca=0|_(),Ne=0|ji(0|ra,0|aa,654183,0),He=0|_(),ka=0|ji(0|ra,0|aa,-997805,-1),ba=0|_(),Qe=0|ji(0|ra,0|aa,136657,0),Ee=0|_(),aa=0|ji(0|ra,0|aa,-683901,-1),ra=0|_(),he=0|yt(0|(Te=0|mt(0|(ra=0|yt(0|(Re=0|yt(0|(ma=0|yt(0|Le,0|F,0|pa,0|ma)),0|_(),0|Ue,0|Re)),0|_(),0|aa,0|ra)),0|_(),-2097152&Ke|0,0|Te)),0|_(),0|ae,0|he),ae=0|_(),Te=0|yt(0|$e,0|de,0|(Te=0|ji(0|ge,0|pe,666643,0)),0|_()),de=0|_(),$e=0|ji(0|ge,0|pe,470296,0),Ke=0|_(),ra=0|ji(0|ge,0|pe,654183,0),aa=0|_(),Re=0|ji(0|ge,0|pe,-997805,-1),Ue=0|_(),ma=0|ji(0|ge,0|pe,136657,0),pa=0|_(),pe=0|ji(0|ge,0|pe,-683901,-1),ge=0|_(),F=0|yt(0|G,0|a,0|(F=0|ji(0|Aa,0|ga,666643,0)),0|_()),a=0|_(),G=0|yt(0|Te,0|de,0|(G=0|ji(0|Aa,0|ga,470296,0)),0|_()),de=0|_(),Te=0|ji(0|Aa,0|ga,654183,0),Le=0|_(),te=0|ji(0|Aa,0|ga,-997805,-1),M=0|_(),Fe=0|ji(0|Aa,0|ga,136657,0),qe=0|_(),ga=0|ji(0|Aa,0|ga,-683901,-1),Aa=0|_(),N=0|yt(0|(q=0|mt(0|(Aa=0|yt(0|(pa=0|yt(0|(fa=0|yt(0|(ba=0|yt(0|(wa=0|yt(0|_a,0|Ia,0|va,0|wa)),0|_(),0|ka,0|ba)),0|_(),0|ya,0|fa)),0|_(),0|ma,0|pa)),0|_(),0|ga,0|Aa)),0|_(),-2097152&z|0,0|q)),0|_(),0|re,0|N),re=0|_(),q=0|ji(0|E,0|x,666643,0),z=0|_(),z=0|yt(0|(P=0|mt(0|(ce=0|yt(0|ha,0|da,0|r,0|ce)),0|_(),-2097152&Y|0,0|P)),0|_(),0|q,0|z),q=0|_(),P=0|yt(0|F,0|a,0|(P=0|ji(0|E,0|x,470296,0)),0|_()),a=0|_(),F=0|yt(0|G,0|de,0|(F=0|ji(0|E,0|x,654183,0)),0|_()),de=0|_(),G=0|ji(0|E,0|x,-997805,-1),Y=0|_(),ce=0|ji(0|E,0|x,136657,0),r=0|_(),r=0|yt(0|(J=0|mt(0|(M=0|yt(0|(aa=0|yt(0|(ia=0|yt(0|(na=0|yt(0|(sa=0|yt(0|ua,0|ca,0|la,0|sa)),0|_(),0|oa,0|na)),0|_(),0|ta,0|ia)),0|_(),0|ra,0|aa)),0|_(),0|te,0|M)),0|_(),-2097152&C|0,0|J)),0|_(),0|ce,0|r),ce=0|_(),x=0|ji(0|E,0|x,-683901,-1),E=0|_(),M=0|yt(0|P,0|a,0|(M=0|Mi(0|(J=0|yt(0|z,0|q,1048576,0)),0|(C=0|_()),21)),0|_()),a=0|_(),C=0|mt(0|z,0|q,-2097152&J|0,0|C),J=0|_(),P=0|Mi(0|(q=0|yt(0|F,0|de,1048576,0)),0|(z=0|_()),21),te=0|_(),te=0|yt(0|(Y=0|yt(0|(Le=0|yt(0|(Ke=0|yt(0|(Oe=0|mt(0|(Ve=0|yt(0|ea,0|Ze,0|We,0|Ve)),0|_(),-2097152&Xe|0,0|Oe)),0|_(),0|$e,0|Ke)),0|_(),0|Te,0|Le)),0|_(),0|G,0|Y)),0|_(),0|P,0|te),P=0|_(),z=0|mt(0|F,0|de,-2097152&q|0,0|z),q=0|_(),Y=0|Mi(0|(de=0|yt(0|r,0|ce,1048576,0)),0|(F=0|_()),21),G=0|_(),G=0|yt(0|(Z=0|mt(0|(E=0|yt(0|(Se=0|yt(0|(qe=0|yt(0|(Ue=0|yt(0|(He=0|yt(0|(Ge=0|yt(0|Pe,0|Je,0|Ye,0|Ge)),0|_(),0|Ne,0|He)),0|_(),0|Re,0|Ue)),0|_(),0|Fe,0|qe)),0|_(),0|Me,0|Se)),0|_(),0|x,0|E)),0|_(),-2097152&D|0,0|Z)),0|_(),0|Y,0|G),Y=0|_(),E=0|Mi(0|(Z=0|yt(0|N,0|re,1048576,0)),0|(D=0|_()),21),x=0|_(),x=0|yt(0|(ie=0|mt(0|(j=0|yt(0|(ge=0|yt(0|(Ee=0|yt(0|(xe=0|yt(0|De,0|ze,0|je,0|xe)),0|_(),0|Qe,0|Ee)),0|_(),0|pe,0|ge)),0|_(),0|H,0|j)),0|_(),-2097152&v|0,0|ie)),0|_(),0|E,0|x),E=0|_(),D=0|mt(0|N,0|re,-2097152&Z|0,0|D),Z=0|_(),ie=0|Mi(0|(re=0|yt(0|he,0|ae,1048576,0)),0|(N=0|_()),21),v=0|_(),v=0|yt(0|(Q=0|mt(0|(B=0|yt(0|(K=0|yt(0|W,0|V,0|$,0|K)),0|_(),0|ue,0|B)),0|_(),-2097152&Ae|0,0|Q)),0|_(),0|ie,0|v),ie=0|_(),N=0|mt(0|he,0|ae,-2097152&re|0,0|N),re=0|_(),O=0|yt(0|(Q=0|Mi(0|(ae=0|yt(0|S,0|I,1048576,0)),0|(he=0|_()),21)),0|_(),0|X,0|O),X=0|_(),he=0|mt(0|S,0|I,-2097152&ae|0,0|he),ae=0|_(),Q=0|yt(0|z,0|q,0|(Q=0|Mi(0|(I=0|yt(0|M,0|a,1048576,0)),0|(S=0|_()),21)),0|_()),q=0|_(),S=0|mt(0|M,0|a,-2097152&I|0,0|S),I=0|_(),z=0|Mi(0|(a=0|yt(0|te,0|P,1048576,0)),0|(M=0|_()),21),Ae=0|_(),M=0|mt(0|te,0|P,-2097152&a|0,0|M),a=0|_(),Z=0|yt(0|(B=0|Mi(0|(P=0|yt(0|G,0|Y,1048576,0)),0|(te=0|_()),21)),0|_(),0|D,0|Z),D=0|_(),te=0|mt(0|G,0|Y,-2097152&P|0,0|te),P=0|_(),re=0|yt(0|(B=0|Mi(0|(Y=0|yt(0|x,0|E,1048576,0)),0|(G=0|_()),21)),0|_(),0|N,0|re),N=0|_(),G=0|mt(0|x,0|E,-2097152&Y|0,0|G),Y=0|_(),ae=0|yt(0|(B=0|Mi(0|(E=0|yt(0|v,0|ie,1048576,0)),0|(x=0|_()),21)),0|_(),0|he,0|ae),he=0|_(),x=0|mt(0|v,0|ie,-2097152&E|0,0|x),E=0|_(),ie=0|yt(0|L,0|T,0|(ie=0|ji(0|O,0|X,666643,0)),0|_()),T=0|_(),L=0|yt(0|C,0|J,0|(L=0|ji(0|O,0|X,470296,0)),0|_()),J=0|_(),C=0|yt(0|S,0|I,0|(C=0|ji(0|O,0|X,654183,0)),0|_()),I=0|_(),S=0|yt(0|Q,0|q,0|(S=0|ji(0|O,0|X,-997805,-1)),0|_()),q=0|_(),Q=0|yt(0|M,0|a,0|(Q=0|ji(0|O,0|X,136657,0)),0|_()),a=0|_(),X=0|ji(0|O,0|X,-683901,-1),O=0|_(),F=0|mt(0|(O=0|yt(0|(ce=0|yt(0|z,0|Ae,0|r,0|ce)),0|_(),0|X,0|O)),0|_(),-2097152&de|0,0|F),de=0|_(),O=0|ji(0|ae,0|he,666643,0),X=0|_(),ce=0|yt(0|ie,0|T,0|(ce=0|ji(0|ae,0|he,470296,0)),0|_()),T=0|_(),ie=0|yt(0|L,0|J,0|(ie=0|ji(0|ae,0|he,654183,0)),0|_()),J=0|_(),L=0|yt(0|C,0|I,0|(L=0|ji(0|ae,0|he,-997805,-1)),0|_()),I=0|_(),C=0|yt(0|S,0|q,0|(C=0|ji(0|ae,0|he,136657,0)),0|_()),q=0|_(),he=0|yt(0|Q,0|a,0|(he=0|ji(0|ae,0|he,-683901,-1)),0|_()),a=0|_(),Q=0|yt(0|ee,0|U,0|(Q=0|ji(0|x,0|E,666643,0)),0|_()),U=0|_(),ee=0|ji(0|x,0|E,470296,0),ae=0|_(),S=0|yt(0|ce,0|T,0|(S=0|ji(0|x,0|E,654183,0)),0|_()),T=0|_(),ce=0|yt(0|ie,0|J,0|(ce=0|ji(0|x,0|E,-997805,-1)),0|_()),J=0|_(),ie=0|yt(0|L,0|I,0|(ie=0|ji(0|x,0|E,136657,0)),0|_()),I=0|_(),E=0|yt(0|C,0|q,0|(E=0|ji(0|x,0|E,-683901,-1)),0|_()),q=0|_(),C=0|ji(0|re,0|N,666643,0),x=0|_(),L=0|ji(0|re,0|N,470296,0),r=0|_(),Ae=0|ji(0|re,0|N,654183,0),z=0|_(),M=0|ji(0|re,0|N,-997805,-1),v=0|_(),B=0|yt(0|ce,0|J,0|(B=0|ji(0|re,0|N,136657,0)),0|_()),J=0|_(),N=0|yt(0|ie,0|I,0|(N=0|ji(0|re,0|N,-683901,-1)),0|_()),I=0|_(),ie=0|ji(0|G,0|Y,666643,0),re=0|_(),ce=0|ji(0|G,0|Y,470296,0),ue=0|_(),K=0|ji(0|G,0|Y,654183,0),$=0|_(),V=0|ji(0|G,0|Y,-997805,-1),W=0|_(),j=0|ji(0|G,0|Y,136657,0),H=0|_(),Y=0|yt(0|B,0|J,0|(Y=0|ji(0|G,0|Y,-683901,-1)),0|_()),J=0|_(),ne=0|yt(0|(B=0|ji(0|Z,0|D,666643,0)),0|_(),0|oe,0|ne),oe=0|_(),B=0|ji(0|Z,0|D,470296,0),G=0|_(),ge=0|ji(0|Z,0|D,654183,0),pe=0|_(),ue=0|yt(0|(x=0|yt(0|(pe=0|yt(0|(we=0|mt(0|(Ie=0|yt(0|Ce,0|Be,0|_e,0|Ie)),0|_(),-2097152&ve|0,8191&we|0)),0|_(),0|ge,0|pe)),0|_(),0|C,0|x)),0|_(),0|ce,0|ue),ce=0|_(),x=0|ji(0|Z,0|D,-997805,-1),C=0|_(),pe=0|ji(0|Z,0|D,136657,0),ge=0|_(),W=0|yt(0|(z=0|yt(0|(ge=0|yt(0|(ae=0|yt(0|(X=0|yt(0|(R=0|mt(0|(fe=0|yt(0|ke,0|be,0|ye,0|fe)),0|_(),-2097152&me|0,0|R)),0|_(),0|O,0|X)),0|_(),0|ee,0|ae)),0|_(),0|pe,0|ge)),0|_(),0|Ae,0|z)),0|_(),0|V,0|W),V=0|_(),D=0|ji(0|Z,0|D,-683901,-1),Z=0|_(),ge=0|Mi(0|(z=0|yt(0|ne,0|oe,1048576,0)),0|(Ae=0|_()),21),pe=0|_(),pe=0|yt(0|(re=0|yt(0|(G=0|yt(0|se,0|le,0|B,0|G)),0|_(),0|ie,0|re)),0|_(),0|ge,0|pe),ge=0|_(),Ae=0|mt(0|ne,0|oe,-2097152&z|0,0|Ae),z=0|_(),re=0|Mi(0|(oe=0|yt(0|ue,0|ce,1048576,0)),0|(ne=0|_()),21),ie=0|_(),ie=0|yt(0|($=0|yt(0|(r=0|yt(0|(C=0|yt(0|Q,0|U,0|x,0|C)),0|_(),0|L,0|r)),0|_(),0|K,0|$)),0|_(),0|re,0|ie),re=0|_(),r=0|Mi(0|($=0|yt(0|W,0|V,1048576,0)),0|(K=0|_()),21),L=0|_(),L=0|yt(0|(H=0|yt(0|(v=0|yt(0|(Z=0|yt(0|S,0|T,0|D,0|Z)),0|_(),0|M,0|v)),0|_(),0|j,0|H)),0|_(),0|r,0|L),r=0|_(),v=0|yt(0|N,0|I,0|(v=0|Mi(0|(H=0|yt(0|Y,0|J,1048576,0)),0|(j=0|_()),21)),0|_()),I=0|_(),j=0|mt(0|Y,0|J,-2097152&H|0,0|j),H=0|_(),N=0|yt(0|he,0|a,0|(N=0|Mi(0|(J=0|yt(0|E,0|q,1048576,0)),0|(Y=0|_()),21)),0|_()),a=0|_(),Y=0|mt(0|E,0|q,-2097152&J|0,0|Y),J=0|_(),he=0|yt(0|te,0|P,0|(he=0|Mi(0|(q=0|yt(0|F,0|de,1048576,0)),0|(E=0|_()),21)),0|_()),P=0|_(),E=0|mt(0|F,0|de,-2097152&q|0,0|E),q=0|_(),te=0|Mi(0|(de=0|yt(0|pe,0|ge,1048576,0)),0|(F=0|_()),21),M=0|_(),T=0|Mi(0|(Z=0|yt(0|ie,0|re,1048576,0)),0|(D=0|_()),21),S=0|_(),U=0|yt(0|j,0|H,0|(U=0|Mi(0|(C=0|yt(0|L,0|r,1048576,0)),0|(x=0|_()),21)),0|_()),H=0|_(),G=0|yt(0|Y,0|J,0|(G=0|Mi(0|(j=0|yt(0|v,0|I,1048576,0)),0|(Q=0|_()),21)),0|_()),J=0|_(),Q=0|mt(0|v,0|I,-2097152&j|0,0|Q),j=0|_(),Y=0|yt(0|E,0|q,0|(Y=0|Mi(0|(I=0|yt(0|N,0|a,1048576,0)),0|(v=0|_()),21)),0|_()),q=0|_(),v=0|mt(0|N,0|a,-2097152&I|0,0|v),I=0|_(),E=0|Mi(0|(a=0|yt(0|he,0|P,1048576,0)),0|(N=0|_()),21),B=0|_(),N=0|mt(0|he,0|P,-2097152&a|0,0|N),a=0|_(),P=0|yt(0|Ae,0|z,0|(P=0|ji(0|E,0|B,666643,0)),0|_()),z=0|_(),Ae=0|ji(0|E,0|B,470296,0),he=0|_(),le=0|ji(0|E,0|B,654183,0),se=0|_(),ae=0|ji(0|E,0|B,-997805,-1),ee=0|_(),X=0|ji(0|E,0|B,136657,0),O=0|_(),B=0|ji(0|E,0|B,-683901,-1),E=0|_(),z=0|Mi(0|P,0|z,21),R=0|_(),z=0|Mi(0|(R=0|yt(0|(F=0|mt(0|(he=0|yt(0|pe,0|ge,0|Ae,0|he)),0|_(),-2097152&de|0,0|F)),0|_(),0|z,0|R)),0|_(),21),F=0|_(),z=0|Mi(0|(F=0|yt(0|(M=0|yt(0|(ne=0|mt(0|(se=0|yt(0|ue,0|ce,0|le,0|se)),0|_(),-2097152&oe|0,0|ne)),0|_(),0|te,0|M)),0|_(),0|z,0|F)),0|_(),21),M=0|_(),z=0|Mi(0|(M=0|yt(0|(D=0|mt(0|(ee=0|yt(0|ie,0|re,0|ae,0|ee)),0|_(),-2097152&Z|0,0|D)),0|_(),0|z,0|M)),0|_(),21),D=0|_(),z=0|Mi(0|(D=0|yt(0|(S=0|yt(0|(K=0|mt(0|(O=0|yt(0|W,0|V,0|X,0|O)),0|_(),-2097152&$|0,0|K)),0|_(),0|T,0|S)),0|_(),0|z,0|D)),0|_(),21),S=0|_(),P=0|yt(0|(Y=0|ji(0|(N=0|Mi(0|(a=0|yt(0|(q=0|Mi(0|(v=0|yt(0|Y,0|q,0|(v=0|Mi(0|(I=0|yt(0|(J=0|Mi(0|(Q=0|yt(0|G,0|J,0|(Q=0|Mi(0|(j=0|yt(0|(H=0|Mi(0|(z=0|yt(0|U,0|H,0|(z=0|Mi(0|(S=0|yt(0|(x=0|mt(0|(E=0|yt(0|L,0|r,0|B,0|E)),0|_(),-2097152&C|0,0|x)),0|_(),0|z,0|S)),0|_(),21)),0|_())),0|_(),21)),0|_(),0|Q,0|j)),0|_(),21)),0|_())),0|_(),21)),0|_(),0|v,0|I)),0|_(),21)),0|_())),0|_(),21)),0|_(),0|N,0|a)),0|_(),21)),0|(q=0|_()),666643,0)),0|_(),2097151&P|0,0),Y=0|_(),R=0|yt(0|(J=0|ji(0|N,0|q,470296,0)),0|_(),2097151&R|0,0),J=0|_(),F=0|yt(0|(G=0|ji(0|N,0|q,654183,0)),0|_(),2097151&F|0,0),G=0|_(),M=0|yt(0|(H=0|ji(0|N,0|q,-997805,-1)),0|_(),2097151&M|0,0),H=0|_(),D=0|yt(0|(U=0|ji(0|N,0|q,136657,0)),0|_(),2097151&D|0,0),U=0|_(),a=0|yt(0|(r=0|Mi(0|(v=0|yt(0|(B=0|Mi(0|(I=0|yt(0|(E=0|Mi(0|(Q=0|yt(0|(C=0|Mi(0|(j=0|yt(0|(x=0|Mi(0|(z=0|yt(0|(S=0|Mi(0|(D=0|yt(0|(S=0|yt(0|(q=0|ji(0|N,0|q,-683901,-1)),0|_(),2097151&S|0,0)),0|(q=0|_()),0|(D=0|Mi(0|(M=0|yt(0|D,0|U,0|(M=0|Mi(0|(F=0|yt(0|M,0|H,0|(F=0|Mi(0|(R=0|yt(0|F,0|G,0|(R=0|Mi(0|(N=0|yt(0|R,0|J,0|(N=0|Mi(0|P,0|Y,21)),0|_())),0|(J=0|_()),21)),0|_())),0|(G=0|_()),21)),0|_())),0|(H=0|_()),21)),0|_())),0|(U=0|_()),21)),0|_())),0|(q=0|_()),21)),0|_(),2097151&z|0,0)),0|(S=0|_()),21)),0|_(),2097151&j|0,0)),0|(x=0|_()),21)),0|_(),2097151&Q|0,0)),0|(C=0|_()),21)),0|_(),2097151&I|0,0)),0|(E=0|_()),21)),0|_(),2097151&v|0,0)),0|(B=0|_()),21)),0|_(),2097151&a|0,0),r=0|_(),t[e>>0]=P,L=0|Oi(0|P,0|Y,8),_(),t[e+1>>0]=L,Y=0|Oi(0|P,0|Y,16),_(),P=0|Li(2097151&N|0,0,5),_(),t[e+2>>0]=P|31&Y,Y=0|Oi(0|N,0|J,3),_(),t[e+3>>0]=Y,J=0|Oi(0|N,0|J,11),_(),t[e+4>>0]=J,N=0|Oi(2097151&N|0,0,19),J=0|_(),Y=0|Li(2097151&R|0,0,2),_(),t[e+5>>0]=Y|N,G=0|Oi(0|R,0|G,6),_(),t[e+6>>0]=G,R=0|Oi(2097151&R|0,0,14),G=0|_(),N=0|Li(2097151&F|0,0,7),_(),t[e+7>>0]=N|R,R=0|Oi(0|F,0|H,1),_(),t[e+8>>0]=R,H=0|Oi(0|F,0|H,9),_(),t[e+9>>0]=H,F=0|Oi(2097151&F|0,0,17),H=0|_(),R=0|Li(2097151&M|0,0,4),_(),t[e+10>>0]=R|F,F=0|Oi(0|M,0|U,4),_(),t[e+11>>0]=F,U=0|Oi(0|M,0|U,12),_(),t[e+12>>0]=U,M=0|Oi(2097151&M|0,0,20),U=0|_(),F=0|Li(2097151&D|0,0,1),_(),t[e+13>>0]=F|M,q=0|Oi(0|D,0|q,7),_(),t[e+14>>0]=q,D=0|Oi(2097151&D|0,0,15),q=0|_(),M=0|Li(2097151&z|0,0,6),_(),t[e+15>>0]=M|D,D=0|Oi(0|z,0|S,2),_(),t[e+16>>0]=D,S=0|Oi(0|z,0|S,10),_(),t[e+17>>0]=S,z=0|Oi(2097151&z|0,0,18),S=0|_(),D=0|Li(0|j,0|x,3),_(),t[e+18>>0]=D|z,z=0|Oi(0|j,0|x,5),_(),t[e+19>>0]=z,x=0|Oi(0|j,0|x,13),_(),t[e+20>>0]=x,t[e+21>>0]=Q,x=0|Oi(0|Q,0|C,8),_(),t[e+22>>0]=x,C=0|Oi(0|Q,0|C,16),_(),Q=0|Li(2097151&I|0,0,5),_(),t[e+23>>0]=Q|31&C,C=0|Oi(0|I,0|E,3),_(),t[e+24>>0]=C,E=0|Oi(0|I,0|E,11),_(),t[e+25>>0]=E,I=0|Oi(2097151&I|0,0,19),E=0|_(),C=0|Li(2097151&v|0,0,2),_(),t[e+26>>0]=C|I,B=0|Oi(0|v,0|B,6),_(),t[e+27>>0]=B,v=0|Oi(2097151&v|0,0,14),B=0|_(),I=0|Li(0|a,0|r,7),_(),t[e+28>>0]=I|v,v=0|Oi(0|a,0|r,1),_(),t[e+29>>0]=v,v=0|Oi(0|a,0|r,9),_(),t[e+30>>0]=v,r=0|Mi(0|a,0|r,17),_(),t[e+31>>0]=r}function q(e,a,r,i){e|=0,i|=0;var t=0,n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0,v=0,I=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0,N=0,G=0,Y=0,J=0,P=0;!function(e,a){e|=0,a|=0;var r=0,i=0,t=0,n=0;r=0;do{n=0|Ca(a+(r<<3)|0),t=0|_(),l[(i=e+(r<<3)|0)>>2]=n,l[i+4>>2]=t,r=r+1|0}while(16!=(0|r))}(r|=0,a|=0),t=e,n=(a=i)+64|0;do{l[a>>2]=l[t>>2],a=a+4|0,t=t+4|0}while((0|a)<(0|n));y=0,a=0|l[r>>2],t=0|l[r+4>>2];do{if(f=0|wi(I=0|l[i+32>>2],u=0|l[i+32+4>>2],14),g=0|_(),n=0|wi(I,u,18),g=(0|_())^g,G=0|wi(I,u,41),g^=0|_(),q=0|l[i+40>>2],c=0|l[i+40+4>>2],b=0|l[i+48>>2],s=0|l[i+48+4>>2],d=0|l[(U=32784+(y<<3)|0)>>2],U=0|l[U+4>>2],p=0|l[i+56>>2],v=0|l[i+56+4>>2],U=0|yt(0|(v=0|yt(0|(U=0|yt(0|(U=0|yt(0|(g=0|yt(0|a,0|t,n^f^G|0,0|g)),0|_(),0|d,0|U)),0|_(),(b^q)&I^b|0,(s^c)&u^s|0)),0|_(),0|p,0|v)),0|(p=0|_()),0|l[i+24>>2],0|l[i+24+4>>2]),d=0|_(),l[i+24>>2]=U,l[i+24+4>>2]=d,f=0|wi(g=0|l[i>>2],G=0|l[i+4>>2],28),n=0|_(),Q=0|wi(g,G,34),n=(0|_())^n,S=0|wi(g,G,39),n^=0|_(),A=0|l[i+8>>2],N=0|l[i+8+4>>2],h=0|l[i+16>>2],H=0|l[i+16+4>>2],p=0|yt(0|(p=0|yt(Q^f^S|0,0|n,0|v,0|p)),0|_(),(h|A)&g|h&A|0,(H|N)&G|H&N|0),v=0|_(),l[i+56>>2]=p,l[i+56+4>>2]=v,n=0|wi(U,d,14),S=0|_(),f=0|wi(U,d,18),S=(0|_())^S,Q=0|wi(U,d,41),S^=0|_(),m=0|l[r+((t=1|y)<<3)>>2],o=0|l[r+(t<<3)+4>>2],a=0|l[32784+(t<<3)>>2],x=0|l[32784+(t<<3)+4>>2],H=0|yt(0|(x=0|yt(0|(o=0|yt(0|(S=0|yt(0|(s=0|yt(U&(q^I)^q|0,d&(c^u)^c|0,0|b,0|s)),0|_(),f^n^Q|0,0|S)),0|_(),0|m,0|o)),0|_(),0|a,0|x)),0|(a=0|_()),0|h,0|H),h=0|_(),l[i+16>>2]=H,l[i+16+4>>2]=h,o=0|wi(p,v,28),m=0|_(),S=0|wi(p,v,34),m=(0|_())^m,Q=0|wi(p,v,39),m^=0|_(),m=0|yt(0|(a=0|yt(0|x,0|a,p&(A|g)|A&g|0,v&(N|G)|N&G|0)),0|_(),S^o^Q|0,0|m),Q=0|_(),l[i+48>>2]=m,l[i+48+4>>2]=Q,o=0|wi(H,h,14),S=0|_(),a=0|wi(H,h,18),S=(0|_())^S,x=0|wi(H,h,41),S^=0|_(),f=0|l[r+((n=2|y)<<3)>>2],s=0|l[r+(n<<3)+4>>2],b=0|l[32784+(n<<3)>>2],j=0|l[32784+(n<<3)+4>>2],N=0|yt(0|(j=0|yt(0|(s=0|yt(0|(S=0|yt(0|(c=0|yt(H&(U^I)^I|0,h&(d^u)^u|0,0|q,0|c)),0|_(),a^o^x|0,0|S)),0|_(),0|f,0|s)),0|_(),0|b,0|j)),0|(b=0|_()),0|A,0|N),A=0|_(),l[i+8>>2]=N,l[i+8+4>>2]=A,s=0|wi(m,Q,28),f=0|_(),S=0|wi(m,Q,34),f=(0|_())^f,x=0|wi(m,Q,39),f^=0|_(),f=0|yt(0|(b=0|yt(0|j,0|b,m&(p|g)|p&g|0,Q&(v|G)|v&G|0)),0|_(),S^s^x|0,0|f),x=0|_(),l[i+40>>2]=f,l[i+40+4>>2]=x,s=0|wi(N,A,14),S=0|_(),b=0|wi(N,A,18),S=(0|_())^S,j=0|wi(N,A,41),S^=0|_(),a=0|l[r+((o=3|y)<<3)>>2],c=0|l[r+(o<<3)+4>>2],q=0|l[32784+(o<<3)>>2],k=0|l[32784+(o<<3)+4>>2],G=0|yt(0|(k=0|yt(0|(c=0|yt(0|(S=0|yt(0|(u=0|yt(N&(H^U)^U|0,A&(h^d)^d|0,0|I,0|u)),0|_(),b^s^j|0,0|S)),0|_(),0|a,0|c)),0|_(),0|q,0|k)),0|(q=0|_()),0|g,0|G),g=0|_(),l[i>>2]=G,l[i+4>>2]=g,c=0|wi(f,x,28),a=0|_(),S=0|wi(f,x,34),a=(0|_())^a,j=0|wi(f,x,39),a^=0|_(),a=0|yt(0|(q=0|yt(0|k,0|q,f&(m|p)|m&p|0,x&(Q|v)|Q&v|0)),0|_(),S^c^j|0,0|a),j=0|_(),l[i+32>>2]=a,l[i+32+4>>2]=j,c=0|wi(G,g,14),S=0|_(),q=0|wi(G,g,18),S=(0|_())^S,k=0|wi(G,g,41),S^=0|_(),b=0|l[r+((s=4|y)<<3)>>2],u=0|l[r+(s<<3)+4>>2],I=0|l[32784+(s<<3)>>2],F=0|l[32784+(s<<3)+4>>2],v=0|yt(0|(F=0|yt(0|(u=0|yt(0|(S=0|yt(0|(d=0|yt(G&(N^H)^H|0,g&(A^h)^h|0,0|U,0|d)),0|_(),q^c^k|0,0|S)),0|_(),0|b,0|u)),0|_(),0|I,0|F)),0|(I=0|_()),0|p,0|v),p=0|_(),l[i+56>>2]=v,l[i+56+4>>2]=p,u=0|wi(a,j,28),b=0|_(),S=0|wi(a,j,34),b=(0|_())^b,k=0|wi(a,j,39),b^=0|_(),b=0|yt(0|(I=0|yt(0|F,0|I,a&(f|m)|f&m|0,j&(x|Q)|x&Q|0)),0|_(),S^u^k|0,0|b),k=0|_(),l[i+24>>2]=b,l[i+24+4>>2]=k,u=0|wi(v,p,14),S=0|_(),I=0|wi(v,p,18),S=(0|_())^S,F=0|wi(v,p,41),S^=0|_(),q=0|l[r+((c=5|y)<<3)>>2],d=0|l[r+(c<<3)+4>>2],U=0|l[32784+(c<<3)>>2],z=0|l[32784+(c<<3)+4>>2],Q=0|yt(0|(z=0|yt(0|(d=0|yt(0|(S=0|yt(0|(h=0|yt(v&(G^N)^N|0,p&(g^A)^A|0,0|H,0|h)),0|_(),I^u^F|0,0|S)),0|_(),0|q,0|d)),0|_(),0|U,0|z)),0|(U=0|_()),0|m,0|Q),m=0|_(),l[i+48>>2]=Q,l[i+48+4>>2]=m,d=0|wi(b,k,28),q=0|_(),S=0|wi(b,k,34),q=(0|_())^q,F=0|wi(b,k,39),q^=0|_(),q=0|yt(0|(U=0|yt(0|z,0|U,b&(a|f)|a&f|0,k&(j|x)|j&x|0)),0|_(),S^d^F|0,0|q),F=0|_(),l[i+16>>2]=q,l[i+16+4>>2]=F,d=0|wi(Q,m,14),S=0|_(),U=0|wi(Q,m,18),S=(0|_())^S,z=0|wi(Q,m,41),S^=0|_(),I=0|l[r+((u=6|y)<<3)>>2],h=0|l[r+(u<<3)+4>>2],H=0|l[32784+(u<<3)>>2],R=0|l[32784+(u<<3)+4>>2],x=0|yt(0|(R=0|yt(0|(h=0|yt(0|(S=0|yt(0|(A=0|yt(Q&(v^G)^G|0,m&(p^g)^g|0,0|N,0|A)),0|_(),U^d^z|0,0|S)),0|_(),0|I,0|h)),0|_(),0|H,0|R)),0|(H=0|_()),0|f,0|x),f=0|_(),l[i+40>>2]=x,l[i+40+4>>2]=f,h=0|wi(q,F,28),I=0|_(),S=0|wi(q,F,34),I=(0|_())^I,z=0|wi(q,F,39),I^=0|_(),I=0|yt(0|(H=0|yt(0|R,0|H,q&(b|a)|b&a|0,F&(k|j)|k&j|0)),0|_(),S^h^z|0,0|I),z=0|_(),l[i+8>>2]=I,l[i+8+4>>2]=z,h=0|wi(x,f,14),S=0|_(),H=0|wi(x,f,18),S=(0|_())^S,R=0|wi(x,f,41),S^=0|_(),U=0|l[r+((d=7|y)<<3)>>2],A=0|l[r+(d<<3)+4>>2],N=0|l[32784+(d<<3)>>2],Y=0|l[32784+(d<<3)+4>>2],j=0|yt(0|(Y=0|yt(0|(A=0|yt(0|(S=0|yt(0|(g=0|yt(x&(Q^v)^v|0,f&(m^p)^p|0,0|G,0|g)),0|_(),H^h^R|0,0|S)),0|_(),0|U,0|A)),0|_(),0|N,0|Y)),0|(N=0|_()),0|a,0|j),a=0|_(),l[i+32>>2]=j,l[i+32+4>>2]=a,A=0|wi(I,z,28),U=0|_(),S=0|wi(I,z,34),U=(0|_())^U,R=0|wi(I,z,39),U^=0|_(),U=0|yt(0|(N=0|yt(0|Y,0|N,I&(q|b)|q&b|0,z&(F|k)|F&k|0)),0|_(),S^A^R|0,0|U),R=0|_(),l[i>>2]=U,l[i+4>>2]=R,A=0|wi(j,a,14),S=0|_(),N=0|wi(j,a,18),S=(0|_())^S,Y=0|wi(j,a,41),S^=0|_(),H=0|l[r+((h=8|y)<<3)>>2],g=0|l[r+(h<<3)+4>>2],G=0|l[32784+(h<<3)>>2],J=0|l[32784+(h<<3)+4>>2],k=0|yt(0|(J=0|yt(0|(g=0|yt(0|(S=0|yt(0|(p=0|yt(j&(x^Q)^Q|0,a&(f^m)^m|0,0|v,0|p)),0|_(),N^A^Y|0,0|S)),0|_(),0|H,0|g)),0|_(),0|G,0|J)),0|(G=0|_()),0|b,0|k),b=0|_(),l[i+24>>2]=k,l[i+24+4>>2]=b,g=0|wi(U,R,28),H=0|_(),S=0|wi(U,R,34),H=(0|_())^H,Y=0|wi(U,R,39),H^=0|_(),H=0|yt(0|(G=0|yt(0|J,0|G,U&(I|q)|I&q|0,R&(z|F)|z&F|0)),0|_(),S^g^Y|0,0|H),Y=0|_(),l[i+56>>2]=H,l[i+56+4>>2]=Y,g=0|wi(k,b,14),S=0|_(),G=0|wi(k,b,18),S=(0|_())^S,J=0|wi(k,b,41),S^=0|_(),N=0|l[r+((A=9|y)<<3)>>2],p=0|l[r+(A<<3)+4>>2],v=0|l[32784+(A<<3)>>2],P=0|l[32784+(A<<3)+4>>2],F=0|yt(0|(P=0|yt(0|(p=0|yt(0|(S=0|yt(0|(m=0|yt(k&(j^x)^x|0,b&(a^f)^f|0,0|Q,0|m)),0|_(),G^g^J|0,0|S)),0|_(),0|N,0|p)),0|_(),0|v,0|P)),0|(v=0|_()),0|q,0|F),q=0|_(),l[i+16>>2]=F,l[i+16+4>>2]=q,p=0|wi(H,Y,28),N=0|_(),S=0|wi(H,Y,34),N=(0|_())^N,J=0|wi(H,Y,39),N^=0|_(),N=0|yt(0|(v=0|yt(0|P,0|v,H&(U|I)|U&I|0,Y&(R|z)|R&z|0)),0|_(),S^p^J|0,0|N),J=0|_(),l[i+48>>2]=N,l[i+48+4>>2]=J,p=0|wi(F,q,14),S=0|_(),v=0|wi(F,q,18),S=(0|_())^S,P=0|wi(F,q,41),S^=0|_(),G=0|l[r+((g=10|y)<<3)>>2],m=0|l[r+(g<<3)+4>>2],Q=0|l[32784+(g<<3)>>2],w=0|l[32784+(g<<3)+4>>2],z=0|yt(0|(w=0|yt(0|(m=0|yt(0|(S=0|yt(0|(f=0|yt(F&(k^j)^j|0,q&(b^a)^a|0,0|x,0|f)),0|_(),v^p^P|0,0|S)),0|_(),0|G,0|m)),0|_(),0|Q,0|w)),0|(Q=0|_()),0|I,0|z),I=0|_(),l[i+8>>2]=z,l[i+8+4>>2]=I,m=0|wi(N,J,28),G=0|_(),S=0|wi(N,J,34),G=(0|_())^G,P=0|wi(N,J,39),G^=0|_(),G=0|yt(0|(Q=0|yt(0|w,0|Q,N&(H|U)|H&U|0,J&(Y|R)|Y&R|0)),0|_(),S^m^P|0,0|G),P=0|_(),l[i+40>>2]=G,l[i+40+4>>2]=P,m=0|wi(z,I,14),S=0|_(),Q=0|wi(z,I,18),S=(0|_())^S,w=0|wi(z,I,41),S^=0|_(),v=0|l[r+((p=11|y)<<3)>>2],f=0|l[r+(p<<3)+4>>2],x=0|l[32784+(p<<3)>>2],B=0|l[32784+(p<<3)+4>>2],R=0|yt(0|(B=0|yt(0|(f=0|yt(0|(S=0|yt(0|(a=0|yt(z&(F^k)^k|0,I&(q^b)^b|0,0|j,0|a)),0|_(),Q^m^w|0,0|S)),0|_(),0|v,0|f)),0|_(),0|x,0|B)),0|(x=0|_()),0|U,0|R),U=0|_(),l[i>>2]=R,l[i+4>>2]=U,f=0|wi(G,P,28),v=0|_(),S=0|wi(G,P,34),v=(0|_())^v,w=0|wi(G,P,39),v^=0|_(),v=0|yt(0|(x=0|yt(0|B,0|x,G&(N|H)|N&H|0,P&(J|Y)|J&Y|0)),0|_(),S^f^w|0,0|v),w=0|_(),l[i+32>>2]=v,l[i+32+4>>2]=w,f=0|wi(R,U,14),S=0|_(),x=0|wi(R,U,18),S=(0|_())^S,B=0|wi(R,U,41),S^=0|_(),Q=0|l[r+((m=12|y)<<3)>>2],a=0|l[r+(m<<3)+4>>2],j=0|l[32784+(m<<3)>>2],C=0|l[32784+(m<<3)+4>>2],Y=0|yt(0|(C=0|yt(0|(a=0|yt(0|(S=0|yt(0|(b=0|yt(R&(z^F)^F|0,U&(I^q)^q|0,0|k,0|b)),0|_(),x^f^B|0,0|S)),0|_(),0|Q,0|a)),0|_(),0|j,0|C)),0|(j=0|_()),0|H,0|Y),H=0|_(),l[i+56>>2]=Y,l[i+56+4>>2]=H,a=0|wi(v,w,28),Q=0|_(),S=0|wi(v,w,34),Q=(0|_())^Q,B=0|wi(v,w,39),Q^=0|_(),Q=0|yt(0|(j=0|yt(0|C,0|j,v&(G|N)|G&N|0,w&(P|J)|P&J|0)),0|_(),S^a^B|0,0|Q),B=0|_(),l[i+24>>2]=Q,l[i+24+4>>2]=B,a=0|wi(Y,H,14),S=0|_(),j=0|wi(Y,H,18),S=(0|_())^S,C=0|wi(Y,H,41),S^=0|_(),x=0|l[r+((f=13|y)<<3)>>2],b=0|l[r+(f<<3)+4>>2],k=0|l[32784+(f<<3)>>2],E=0|l[32784+(f<<3)+4>>2],J=0|yt(0|(E=0|yt(0|(b=0|yt(0|(S=0|yt(0|(q=0|yt(Y&(R^z)^z|0,H&(U^I)^I|0,0|F,0|q)),0|_(),j^a^C|0,0|S)),0|_(),0|x,0|b)),0|_(),0|k,0|E)),0|(k=0|_()),0|N,0|J),N=0|_(),l[i+48>>2]=J,l[i+48+4>>2]=N,b=0|wi(Q,B,28),x=0|_(),S=0|wi(Q,B,34),x=(0|_())^x,C=0|wi(Q,B,39),x^=0|_(),x=0|yt(0|(k=0|yt(0|E,0|k,Q&(v|G)|v&G|0,B&(w|P)|w&P|0)),0|_(),S^b^C|0,0|x),C=0|_(),l[i+16>>2]=x,l[i+16+4>>2]=C,b=0|wi(J,N,14),S=0|_(),k=0|wi(J,N,18),S=(0|_())^S,E=0|wi(J,N,41),S^=0|_(),j=0|l[r+((a=14|y)<<3)>>2],q=0|l[r+(a<<3)+4>>2],F=0|l[32784+(a<<3)>>2],M=0|l[32784+(a<<3)+4>>2],P=0|yt(0|(M=0|yt(0|(q=0|yt(0|(S=0|yt(0|(I=0|yt(J&(Y^R)^R|0,N&(H^U)^U|0,0|z,0|I)),0|_(),k^b^E|0,0|S)),0|_(),0|j,0|q)),0|_(),0|F,0|M)),0|(F=0|_()),0|G,0|P),G=0|_(),l[i+40>>2]=P,l[i+40+4>>2]=G,q=0|wi(x,C,28),j=0|_(),S=0|wi(x,C,34),j=(0|_())^j,E=0|wi(x,C,39),j^=0|_(),j=0|yt(0|(F=0|yt(0|M,0|F,x&(Q|v)|Q&v|0,C&(B|w)|B&w|0)),0|_(),S^q^E|0,0|j),E=0|_(),l[i+8>>2]=j,l[i+8+4>>2]=E,q=0|wi(P,G,14),S=0|_(),F=0|wi(P,G,18),S=(0|_())^S,M=0|wi(P,G,41),S^=0|_(),k=0|l[r+((b=15|y)<<3)>>2],I=0|l[r+(b<<3)+4>>2],z=0|l[32784+(b<<3)>>2],D=0|l[32784+(b<<3)+4>>2],w=0|yt(0|(D=0|yt(0|(I=0|yt(0|(S=0|yt(0|(U=0|yt(P&(J^Y)^Y|0,G&(N^H)^H|0,0|R,0|U)),0|_(),F^q^M|0,0|S)),0|_(),0|k,0|I)),0|_(),0|z,0|D)),0|(z=0|_()),0|v,0|w),v=0|_(),l[i+32>>2]=w,l[i+32+4>>2]=v,v=0|wi(j,E,28),w=0|_(),I=0|wi(j,E,34),w=(0|_())^w,k=0|wi(j,E,39),w^=0|_(),w=0|yt(0|(B=0|yt(0|D,0|z,j&(x|Q)|x&Q|0,E&(C|B)|C&B|0)),0|_(),I^v^k|0,0|w),k=0|_(),l[i>>2]=w,l[i+4>>2]=k,64==(0|y))break;R=0|wi(G=0|l[r+(a<<3)>>2],J=0|l[r+(a<<3)+4>>2],19),H=0|_(),j=0|wi(G,J,61),B=0|_(),B=0|yt((v=0|Oi(0|G,0|J,6))^R^j|0,0|(B=(0|_())^H^B),0|(H=0|l[r+(A<<3)>>2]),0|(x=0|l[r+(A<<3)+4>>2])),j=0|_(),q=0|wi(R=0|l[r+(t<<3)>>2],v=0|l[r+(t<<3)+4>>2],1),z=0|_(),I=0|wi(R,v,8),U=0|_(),F=0|Oi(0|R,0|v,7),U=(0|_())^z^U,U=0|yt(0|(z=0|yt(0|B,0|j,0|l[(z=r+(y<<3)|0)>>2],0|l[z+4>>2])),0|_(),F^q^I|0,0|U),I=0|_(),l[(q=r+((y=y+16|0)<<3)|0)>>2]=U,l[q+4>>2]=I,z=0|wi(q=0|l[r+(b<<3)>>2],F=0|l[r+(b<<3)+4>>2],19),j=0|_(),B=0|wi(q,F,61),Y=0|_(),P=0|Oi(0|q,0|F,6),Y=(0|_())^j^Y,j=0|l[r+(t+9<<3)>>2],D=0|l[r+(t+9<<3)+4>>2],w=0|wi(C=0|l[r+(t+1<<3)>>2],E=0|l[r+(t+1<<3)+4>>2],1),Q=0|_(),N=0|wi(C,E,8),k=0|_(),M=0|Oi(0|C,0|E,7),k=(0|_())^Q^k,k=0|yt(0|(Y=0|yt(0|(v=0|yt(0|j,0|D,0|R,0|v)),0|_(),P^z^B|0,0|Y)),0|_(),M^w^N|0,0|k),N=0|_(),l[r+(t+16<<3)>>2]=k,l[r+(t+16<<3)+4>>2]=N,w=0|wi(U,I,19),M=0|_(),Y=0|wi(U,I,61),B=0|_(),B=0|yt((I=0|Oi(0|U,0|I,6))^w^Y|0,0|(B=(0|_())^M^B),0|(M=0|l[r+(p<<3)>>2]),0|(U=0|l[r+(p<<3)+4>>2])),Y=0|_(),z=0|wi(w=0|l[r+(o<<3)>>2],I=0|l[r+(o<<3)+4>>2],1),P=0|_(),v=0|wi(w,I,8),R=0|_(),D=0|Oi(0|w,0|I,7),R=(0|_())^P^R,R=0|yt(0|(E=0|yt(0|B,0|Y,0|C,0|E)),0|_(),D^z^v|0,0|R),v=0|_(),l[r+(n+16<<3)>>2]=R,l[r+(n+16<<3)+4>>2]=v,z=0|wi(k,N,19),D=0|_(),E=0|wi(k,N,61),C=0|_(),N=0|Oi(0|k,0|N,6),C=(0|_())^D^C,D=0|l[r+(o+9<<3)>>2],k=0|l[r+(o+9<<3)+4>>2],P=0|wi(Y=0|l[r+(o+1<<3)>>2],B=0|l[r+(o+1<<3)+4>>2],1),t=0|_(),j=0|wi(Y,B,8),Q=0|_(),S=0|Oi(0|Y,0|B,7),Q=(0|_())^t^Q,Q=0|yt(0|(C=0|yt(0|(I=0|yt(0|D,0|k,0|w,0|I)),0|_(),N^z^E|0,0|C)),0|_(),S^P^j|0,0|Q),j=0|_(),l[r+(o+16<<3)>>2]=Q,l[r+(o+16<<3)+4>>2]=j,P=0|wi(R,v,19),S=0|_(),C=0|wi(R,v,61),E=0|_(),E=0|yt((v=0|Oi(0|R,0|v,6))^P^C|0,0|(E=(0|_())^S^E),0|(S=0|l[r+(f<<3)>>2]),0|(R=0|l[r+(f<<3)+4>>2])),C=0|_(),z=0|wi(P=0|l[r+(c<<3)>>2],v=0|l[r+(c<<3)+4>>2],1),o=0|_(),N=0|wi(P,v,8),I=0|_(),w=0|Oi(0|P,0|v,7),I=(0|_())^o^I,I=0|yt(0|(B=0|yt(0|E,0|C,0|Y,0|B)),0|_(),w^z^N|0,0|I),N=0|_(),l[r+(s+16<<3)>>2]=I,l[r+(s+16<<3)+4>>2]=N,z=0|wi(Q,j,19),s=0|_(),w=0|wi(Q,j,61),B=0|_(),j=0|Oi(0|Q,0|j,6),B=(0|_())^s^B,s=0|l[r+(c+9<<3)>>2],Q=0|l[r+(c+9<<3)+4>>2],E=0|wi(Y=0|l[r+(c+1<<3)>>2],C=0|l[r+(c+1<<3)+4>>2],1),o=0|_(),k=0|wi(Y,C,8),D=0|_(),t=0|Oi(0|Y,0|C,7),D=(0|_())^o^D,D=0|yt(0|(B=0|yt(0|(v=0|yt(0|s,0|Q,0|P,0|v)),0|_(),j^z^w|0,0|B)),0|_(),t^E^k|0,0|D),k=0|_(),l[r+(c+16<<3)>>2]=D,l[r+(c+16<<3)+4>>2]=k,E=0|wi(I,N,19),t=0|_(),B=0|wi(I,N,61),w=0|_(),w=0|yt((N=0|Oi(0|I,0|N,6))^E^B|0,(0|_())^t^w|0,0|q,0|F),t=0|_(),N=0|wi(B=0|l[r+(d<<3)>>2],E=0|l[r+(d<<3)+4>>2],1),c=0|_(),I=0|wi(B,E,8),z=0|_(),j=0|Oi(0|B,0|E,7),z=(0|_())^c^z,z=0|yt(0|(C=0|yt(0|w,0|t,0|Y,0|C)),0|_(),j^N^I|0,0|z),I=0|_(),l[r+(u+16<<3)>>2]=z,l[r+(u+16<<3)+4>>2]=I,N=0|wi(D,k,19),u=0|_(),j=0|wi(D,k,61),C=0|_(),k=0|Oi(0|D,0|k,6),C=(0|_())^u^C,u=0|l[r+(d+9<<3)>>2],D=0|l[r+(d+9<<3)+4>>2],w=0|wi(Y=0|l[r+(d+1<<3)>>2],t=0|l[r+(d+1<<3)+4>>2],1),c=0|_(),v=0|wi(Y,t,8),P=0|_(),Q=0|Oi(0|Y,0|t,7),P=(0|_())^c^P,P=0|yt(0|(C=0|yt(0|(E=0|yt(0|u,0|D,0|B,0|E)),0|_(),k^N^j|0,0|C)),0|_(),Q^w^v|0,0|P),v=0|_(),l[r+(d+16<<3)>>2]=P,l[r+(d+16<<3)+4>>2]=v,w=0|wi(z,I,19),Q=0|_(),C=0|wi(z,I,61),j=0|_(),j=0|yt((I=0|Oi(0|z,0|I,6))^w^C|0,0|(j=(0|_())^Q^j),0|l[r+(h+9<<3)>>2],0|l[r+(h+9<<3)+4>>2]),C=0|_(),w=0|wi(H,x,1),I=0|_(),Q=0|wi(H,x,8),z=0|_(),N=0|Oi(0|H,0|x,7),z=I^(0|_())^z,z=0|yt(0|(t=0|yt(0|j,0|C,0|Y,0|t)),0|_(),w^N^Q|0,0|z),Q=0|_(),l[r+(h+16<<3)>>2]=z,l[r+(h+16<<3)+4>>2]=Q,N=0|wi(P,v,19),w=0|_(),t=0|wi(P,v,61),Y=0|_(),v=0|Oi(0|P,0|v,6),Y=(0|_())^w^Y,w=0|l[r+(A+9<<3)>>2],P=0|l[r+(A+9<<3)+4>>2],I=0|wi(C=0|l[r+(A+1<<3)>>2],j=0|l[r+(A+1<<3)+4>>2],1),k=0|_(),E=0|wi(C,j,8),B=0|_(),D=0|Oi(0|C,0|j,7),B=(0|_())^k^B,B=0|yt(0|(Y=0|yt(0|(x=0|yt(0|w,0|P,0|H,0|x)),0|_(),v^N^t|0,0|Y)),0|_(),D^I^E|0,0|B),E=0|_(),l[r+(A+16<<3)>>2]=B,l[r+(A+16<<3)+4>>2]=E,I=0|wi(z,Q,19),D=0|_(),Y=0|wi(z,Q,61),t=0|_(),t=0|yt((Q=0|Oi(0|z,0|Q,6))^I^Y|0,0|(t=(0|_())^D^t),0|l[r+(g+9<<3)>>2],0|l[r+(g+9<<3)+4>>2]),Y=0|_(),I=0|wi(M,U,1),Q=0|_(),D=0|wi(M,U,8),z=0|_(),N=0|Oi(0|M,0|U,7),z=Q^(0|_())^z,z=0|yt(0|(j=0|yt(0|t,0|Y,0|C,0|j)),0|_(),I^N^D|0,0|z),D=0|_(),l[r+(g+16<<3)>>2]=z,l[r+(g+16<<3)+4>>2]=D,N=0|wi(B,E,19),I=0|_(),j=0|wi(B,E,61),C=0|_(),E=0|Oi(0|B,0|E,6),C=(0|_())^I^C,I=0|l[r+(p+9<<3)>>2],B=0|l[r+(p+9<<3)+4>>2],Q=0|wi(Y=0|l[r+(p+1<<3)>>2],t=0|l[r+(p+1<<3)+4>>2],1),v=0|_(),x=0|wi(Y,t,8),H=0|_(),P=0|Oi(0|Y,0|t,7),H=(0|_())^v^H,H=0|yt(0|(C=0|yt(0|(U=0|yt(0|I,0|B,0|M,0|U)),0|_(),E^N^j|0,0|C)),0|_(),P^Q^x|0,0|H),x=0|_(),l[r+(p+16<<3)>>2]=H,l[r+(p+16<<3)+4>>2]=x,Q=0|wi(z,D,19),P=0|_(),C=0|wi(z,D,61),j=0|_(),j=0|yt((D=0|Oi(0|z,0|D,6))^Q^C|0,0|(j=(0|_())^P^j),0|l[r+(m+9<<3)>>2],0|l[r+(m+9<<3)+4>>2]),C=0|_(),Q=0|wi(S,R,1),D=0|_(),P=0|wi(S,R,8),z=0|_(),N=0|Oi(0|S,0|R,7),z=D^(0|_())^z,z=0|yt(0|(t=0|yt(0|j,0|C,0|Y,0|t)),0|_(),Q^N^P|0,0|z),P=0|_(),l[r+(m+16<<3)>>2]=z,l[r+(m+16<<3)+4>>2]=P,N=0|wi(H,x,19),Q=0|_(),t=0|wi(H,x,61),Y=0|_(),x=0|Oi(0|H,0|x,6),Y=(0|_())^Q^Y,Q=0|l[r+(f+9<<3)>>2],H=0|l[r+(f+9<<3)+4>>2],D=0|wi(C=0|l[r+(f+1<<3)>>2],j=0|l[r+(f+1<<3)+4>>2],1),E=0|_(),U=0|wi(C,j,8),M=0|_(),j=0|Oi(0|C,0|j,7),M=(0|_())^E^M,M=0|yt(0|(Y=0|yt(0|(R=0|yt(0|Q,0|H,0|S,0|R)),0|_(),x^N^t|0,0|Y)),0|_(),j^D^U|0,0|M),U=0|_(),l[r+(f+16<<3)>>2]=M,l[r+(f+16<<3)+4>>2]=U,D=0|wi(z,P,19),j=0|_(),Y=0|wi(z,P,61),t=0|_(),P=0|Oi(0|z,0|P,6),t=(0|_())^j^t,j=0|l[r+(a+9<<3)>>2],z=0|l[r+(a+9<<3)+4>>2],N=0|wi(q,F,1),x=0|_(),R=0|wi(q,F,8),S=0|_(),H=0|Oi(0|q,0|F,7),S=x^(0|_())^S,S=0|yt(0|(t=0|yt(0|(J=0|yt(0|j,0|z,0|G,0|J)),0|_(),P^D^Y|0,0|t)),0|_(),N^H^R|0,0|S),R=0|_(),l[r+(a+16<<3)>>2]=S,l[r+(a+16<<3)+4>>2]=R,R=0|wi(M,U,19),S=0|_(),H=0|wi(M,U,61),N=0|_(),U=0|Oi(0|M,0|U,6),N=(0|_())^S^N,S=0|l[r+(b+9<<3)>>2],M=0|l[r+(b+9<<3)+4>>2],Y=0|wi(a=0|l[r+(b+1<<3)>>2],t=0|l[r+(b+1<<3)+4>>2],1),D=0|_(),P=0|wi(a,t,8),J=0|_(),G=0|Oi(0|a,0|t,7),J=(0|_())^D^J,J=0|yt(0|(N=0|yt(0|(F=0|yt(0|S,0|M,0|q,0|F)),0|_(),U^R^H|0,0|N)),0|_(),G^Y^P|0,0|J),P=0|_(),l[r+(b+16<<3)>>2]=J,l[r+(b+16<<3)+4>>2]=P}while(y>>>0<80);a=0;do{Y=i+(a<<3)|0,Y=0|yt(0|l[(P=e+(a<<3)|0)>>2],0|l[P+4>>2],0|l[Y>>2],0|l[Y+4>>2]),J=0|_(),l[P>>2]=Y,l[P+4>>2]=J,a=a+1|0}while(8!=(0|a))}function F(e){e|=0;var a,r=0,i=0,t=0,n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,y=0,b=0,k=0,w=0,v=0,I=0;a=f,p=f=f+63&-64,f=f+16|0;do{if(e>>>0<245){if(g=e>>>0<11?16:e+11&-8,(h=0|l[8842])>>>(g>>>3)&3|0)return r=0|l[8+(e=35408+((h>>>(g>>>3)&1^1)+(g>>>3)<<1<<2)|0)>>2],(0|(i=0|l[r+8>>2]))==(0|e)?l[8842]=h&~(1<<(h>>>(g>>>3)&1^1)+(g>>>3)):(l[i+12>>2]=e,l[e+8>>2]=i),I=(h>>>(g>>>3)&1^1)+(g>>>3)<<3,l[r+4>>2]=3|I,l[r+I+4>>2]=1|l[r+I+4>>2],f=a,0|r+8;if(g>>>0>(A=0|l[8844])>>>0){if(h>>>(g>>>3)|0)return n=0|l[35408+((t=((n=(((e=h>>>(g>>>3)<<(g>>>3)&(2<<(g>>>3)|0-(2<<(g>>>3))))&0-e)-1|0)>>>(((e&0-e)-1|0)>>>12&16))>>>5&8|((e&0-e)-1|0)>>>12&16|n>>>(n>>>5&8)>>>2&4|(t=n>>>(n>>>5&8)>>>(n>>>(n>>>5&8)>>>2&4))>>>1&2|t>>>(t>>>1&2)>>>1&1)+(t>>>(t>>>1&2)>>>(t>>>(t>>>1&2)>>>1&1))|0)<<1<<2)+8>>2],(0|(e=0|l[n+8>>2]))==(35408+(t<<1<<2)|0)?(l[8842]=h&~(1<>2]=35408+(t<<1<<2),l[35408+(t<<1<<2)+8>>2]=e,e=h),l[n+4>>2]=3|g,l[n+g+4>>2]=(t<<3)-g|1,l[n+(t<<3)>>2]=(t<<3)-g,0|A&&(i=0|l[8847],e&1<<(A>>>3)?(e=0|l[35408+(A>>>3<<1<<2)+8>>2],r=35408+(A>>>3<<1<<2)+8|0):(l[8842]=e|1<<(A>>>3),e=35408+(A>>>3<<1<<2)|0,r=35408+(A>>>3<<1<<2)+8|0),l[r>>2]=i,l[e+12>>2]=i,l[i+8>>2]=e,l[i+12>>2]=35408+(A>>>3<<1<<2)),l[8844]=(t<<3)-g,l[8847]=n+g,f=a,0|n+8;if(s=0|l[8843]){for(r=d=0|l[35672+(((r=((s&0-s)-1|0)>>>(((s&0-s)-1|0)>>>12&16))>>>5&8|((s&0-s)-1|0)>>>12&16|r>>>(r>>>5&8)>>>2&4|(d=r>>>(r>>>5&8)>>>(r>>>(r>>>5&8)>>>2&4))>>>1&2|d>>>(d>>>1&2)>>>1&1)+(d>>>(d>>>1&2)>>>(d>>>(d>>>1&2)>>>1&1))<<2)>>2],u=d,d=(-8&l[d+4>>2])-g|0;(e=0|l[r+16>>2])||(e=0|l[r+20>>2]);)r=e,u=(n=(c=(-8&l[e+4>>2])-g|0)>>>0>>0)?e:u,d=n?c:d;if((c=u+g|0)>>>0>u>>>0){n=0|l[u+24>>2],e=0|l[u+12>>2];do{if((0|e)==(0|u)){if(!(e=0|l[(r=u+20|0)>>2])&&!(e=0|l[(r=u+16|0)>>2])){r=0;break}for(;;)if(i=0|l[(t=e+20|0)>>2])e=i,r=t;else{if(!(i=0|l[(t=e+16|0)>>2]))break;e=i,r=t}l[r>>2]=0,r=e}else r=0|l[u+8>>2],l[r+12>>2]=e,l[e+8>>2]=r,r=e}while(0);do{if(0|n){if(e=0|l[u+28>>2],(0|u)==(0|l[35672+(e<<2)>>2])){if(l[35672+(e<<2)>>2]=r,!r){l[8843]=s&~(1<>2])==(0|u)?n+16|0:n+20|0)>>2]=r,!r)break;l[r+24>>2]=n,0|(e=0|l[u+16>>2])&&(l[r+16>>2]=e,l[e+24>>2]=r),0|(e=0|l[u+20>>2])&&(l[r+20>>2]=e,l[e+24>>2]=r)}}while(0);return d>>>0<16?(I=d+g|0,l[u+4>>2]=3|I,l[(I=u+I+4|0)>>2]=1|l[I>>2]):(l[u+4>>2]=3|g,l[c+4>>2]=1|d,l[c+d>>2]=d,0|A&&(i=0|l[8847],1<<(A>>>3)&h?(e=0|l[35408+(A>>>3<<1<<2)+8>>2],r=35408+(A>>>3<<1<<2)+8|0):(l[8842]=1<<(A>>>3)|h,e=35408+(A>>>3<<1<<2)|0,r=35408+(A>>>3<<1<<2)+8|0),l[r>>2]=i,l[e+12>>2]=i,l[i+8>>2]=e,l[i+12>>2]=35408+(A>>>3<<1<<2)),l[8844]=d,l[8847]=c),f=a,0|u+8}}}}else if(e>>>0<=4294967231){if(g=e+11&-8,t=0|l[8843]){u=(e+11|0)>>>8?g>>>0>16777215?31:g>>>(7+(u=14-((520192+(u=(e+11|0)>>>8<<((1048320+((e+11|0)>>>8)|0)>>>16&8))|0)>>>16&4|(1048320+((e+11|0)>>>8)|0)>>>16&8|(245760+(u<<((u+520192|0)>>>16&4))|0)>>>16&2)+(u<<((u+520192|0)>>>16&4)<<((245760+(u<<((u+520192|0)>>>16&4))|0)>>>16&2)>>>15)|0)|0)&1|u<<1:0,e=0|l[35672+(u<<2)>>2];e:do{if(e)for(s=0,r=0-g|0,c=g<<(31==(0|u)?0:25-(u>>>1)|0),i=0;;){if((n=(-8&l[e+4>>2])-g|0)>>>0>>0){if(!n){n=e,r=0,i=e,k=65;break e}s=e,r=n}if(i=0==(0|(k=0|l[e+20>>2]))|(0|k)==(0|(e=0|l[e+16+(c>>>31<<2)>>2]))?i:k,!e){e=s,k=61;break}c<<=1}else i=0,e=0,r=0-g|0,k=61}while(0);if(61==(0|k)){if(0==(0|i)&0==(0|e)){if(!(((e=2<>>(h>>>12&16)>>>5&8|h>>>12&16|(A=h>>>(h>>>12&16)>>>(h>>>(h>>>12&16)>>>5&8))>>>2&4|A>>>(A>>>2&4)>>>1&2|(i=A>>>(A>>>2&4)>>>(A>>>(A>>>2&4)>>>1&2))>>>1&1)+(i>>>(i>>>1&1))<<2)>>2]}i?(n=e,k=65):(c=e,s=r)}if(65==(0|k))for(;;){if(r=(e=(A=(-8&l[i+4>>2])-g|0)>>>0>>0)?A:r,n=e?i:n,(e=0|l[i+16>>2])||(e=0|l[i+20>>2]),!e){c=n,s=r;break}i=e}if(0!=(0|c)&&s>>>0<((0|l[8844])-g|0)>>>0&&(d=c+g|0)>>>0>c>>>0){o=0|l[c+24>>2],e=0|l[c+12>>2];do{if((0|e)==(0|c)){if(!(e=0|l[(r=c+20|0)>>2])&&!(e=0|l[(r=c+16|0)>>2])){e=0;break}for(;;)if(i=0|l[(n=e+20|0)>>2])e=i,r=n;else{if(!(i=0|l[(n=e+16|0)>>2]))break;e=i,r=n}l[r>>2]=0}else I=0|l[c+8>>2],l[I+12>>2]=e,l[e+8>>2]=I}while(0);do{if(o){if(r=0|l[c+28>>2],(0|c)==(0|l[35672+(r<<2)>>2])){if(l[35672+(r<<2)>>2]=e,!e){l[8843]=t&~(1<>2])==(0|c)?o+16|0:o+20|0)>>2]=e,!e)break;l[e+24>>2]=o,0|(r=0|l[c+16>>2])&&(l[e+16>>2]=r,l[r+24>>2]=e),(r=0|l[c+20>>2])&&(l[e+20>>2]=r,l[r+24>>2]=e)}}while(0);e:do{if(s>>>0<16)I=s+g|0,l[c+4>>2]=3|I,l[(I=c+I+4|0)>>2]=1|l[I>>2];else{if(l[c+4>>2]=3|g,l[d+4>>2]=1|s,l[d+s>>2]=s,i=s>>>3,s>>>0<256){(e=0|l[8842])&1<>2],r=35408+(i<<1<<2)+8|0):(l[8842]=e|1<>2]=d,l[e+12>>2]=d,l[d+8>>2]=e,l[d+12>>2]=35408+(i<<1<<2);break}if(e=35672+((i=(e=s>>>8)?s>>>0>16777215?31:s>>>(7+(i=14-((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4|(e+1048320|0)>>>16&8|(245760+(i=e<<((e+1048320|0)>>>16&8)<<((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4))|0)>>>16&2)+(i<<((i+245760|0)>>>16&2)>>>15)|0)|0)&1|i<<1:0)<<2)|0,l[d+28>>2]=i,l[d+16+4>>2]=0,l[d+16>>2]=0,!(t&(r=1<>2]=d,l[d+24>>2]=e,l[d+12>>2]=d,l[d+8>>2]=d;break}e=0|l[e>>2];a:do{if((-8&l[e+4>>2]|0)!=(0|s)){for(t=s<<(31==(0|i)?0:25-(i>>>1)|0);r=0|l[(i=e+16+(t>>>31<<2)|0)>>2];){if((-8&l[r+4>>2]|0)==(0|s)){e=r;break a}t<<=1,e=r}l[i>>2]=d,l[d+24>>2]=e,l[d+12>>2]=d,l[d+8>>2]=d;break e}}while(0);I=0|l[(v=e+8|0)>>2],l[I+12>>2]=d,l[v>>2]=d,l[d+8>>2]=I,l[d+12>>2]=e,l[d+24>>2]=0}}while(0);return f=a,0|c+8}}}else g=-1}while(0);if((i=0|l[8844])>>>0>=g>>>0)return e=i-g|0,r=0|l[8847],e>>>0>15?(I=r+g|0,l[8847]=I,l[8844]=e,l[I+4>>2]=1|e,l[r+i>>2]=e,l[r+4>>2]=3|g):(l[8844]=0,l[8847]=0,l[r+4>>2]=3|i,l[r+i+4>>2]=1|l[r+i+4>>2]),f=a,0|r+8;if((n=0|l[8845])>>>0>g>>>0)return w=n-g|0,l[8845]=w,v=(I=0|l[8848])+g|0,l[8848]=v,l[v+4>>2]=1|w,l[I+4>>2]=3|g,f=a,0|I+8;if(0|l[8960]?e=0|l[8962]:(l[8962]=4096,l[8961]=4096,l[8963]=-1,l[8964]=-1,l[8965]=0,l[8953]=0,l[8960]=-16&p^1431655768,e=4096),s=g+48|0,((d=e+(c=g+47|0)|0)&(u=0-e|0))>>>0<=g>>>0)return f=a,0;if(0|(e=0|l[8952])&&(((p=0|l[8950])+(d&u)|0)>>>0<=p>>>0||(p+(d&u)|0)>>>0>e>>>0))return f=a,0;e:do{if(4&l[8953])e=0,k=143;else{i=0|l[8848];a:do{if(i){for(r=35816;!((e=0|l[r>>2])>>>0<=i>>>0&&(e+(0|l[(m=r+4|0)>>2])|0)>>>0>i>>>0);){if(!(e=0|l[r+8>>2])){k=128;break a}r=e}if((d-n&u)>>>0<2147483647)if((0|(e=0|Ir(d-n&u|0)))==((0|l[r>>2])+(0|l[m>>2])|0)){if(-1!=(0|e)){s=d-n&u,o=e,k=145;break e}e=d-n&u}else t=e,i=d-n&u,k=136;else e=0}else k=128}while(0);do{if(128==(0|k))if(-1!=(0|(r=0|Ir(0)))&&(b=(0==((b=0|l[8961])-1&r|0)?0:(b+-1+r&0-b)-r|0)+(d&u)|0,y=0|l[8950],b>>>0>g>>>0&b>>>0<2147483647)){if(0|(m=0|l[8952])&&(b+y|0)>>>0<=y>>>0|(b+y|0)>>>0>m>>>0){e=0;break}if((0|(e=0|Ir(0|b)))==(0|r)){s=b,o=r,k=145;break e}t=e,i=b,k=136}else e=0}while(0);do{if(136==(0|k)){if(r=0-i|0,!(s>>>0>i>>>0&i>>>0<2147483647&-1!=(0|t))){if(-1==(0|t)){e=0;break}s=i,o=t,k=145;break e}if((e=c-i+(e=0|l[8962])&0-e)>>>0>=2147483647){s=i,o=t,k=145;break e}if(-1==(0|Ir(0|e))){Ir(0|r),e=0;break}s=e+i|0,o=t,k=145;break e}}while(0);l[8953]=4|l[8953],k=143}}while(0);if(143==(0|k)&&(d&u)>>>0<2147483647&&!(-1==(0|(o=0|Ir(d&u|0)))|1^(v=((w=0|Ir(0))-o|0)>>>0>(g+40|0)>>>0)|o>>>0>>0&-1!=(0|o)&-1!=(0|w)^1)&&(s=v?w-o|0:e,k=145),145==(0|k)){e=(0|l[8950])+s|0,l[8950]=e,e>>>0>(0|l[8951])>>>0&&(l[8951]=e),u=0|l[8848];e:do{if(u){for(e=35816;;){if((0|o)==((r=0|l[e>>2])+(t=0|l[(i=e+4|0)>>2])|0)){k=154;break}if(!(n=0|l[e+8>>2]))break;e=n}if(154==(0|k)&&0==(8&l[e+12>>2]|0)&&o>>>0>u>>>0&r>>>0<=u>>>0){l[i>>2]=t+s,I=(0|l[8845])+s|0,v=0==(u+8&7|0)?0:0-(u+8)&7,l[8848]=u+v,l[8845]=I-v,l[u+v+4>>2]=I-v|1,l[u+I+4>>2]=40,l[8849]=l[8964];break}for(o>>>0<(0|l[8846])>>>0&&(l[8846]=o),i=o+s|0,e=35816;;){if((0|l[e>>2])==(0|i)){k=162;break}if(!(r=0|l[e+8>>2]))break;e=r}if(162==(0|k)&&0==(8&l[e+12>>2]|0)){l[e>>2]=o,l[(h=e+4|0)>>2]=(0|l[h>>2])+s,d=(h=o+(0==(7&(h=o+8|0)|0)?0:0-h&7)|0)+g|0,c=(e=i+(0==(i+8&7|0)?0:0-(i+8)&7)|0)-h-g|0,l[h+4>>2]=3|g;a:do{if((0|u)==(0|e))I=(0|l[8845])+c|0,l[8845]=I,l[8848]=d,l[d+4>>2]=1|I;else{if((0|l[8847])==(0|e)){I=(0|l[8844])+c|0,l[8844]=I,l[8847]=d,l[d+4>>2]=1|I,l[d+I>>2]=I;break}if(1==(3&(s=0|l[e+4>>2])|0)){r:do{if(s>>>0<256){if(r=0|l[e+8>>2],(0|(i=0|l[e+12>>2]))==(0|r)){l[8842]=l[8842]&~(1<<(s>>>3));break}l[r+12>>2]=i,l[i+8>>2]=r;break}o=0|l[e+24>>2],r=0|l[e+12>>2];do{if((0|r)==(0|e)){if(r=0|l[e+16+4>>2])i=e+16+4|0;else{if(!(r=0|l[e+16>>2])){r=0;break}i=e+16|0}for(;;)if(t=0|l[(n=r+20|0)>>2])r=t,i=n;else{if(!(t=0|l[(n=r+16|0)>>2]))break;r=t,i=n}l[i>>2]=0}else I=0|l[e+8>>2],l[I+12>>2]=r,l[r+8>>2]=I}while(0);if(!o)break;i=0|l[e+28>>2];do{if((0|l[35672+(i<<2)>>2])==(0|e)){if(l[35672+(i<<2)>>2]=r,0|r)break;l[8843]=l[8843]&~(1<>2])==(0|e)?o+16|0:o+20|0)>>2]=r,!r)break r}while(0);if(l[r+24>>2]=o,0|(i=0|l[e+16>>2])&&(l[r+16>>2]=i,l[i+24>>2]=r),!(i=0|l[e+16+4>>2]))break;l[r+20>>2]=i,l[i+24>>2]=r}while(0);e=e+(-8&s)|0,n=(-8&s)+c|0}else n=c;if(l[(i=e+4|0)>>2]=-2&l[i>>2],l[d+4>>2]=1|n,l[d+n>>2]=n,i=n>>>3,n>>>0<256){(e=0|l[8842])&1<>2],r=35408+(i<<1<<2)+8|0):(l[8842]=e|1<>2]=d,l[e+12>>2]=d,l[d+8>>2]=e,l[d+12>>2]=35408+(i<<1<<2);break}e=n>>>8;do{if(e){if(n>>>0>16777215){t=31;break}t=n>>>(7+(t=14-((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4|(e+1048320|0)>>>16&8|(245760+(t=e<<((e+1048320|0)>>>16&8)<<((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4))|0)>>>16&2)+(t<<((t+245760|0)>>>16&2)>>>15)|0)|0)&1|t<<1}else t=0}while(0);if(e=35672+(t<<2)|0,l[d+28>>2]=t,l[d+16+4>>2]=0,l[d+16>>2]=0,!((r=0|l[8843])&(i=1<>2]=d,l[d+24>>2]=e,l[d+12>>2]=d,l[d+8>>2]=d;break}e=0|l[e>>2];r:do{if((-8&l[e+4>>2]|0)!=(0|n)){for(t=n<<(31==(0|t)?0:25-(t>>>1)|0);r=0|l[(i=e+16+(t>>>31<<2)|0)>>2];){if((-8&l[r+4>>2]|0)==(0|n)){e=r;break r}t<<=1,e=r}l[i>>2]=d,l[d+24>>2]=e,l[d+12>>2]=d,l[d+8>>2]=d;break a}}while(0);I=0|l[(v=e+8|0)>>2],l[I+12>>2]=d,l[v>>2]=d,l[d+8>>2]=I,l[d+12>>2]=e,l[d+24>>2]=0}}while(0);return f=a,0|h+8}for(e=35816;!((r=0|l[e>>2])>>>0<=u>>>0&&(I=r+(0|l[e+4>>2])|0)>>>0>u>>>0);)e=0|l[e+8>>2];n=(n=I+-47+(0==(I+-47+8&7|0)?0:0-(I+-47+8)&7)|0)>>>0<(u+16|0)>>>0?u:n,e=s+-40|0,v=o+(w=0==(7&(w=o+8|0)|0)?0:0-w&7)|0,l[8848]=v,l[8845]=e-w,l[v+4>>2]=e-w|1,l[o+e+4>>2]=40,l[8849]=l[8964],l[n+4>>2]=27,l[n+8>>2]=l[8954],l[n+8+4>>2]=l[8955],l[n+8+8>>2]=l[8956],l[n+8+12>>2]=l[8957],l[8954]=o,l[8955]=s,l[8957]=0,l[8956]=n+8,e=n+24|0;do{v=e,l[(e=e+4|0)>>2]=7}while((v+8|0)>>>0>>0);if((0|n)!=(0|u)){if(l[n+4>>2]=-2&l[n+4>>2],l[u+4>>2]=n-u|1,l[n>>2]=n-u,(n-u|0)>>>0<256){i=35408+((n-u|0)>>>3<<1<<2)|0,(e=0|l[8842])&1<<((n-u|0)>>>3)?(e=0|l[i+8>>2],r=i+8|0):(l[8842]=e|1<<((n-u|0)>>>3),e=i,r=i+8|0),l[r>>2]=u,l[e+12>>2]=u,l[u+8>>2]=e,l[u+12>>2]=i;break}if(e=35672+((t=(n-u|0)>>>8?(n-u|0)>>>0>16777215?31:(n-u|0)>>>(7+(t=14-((520192+(t=(n-u|0)>>>8<<((1048320+((n-u|0)>>>8)|0)>>>16&8))|0)>>>16&4|(1048320+((n-u|0)>>>8)|0)>>>16&8|(245760+(t<<((t+520192|0)>>>16&4))|0)>>>16&2)+(t<<((t+520192|0)>>>16&4)<<((245760+(t<<((t+520192|0)>>>16&4))|0)>>>16&2)>>>15)|0)|0)&1|t<<1:0)<<2)|0,l[u+28>>2]=t,l[u+20>>2]=0,l[u+16>>2]=0,!((r=0|l[8843])&(i=1<>2]=u,l[u+24>>2]=e,l[u+12>>2]=u,l[u+8>>2]=u;break}e=0|l[e>>2];a:do{if((-8&l[e+4>>2]|0)!=(n-u|0)){for(t=n-u<<(31==(0|t)?0:25-(t>>>1)|0);r=0|l[(i=e+16+(t>>>31<<2)|0)>>2];){if((-8&l[r+4>>2]|0)==(n-u|0)){e=r;break a}t<<=1,e=r}l[i>>2]=u,l[u+24>>2]=e,l[u+12>>2]=u,l[u+8>>2]=u;break e}}while(0);I=0|l[(v=e+8|0)>>2],l[I+12>>2]=u,l[v>>2]=u,l[u+8>>2]=I,l[u+12>>2]=e,l[u+24>>2]=0}}else 0==(0|(I=0|l[8846]))|o>>>0>>0&&(l[8846]=o),l[8954]=o,l[8955]=s,l[8957]=0,l[8851]=l[8960],l[8850]=-1,l[8855]=35408,l[8854]=35408,l[8857]=35416,l[8856]=35416,l[8859]=35424,l[8858]=35424,l[8861]=35432,l[8860]=35432,l[8863]=35440,l[8862]=35440,l[8865]=35448,l[8864]=35448,l[8867]=35456,l[8866]=35456,l[8869]=35464,l[8868]=35464,l[8871]=35472,l[8870]=35472,l[8873]=35480,l[8872]=35480,l[8875]=35488,l[8874]=35488,l[8877]=35496,l[8876]=35496,l[8879]=35504,l[8878]=35504,l[8881]=35512,l[8880]=35512,l[8883]=35520,l[8882]=35520,l[8885]=35528,l[8884]=35528,l[8887]=35536,l[8886]=35536,l[8889]=35544,l[8888]=35544,l[8891]=35552,l[8890]=35552,l[8893]=35560,l[8892]=35560,l[8895]=35568,l[8894]=35568,l[8897]=35576,l[8896]=35576,l[8899]=35584,l[8898]=35584,l[8901]=35592,l[8900]=35592,l[8903]=35600,l[8902]=35600,l[8905]=35608,l[8904]=35608,l[8907]=35616,l[8906]=35616,l[8909]=35624,l[8908]=35624,l[8911]=35632,l[8910]=35632,l[8913]=35640,l[8912]=35640,l[8915]=35648,l[8914]=35648,l[8917]=35656,l[8916]=35656,I=s+-40|0,v=o+(w=0==(7&(w=o+8|0)|0)?0:0-w&7)|0,l[8848]=v,l[8845]=I-w,l[v+4>>2]=I-w|1,l[o+I+4>>2]=40,l[8849]=l[8964]}while(0);if((e=0|l[8845])>>>0>g>>>0)return w=e-g|0,l[8845]=w,v=(I=0|l[8848])+g|0,l[8848]=v,l[v+4>>2]=1|w,l[I+4>>2]=3|g,f=a,0|I+8}return l[8966]=12,f=a,0}function U(e){var a,r,i,n,o=0,s=0,l=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0,v=0,I=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0,N=0,G=0,Y=0,J=0,P=0,L=0,T=0,K=0,$=0,O=0,X=0,V=0,W=0,Z=0,ee=0,ae=0,re=0,ie=0,te=0,ne=0,oe=0,se=0,le=0,ce=0,ue=0,de=0,he=0,Ae=0,ge=0,pe=0,me=0,fe=0;L=0|Qi(0|t[(e|=0)>>0],0|t[e+1>>0],0|t[e+2>>0]),_(),$=0|Oi(0|($=0|Er(e+2|0)),0|_(),5),_(),F=0|Oi(0|(F=0|Qi(0|t[e+5>>0],0|t[e+6>>0],0|t[e+7>>0])),0|_(),2),_(),m=0|Oi(0|(m=0|Er(e+7|0)),0|_(),7),_(),T=0|Oi(0|(T=0|Er(e+10|0)),0|_(),4),_(),W=0|Oi(0|(W=0|Qi(0|t[e+13>>0],0|t[e+14>>0],0|t[e+15>>0])),0|_(),1),_(),C=0|Oi(0|(C=0|Er(e+15|0)),0|_(),6),_(),ce=0|Oi(0|(ce=0|Qi(0|t[e+18>>0],0|t[e+19>>0],0|t[e+20>>0])),0|_(),3),_(),Ae=0|Qi(0|t[e+21>>0],0|t[e+22>>0],0|t[e+23>>0]),_(),oe=0|Oi(0|(oe=0|Er(e+23|0)),0|_(),5),_(),he=0|Oi(0|(he=0|Qi(0|t[e+26>>0],0|t[e+27>>0],0|t[e+28>>0])),0|_(),2),_(),re=0|Oi(0|(re=0|Er(e+28|0)),0|_(),7),_(),me=0|Oi(0|(me=0|Er(e+31|0)),0|_(),4),_(),j=0|Oi(0|(j=0|Qi(0|t[e+34>>0],0|t[e+35>>0],0|t[e+36>>0])),0|_(),1),_(),J=0|Oi(0|(J=0|Er(e+36|0)),0|_(),6),_(),w=0|Oi(0|(w=0|Qi(0|t[e+39>>0],0|t[e+40>>0],0|t[e+41>>0])),0|_(),3),_(),l=0|Qi(0|t[e+42>>0],0|t[e+43>>0],0|t[e+44>>0]),_(),G=0|Oi(0|(G=0|Er(e+44|0)),0|_(),5),_(),te=0|Oi(0|(te=0|Qi(0|t[e+47>>0],0|t[e+48>>0],0|t[e+49>>0])),0|_(),2),_(),fe=0|Oi(0|(fe=0|Er(e+49|0)),0|_(),7),_(),g=0|Oi(0|(g=0|Er(e+52|0)),0|_(),4),_(),Q=0|Oi(0|(Q=0|Qi(0|t[e+55>>0],0|t[e+56>>0],0|t[e+57>>0])),0|_(),1),_(),S=0|Oi(0|(S=0|Er(e+57|0)),0|_(),6),_(),h=0|ji(0|(K=0|Oi(0|(K=0|Er(e+60|0)),0|_(),3)),0|(c=0|_()),666643,0),k=0|_(),de=0|ji(0|K,0|c,470296,0),v=0|_(),z=0|ji(0|K,0|c,654183,0),u=0|_(),E=0|ji(0|K,0|c,-997805,-1),A=0|_(),w=0|yt(0|(o=0|ji(0|K,0|c,136657,0)),0|_(),2097151&w|0,0),o=0|_(),l=0|yt(0|(c=0|ji(0|K,0|c,-683901,-1)),0|_(),2097151&l|0,0),c=0|_(),K=0|ji(2097151&S|0,0,666643,0),Y=0|_(),B=0|ji(2097151&S|0,0,470296,0),ae=0|_(),M=0|ji(2097151&S|0,0,654183,0),s=0|_(),X=0|ji(2097151&S|0,0,-997805,-1),O=0|_(),P=0|ji(2097151&S|0,0,136657,0),b=0|_(),S=0|yt(0|w,0|o,0|(S=0|ji(2097151&S|0,0,-683901,-1)),0|_()),o=0|_(),w=0|ji(2097151&Q|0,0,666643,0),V=0|_(),x=0|ji(2097151&Q|0,0,470296,0),ie=0|_(),N=0|ji(2097151&Q|0,0,654183,0),d=0|_(),ge=0|ji(2097151&Q|0,0,-997805,-1),ue=0|_(),ee=0|ji(2097151&Q|0,0,136657,0),q=0|_(),b=0|yt(0|(A=0|yt(0|(J=0|yt(0|(Q=0|ji(2097151&Q|0,0,-683901,-1)),0|_(),2097151&J|0,0)),0|_(),0|E,0|A)),0|_(),0|P,0|b),P=0|_(),A=0|ji(2097151&g|0,0,666643,0),E=0|_(),J=0|ji(2097151&g|0,0,470296,0),Q=0|_(),f=0|ji(2097151&g|0,0,654183,0),Z=0|_(),U=0|ji(2097151&g|0,0,-997805,-1),R=0|_(),n=0|ji(2097151&g|0,0,136657,0),pe=0|_(),g=0|ji(2097151&g|0,0,-683901,-1),p=0|_(),y=0|ji(2097151&fe|0,0,666643,0),D=0|_(),se=0|ji(2097151&fe|0,0,470296,0),le=0|_(),r=0|ji(2097151&fe|0,0,654183,0),ne=0|_(),i=0|ji(2097151&fe|0,0,-997805,-1),H=0|_(),a=0|ji(2097151&fe|0,0,136657,0),I=0|_(),s=0|yt(0|(v=0|yt(0|(ue=0|yt(0|(pe=0|yt(0|(me=0|yt(0|(fe=0|ji(2097151&fe|0,0,-683901,-1)),0|_(),2097151&me|0,0)),0|_(),0|n,0|pe)),0|_(),0|ge,0|ue)),0|_(),0|de,0|v)),0|_(),0|M,0|s),M=0|_(),C=0|yt(0|(v=0|ji(2097151&te|0,0,666643,0)),0|_(),2097151&C|0,0),v=0|_(),de=0|ji(2097151&te|0,0,470296,0),ue=0|_(),E=0|yt(0|(le=0|yt(0|(Ae=0|yt(0|(ge=0|ji(2097151&te|0,0,654183,0)),0|_(),2097151&Ae|0,0)),0|_(),0|se,0|le)),0|_(),0|A,0|E),A=0|_(),le=0|ji(2097151&te|0,0,-997805,-1),se=0|_(),Y=0|yt(0|(ie=0|yt(0|(Z=0|yt(0|(H=0|yt(0|(he=0|yt(0|(Ae=0|ji(2097151&te|0,0,136657,0)),0|_(),2097151&he|0,0)),0|_(),0|i,0|H)),0|_(),0|f,0|Z)),0|_(),0|x,0|ie)),0|_(),0|K,0|Y),K=0|_(),te=0|ji(2097151&te|0,0,-683901,-1),ie=0|_(),f=0|Oi(0|(x=0|yt(0|C,0|v,1048576,0)),0|(Z=0|_()),21),H=0|_(),H=0|yt(0|(D=0|yt(0|(ce=0|yt(0|de,0|ue,2097151&ce|0,0)),0|_(),0|y,0|D)),0|_(),0|f,0|H),f=0|_(),Z=0|mt(0|C,0|v,-2097152&x|0,2047&Z|0),x=0|_(),D=0|Oi(0|(v=0|yt(0|E,0|A,1048576,0)),0|(C=0|_()),21),y=0|_(),y=0|yt(0|(V=0|yt(0|(Q=0|yt(0|(ne=0|yt(0|(oe=0|yt(0|le,0|se,2097151&oe|0,0)),0|_(),0|r,0|ne)),0|_(),0|J,0|Q)),0|_(),0|w,0|V)),0|_(),0|D,0|y),D=0|_(),Q=0|Mi(0|(V=0|yt(0|Y,0|K,1048576,0)),0|(w=0|_()),21),J=0|_(),J=0|yt(0|(ae=0|yt(0|(k=0|yt(0|(d=0|yt(0|(R=0|yt(0|(I=0|yt(0|(re=0|yt(0|te,0|ie,2097151&re|0,0)),0|_(),0|a,0|I)),0|_(),0|U,0|R)),0|_(),0|N,0|d)),0|_(),0|h,0|k)),0|_(),0|B,0|ae)),0|_(),0|Q,0|J),Q=0|_(),k=0|Mi(0|(ae=0|yt(0|s,0|M,1048576,0)),0|(B=0|_()),21),h=0|_(),h=0|yt(0|(O=0|yt(0|(u=0|yt(0|(q=0|yt(0|(j=0|yt(0|g,0|p,2097151&j|0,0)),0|_(),0|ee,0|q)),0|_(),0|z,0|u)),0|_(),0|X,0|O)),0|_(),0|k,0|h),k=0|_(),B=0|mt(0|s,0|M,-2097152&ae|0,0|B),ae=0|_(),O=0|yt(0|S,0|o,0|(O=0|Mi(0|(M=0|yt(0|b,0|P,1048576,0)),0|(s=0|_()),21)),0|_()),o=0|_(),s=0|mt(0|b,0|P,-2097152&M|0,0|s),M=0|_(),G=0|yt(0|(S=0|Mi(0|(P=0|yt(0|l,0|c,1048576,0)),0|(b=0|_()),21)),0|_(),2097151&G|0,0),S=0|_(),b=0|mt(0|l,0|c,-2097152&P|0,0|b),P=0|_(),X=0|Oi(0|(c=0|yt(0|H,0|f,1048576,0)),0|(l=0|_()),21),u=0|_(),l=0|mt(0|H,0|f,-2097152&c|0,0|l),c=0|_(),z=0|Mi(0|(f=0|yt(0|y,0|D,1048576,0)),0|(H=0|_()),21),q=0|_(),ae=0|yt(0|(p=0|Mi(0|(ee=0|yt(0|J,0|Q,1048576,0)),0|(j=0|_()),21)),0|_(),0|B,0|ae),B=0|_(),j=0|mt(0|J,0|Q,-2097152&ee|0,0|j),ee=0|_(),M=0|yt(0|(p=0|Mi(0|(Q=0|yt(0|h,0|k,1048576,0)),0|(J=0|_()),21)),0|_(),0|s,0|M),s=0|_(),J=0|mt(0|h,0|k,-2097152&Q|0,0|J),Q=0|_(),P=0|yt(0|(p=0|Mi(0|(k=0|yt(0|O,0|o,1048576,0)),0|(h=0|_()),21)),0|_(),0|b,0|P),b=0|_(),h=0|mt(0|O,0|o,-2097152&k|0,0|h),k=0|_(),W=0|yt(0|(o=0|ji(0|G,0|S,666643,0)),0|_(),2097151&W|0,0),o=0|_(),O=0|yt(0|Z,0|x,0|(O=0|ji(0|G,0|S,470296,0)),0|_()),x=0|_(),Z=0|yt(0|l,0|c,0|(Z=0|ji(0|G,0|S,654183,0)),0|_()),c=0|_(),l=0|ji(0|G,0|S,-997805,-1),p=0|_(),g=0|ji(0|G,0|S,136657,0),d=0|_(),w=0|mt(0|(q=0|yt(0|(K=0|yt(0|(S=0|ji(0|G,0|S,-683901,-1)),0|_(),0|Y,0|K)),0|_(),0|z,0|q)),0|_(),-2097152&V|0,0|w),V=0|_(),T=0|yt(0|(q=0|ji(0|P,0|b,666643,0)),0|_(),2097151&T|0,0),q=0|_(),z=0|yt(0|W,0|o,0|(z=0|ji(0|P,0|b,470296,0)),0|_()),o=0|_(),W=0|yt(0|O,0|x,0|(W=0|ji(0|P,0|b,654183,0)),0|_()),x=0|_(),O=0|yt(0|Z,0|c,0|(O=0|ji(0|P,0|b,-997805,-1)),0|_()),c=0|_(),Z=0|ji(0|P,0|b,136657,0),K=0|_(),b=0|ji(0|P,0|b,-683901,-1),P=0|_(),m=0|yt(0|(Y=0|ji(0|h,0|k,666643,0)),0|_(),2097151&m|0,0),Y=0|_(),S=0|yt(0|T,0|q,0|(S=0|ji(0|h,0|k,470296,0)),0|_()),q=0|_(),T=0|yt(0|z,0|o,0|(T=0|ji(0|h,0|k,654183,0)),0|_()),o=0|_(),z=0|yt(0|W,0|x,0|(z=0|ji(0|h,0|k,-997805,-1)),0|_()),x=0|_(),W=0|yt(0|O,0|c,0|(W=0|ji(0|h,0|k,136657,0)),0|_()),c=0|_(),k=0|ji(0|h,0|k,-683901,-1),h=0|_(),h=0|yt(0|(K=0|yt(0|(p=0|yt(0|(C=0|mt(0|(A=0|yt(0|X,0|u,0|E,0|A)),0|_(),-2097152&v|0,0|C)),0|_(),0|l,0|p)),0|_(),0|Z,0|K)),0|_(),0|k,0|h),k=0|_(),F=0|yt(0|(K=0|ji(0|M,0|s,666643,0)),0|_(),2097151&F|0,0),K=0|_(),Z=0|yt(0|m,0|Y,0|(Z=0|ji(0|M,0|s,470296,0)),0|_()),Y=0|_(),m=0|yt(0|S,0|q,0|(m=0|ji(0|M,0|s,654183,0)),0|_()),q=0|_(),S=0|yt(0|T,0|o,0|(S=0|ji(0|M,0|s,-997805,-1)),0|_()),o=0|_(),T=0|yt(0|z,0|x,0|(T=0|ji(0|M,0|s,136657,0)),0|_()),x=0|_(),s=0|yt(0|W,0|c,0|(s=0|ji(0|M,0|s,-683901,-1)),0|_()),c=0|_(),$=0|yt(0|(W=0|ji(0|J,0|Q,666643,0)),0|_(),2097151&$|0,0),W=0|_(),M=0|yt(0|F,0|K,0|(M=0|ji(0|J,0|Q,470296,0)),0|_()),K=0|_(),F=0|yt(0|Z,0|Y,0|(F=0|ji(0|J,0|Q,654183,0)),0|_()),Y=0|_(),Z=0|yt(0|m,0|q,0|(Z=0|ji(0|J,0|Q,-997805,-1)),0|_()),q=0|_(),m=0|yt(0|S,0|o,0|(m=0|ji(0|J,0|Q,136657,0)),0|_()),o=0|_(),Q=0|yt(0|T,0|x,0|(Q=0|ji(0|J,0|Q,-683901,-1)),0|_()),x=0|_(),L=0|yt(0|(T=0|ji(0|ae,0|B,666643,0)),0|_(),2097151&L|0,0),T=0|_(),J=0|yt(0|$,0|W,0|(J=0|ji(0|ae,0|B,470296,0)),0|_()),W=0|_(),$=0|yt(0|M,0|K,0|($=0|ji(0|ae,0|B,654183,0)),0|_()),K=0|_(),M=0|yt(0|F,0|Y,0|(M=0|ji(0|ae,0|B,-997805,-1)),0|_()),Y=0|_(),F=0|yt(0|Z,0|q,0|(F=0|ji(0|ae,0|B,136657,0)),0|_()),q=0|_(),B=0|yt(0|m,0|o,0|(B=0|ji(0|ae,0|B,-683901,-1)),0|_()),o=0|_(),Z=0|yt(0|J,0|W,0|(Z=0|Mi(0|(m=0|yt(0|L,0|T,1048576,0)),0|(ae=0|_()),21)),0|_()),W=0|_(),ae=0|mt(0|L,0|T,-2097152&m|0,0|ae),m=0|_(),J=0|yt(0|M,0|Y,0|(J=0|Mi(0|(T=0|yt(0|$,0|K,1048576,0)),0|(L=0|_()),21)),0|_()),Y=0|_(),z=0|yt(0|B,0|o,0|(z=0|Mi(0|(M=0|yt(0|F,0|q,1048576,0)),0|(S=0|_()),21)),0|_()),o=0|_(),l=0|yt(0|s,0|c,0|(l=0|Mi(0|(B=0|yt(0|Q,0|x,1048576,0)),0|(p=0|_()),21)),0|_()),c=0|_(),p=0|mt(0|Q,0|x,-2097152&B|0,0|p),B=0|_(),s=0|Mi(0|(x=0|yt(0|h,0|k,1048576,0)),0|(Q=0|_()),21),C=0|_(),C=0|yt(0|(P=0|yt(0|(H=0|mt(0|(D=0|yt(0|g,0|d,0|y,0|D)),0|_(),-2097152&f|0,0|H)),0|_(),0|b,0|P)),0|_(),0|s,0|C),s=0|_(),Q=0|mt(0|h,0|k,-2097152&x|0,0|Q),x=0|_(),ee=0|yt(0|(P=0|Mi(0|(k=0|yt(0|w,0|V,1048576,0)),0|(h=0|_()),21)),0|_(),0|j,0|ee),j=0|_(),h=0|mt(0|w,0|V,-2097152&k|0,0|h),k=0|_(),P=0|Mi(0|(V=0|yt(0|Z,0|W,1048576,0)),0|(w=0|_()),21),b=0|_(),D=0|Mi(0|(H=0|yt(0|J,0|Y,1048576,0)),0|(f=0|_()),21),y=0|_(),v=0|yt(0|p,0|B,0|(v=0|Mi(0|(d=0|yt(0|z,0|o,1048576,0)),0|(g=0|_()),21)),0|_()),B=0|_(),E=0|yt(0|Q,0|x,0|(E=0|Mi(0|(p=0|yt(0|l,0|c,1048576,0)),0|(A=0|_()),21)),0|_()),x=0|_(),A=0|mt(0|l,0|c,-2097152&p|0,0|A),p=0|_(),Q=0|yt(0|h,0|k,0|(Q=0|Mi(0|(c=0|yt(0|C,0|s,1048576,0)),0|(l=0|_()),21)),0|_()),k=0|_(),l=0|mt(0|C,0|s,-2097152&c|0,0|l),c=0|_(),h=0|Mi(0|(s=0|yt(0|ee,0|j,1048576,0)),0|(C=0|_()),21),u=0|_(),C=0|mt(0|ee,0|j,-2097152&s|0,0|C),s=0|_(),j=0|yt(0|ae,0|m,0|(j=0|ji(0|h,0|u,666643,0)),0|_()),m=0|_(),ae=0|ji(0|h,0|u,470296,0),ee=0|_(),X=0|ji(0|h,0|u,654183,0),O=0|_(),G=0|ji(0|h,0|u,-997805,-1),N=0|_(),R=0|ji(0|h,0|u,136657,0),U=0|_(),u=0|ji(0|h,0|u,-683901,-1),h=0|_(),m=0|Mi(0|j,0|m,21),I=0|_(),m=0|Mi(0|(I=0|yt(0|(w=0|mt(0|(W=0|yt(0|ae,0|ee,0|Z,0|W)),0|_(),-2097152&V|0,0|w)),0|_(),0|m,0|I)),0|_(),21),w=0|_(),m=0|Mi(0|(w=0|yt(0|(b=0|yt(0|(L=0|mt(0|(K=0|yt(0|X,0|O,0|$,0|K)),0|_(),-2097152&T|0,0|L)),0|_(),0|P,0|b)),0|_(),0|m,0|w)),0|_(),21),b=0|_(),m=0|Mi(0|(b=0|yt(0|(f=0|mt(0|(N=0|yt(0|J,0|Y,0|G,0|N)),0|_(),-2097152&H|0,0|f)),0|_(),0|m,0|b)),0|_(),21),f=0|_(),m=0|Mi(0|(f=0|yt(0|(y=0|yt(0|(S=0|mt(0|(q=0|yt(0|R,0|U,0|F,0|q)),0|_(),-2097152&M|0,0|S)),0|_(),0|D,0|y)),0|_(),0|m,0|f)),0|_(),21),y=0|_(),j=0|yt(0|(Q=0|ji(0|(C=0|Mi(0|(s=0|yt(0|(k=0|Mi(0|(l=0|yt(0|Q,0|k,0|(l=0|Mi(0|(c=0|yt(0|(x=0|Mi(0|(A=0|yt(0|E,0|x,0|(A=0|Mi(0|(p=0|yt(0|(B=0|Mi(0|(m=0|yt(0|v,0|B,0|(m=0|Mi(0|(y=0|yt(0|(g=0|mt(0|(h=0|yt(0|z,0|o,0|u,0|h)),0|_(),-2097152&d|0,0|g)),0|_(),0|m,0|y)),0|_(),21)),0|_())),0|_(),21)),0|_(),0|A,0|p)),0|_(),21)),0|_())),0|_(),21)),0|_(),0|l,0|c)),0|_(),21)),0|_())),0|_(),21)),0|_(),0|C,0|s)),0|_(),21)),0|(k=0|_()),666643,0)),0|_(),2097151&j|0,0),Q=0|_(),I=0|yt(0|(x=0|ji(0|C,0|k,470296,0)),0|_(),2097151&I|0,0),x=0|_(),w=0|yt(0|(E=0|ji(0|C,0|k,654183,0)),0|_(),2097151&w|0,0),E=0|_(),b=0|yt(0|(B=0|ji(0|C,0|k,-997805,-1)),0|_(),2097151&b|0,0),B=0|_(),f=0|yt(0|(v=0|ji(0|C,0|k,136657,0)),0|_(),2097151&f|0,0),v=0|_(),s=0|yt(0|(o=0|Mi(0|(l=0|yt(0|(u=0|Mi(0|(c=0|yt(0|(h=0|Mi(0|(A=0|yt(0|(d=0|Mi(0|(p=0|yt(0|(g=0|Mi(0|(m=0|yt(0|(y=0|Mi(0|(f=0|yt(0|(y=0|yt(0|(k=0|ji(0|C,0|k,-683901,-1)),0|_(),2097151&y|0,0)),0|(k=0|_()),0|(f=0|Mi(0|(b=0|yt(0|f,0|v,0|(b=0|Mi(0|(w=0|yt(0|b,0|B,0|(w=0|Mi(0|(I=0|yt(0|w,0|E,0|(I=0|Mi(0|(C=0|yt(0|I,0|x,0|(C=0|Mi(0|j,0|Q,21)),0|_())),0|(x=0|_()),21)),0|_())),0|(E=0|_()),21)),0|_())),0|(B=0|_()),21)),0|_())),0|(v=0|_()),21)),0|_())),0|(k=0|_()),21)),0|_(),2097151&m|0,0)),0|(y=0|_()),21)),0|_(),2097151&p|0,0)),0|(g=0|_()),21)),0|_(),2097151&A|0,0)),0|(d=0|_()),21)),0|_(),2097151&c|0,0)),0|(h=0|_()),21)),0|_(),2097151&l|0,0)),0|(u=0|_()),21)),0|_(),2097151&s|0,0),o=0|_(),t[e>>0]=j,z=0|Oi(0|j,0|Q,8),_(),t[e+1>>0]=z,Q=0|Oi(0|j,0|Q,16),_(),j=0|Li(2097151&C|0,0,5),_(),t[e+2>>0]=j|31&Q,Q=0|Oi(0|C,0|x,3),_(),t[e+3>>0]=Q,x=0|Oi(0|C,0|x,11),_(),t[e+4>>0]=x,C=0|Oi(2097151&C|0,0,19),x=0|_(),Q=0|Li(2097151&I|0,0,2),_(),t[e+5>>0]=Q|C,E=0|Oi(0|I,0|E,6),_(),t[e+6>>0]=E,I=0|Oi(2097151&I|0,0,14),E=0|_(),C=0|Li(2097151&w|0,0,7),_(),t[e+7>>0]=C|I,I=0|Oi(0|w,0|B,1),_(),t[e+8>>0]=I,B=0|Oi(0|w,0|B,9),_(),t[e+9>>0]=B,w=0|Oi(2097151&w|0,0,17),B=0|_(),I=0|Li(2097151&b|0,0,4),_(),t[e+10>>0]=I|w,w=0|Oi(0|b,0|v,4),_(),t[e+11>>0]=w,v=0|Oi(0|b,0|v,12),_(),t[e+12>>0]=v,b=0|Oi(2097151&b|0,0,20),v=0|_(),w=0|Li(2097151&f|0,0,1),_(),t[e+13>>0]=w|b,k=0|Oi(0|f,0|k,7),_(),t[e+14>>0]=k,f=0|Oi(2097151&f|0,0,15),k=0|_(),b=0|Li(2097151&m|0,0,6),_(),t[e+15>>0]=b|f,f=0|Oi(0|m,0|y,2),_(),t[e+16>>0]=f,y=0|Oi(0|m,0|y,10),_(),t[e+17>>0]=y,m=0|Oi(2097151&m|0,0,18),y=0|_(),f=0|Li(0|p,0|g,3),_(),t[e+18>>0]=f|m,m=0|Oi(0|p,0|g,5),_(),t[e+19>>0]=m,g=0|Oi(0|p,0|g,13),_(),t[e+20>>0]=g,t[e+21>>0]=A,g=0|Oi(0|A,0|d,8),_(),t[e+22>>0]=g,d=0|Oi(0|A,0|d,16),_(),A=0|Li(2097151&c|0,0,5),_(),t[e+23>>0]=A|31&d,d=0|Oi(0|c,0|h,3),_(),t[e+24>>0]=d,h=0|Oi(0|c,0|h,11),_(),t[e+25>>0]=h,c=0|Oi(2097151&c|0,0,19),h=0|_(),d=0|Li(2097151&l|0,0,2),_(),t[e+26>>0]=d|c,u=0|Oi(0|l,0|u,6),_(),t[e+27>>0]=u,l=0|Oi(2097151&l|0,0,14),u=0|_(),c=0|Li(0|s,0|o,7),_(),t[e+28>>0]=c|l,l=0|Oi(0|s,0|o,1),_(),t[e+29>>0]=l,l=0|Oi(0|s,0|o,9),_(),t[e+30>>0]=l,o=0|Mi(0|s,0|o,17),_(),t[e+31>>0]=o}function R(e,a,r){e|=0,r|=0;var i,t,n,o,s,c,u,d,h,A,g,p,m,f,y,b,k,w,v,I,B,C,E,Q,x,j,z,D,S,M,q,F,U,R,H,N,G,Y,J,P,L,T,K,$,O,X,V,W,Z,ee,ae,re,ie,te,ne,oe,se,le,ce,ue,de,he,Ae,ge,pe,me,fe,ye,be,ke,we,ve,Ie,_e,Be,Ce,Ee,Qe,xe,je,ze,De,Se,Me,qe,Fe,Ue,Re,He,Ne=0,Ge=0,Ye=0,Je=0,Pe=0,Le=0,Te=0,Ke=0,$e=0,Oe=0,Xe=0,Ve=0,We=0,Ze=0,ea=0,aa=0,ra=0,ia=0,ta=0,na=0,oa=0,sa=0,la=0,ca=0,ua=0,da=0,ha=0,Aa=0,ga=0,pa=0,ma=0,fa=0,ya=0,ba=0,ka=0,wa=0,va=0,Ia=0,_a=0,Ba=0,Ca=0,Ea=0,Qa=0,xa=0,ja=0,za=0,Da=0,Sa=0,Ma=0,qa=0,Fa=0,Ua=0,Ra=0,Ha=0,Na=0,Ga=0,Ya=0,Ja=0,Pa=0,La=0,Ta=0,Ka=0,$a=0,Oa=0,Xa=0,Va=0,Wa=0,Za=0,er=0,ar=0,rr=0,ir=0,tr=0,nr=0,or=0,sr=0,lr=0,cr=0,ur=0,dr=0,hr=0,Ar=0,gr=0,pr=0,mr=0,fr=0,yr=0,br=0,kr=0,wr=0,vr=0,Ir=0,_r=0,Br=0,Cr=0,Er=0,Qr=0,xr=0,jr=0,zr=0,Dr=0,Sr=0,Mr=0,qr=0,Fr=0,Ur=0,Rr=0,Hr=0,Nr=0,Gr=0;ea=0|l[(a|=0)>>2],Ke=0|l[a+4>>2],Le=0|l[a+8>>2],We=0|l[a+12>>2],Da=0|l[a+16>>2],Ve=0|l[a+20>>2],or=0|l[a+24>>2],Ne=0|l[a+28>>2],va=0|l[a+32>>2],ha=0|l[a+36>>2],ca=0|l[r>>2],Gr=0|l[r+4>>2],Ir=0|l[r+8>>2],ir=0|l[r+12>>2],Ra=0|l[r+16>>2],Er=0|l[r+20>>2],cr=0|l[r+24>>2],Ja=0|l[r+28>>2],Ia=0|l[r+32>>2],He=0|l[r+36>>2],Ue=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),Nr=0|_(),xe=0|ji(0|Gr,((0|Gr)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),Qe=0|_(),re=0|ji(0|Ir,((0|Ir)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),tr=0|_(),U=0|ji(0|ir,((0|ir)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),Ha=0|_(),ve=0|ji(0|Ra,((0|Ra)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),xr=0|_(),le=0|ji(0|Er,((0|Er)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),dr=0|_(),J=0|ji(0|cr,((0|cr)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),La=0|_(),I=0|ji(0|Ja,((0|Ja)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),Ba=0|_(),A=0|ji(0|Ia,((0|Ia)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),Aa=0|_(),ea=0|ji(0|He,((0|He)<0)<<31>>31|0,0|ea,((0|ea)<0)<<31>>31|0),Ze=0|_(),_r=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|Ke,((0|Ke)<0)<<31>>31|0),Br=0|_(),ne=0|ji(0|Gr,((0|Gr)<0)<<31>>31|0,Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),te=0|_(),R=0|ji(0|Ir,((0|Ir)<0)<<31>>31|0,0|Ke,((0|Ke)<0)<<31>>31|0),Na=0|_(),Ie=0|ji(0|ir,((0|ir)<0)<<31>>31|0,Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),jr=0|_(),ce=0|ji(0|Ra,((0|Ra)<0)<<31>>31|0,0|Ke,((0|Ke)<0)<<31>>31|0),hr=0|_(),P=0|ji(0|Er,((0|Er)<0)<<31>>31|0,Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),Ta=0|_(),B=0|ji(0|cr,((0|cr)<0)<<31>>31|0,0|Ke,((0|Ke)<0)<<31>>31|0),Ca=0|_(),g=0|ji(0|Ja,((0|Ja)<0)<<31>>31|0,Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),ga=0|_(),i=0|ji(0|Ia,((0|Ia)<0)<<31>>31|0,0|Ke,((0|Ke)<0)<<31>>31|0),aa=0|_(),Ke=0|ji(19*He|0,0|(da=((19*He|0)<0)<<31>>31),Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),a=0|_(),ie=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|Le,((0|Le)<0)<<31>>31|0),nr=0|_(),G=0|ji(0|Gr,((0|Gr)<0)<<31>>31|0,0|Le,((0|Le)<0)<<31>>31|0),N=0|_(),_e=0|ji(0|Ir,((0|Ir)<0)<<31>>31|0,0|Le,((0|Le)<0)<<31>>31|0),zr=0|_(),ue=0|ji(0|ir,((0|ir)<0)<<31>>31|0,0|Le,((0|Le)<0)<<31>>31|0),Ar=0|_(),L=0|ji(0|Ra,((0|Ra)<0)<<31>>31|0,0|Le,((0|Le)<0)<<31>>31|0),Ka=0|_(),C=0|ji(0|Er,((0|Er)<0)<<31>>31|0,0|Le,((0|Le)<0)<<31>>31|0),Ea=0|_(),p=0|ji(0|cr,((0|cr)<0)<<31>>31|0,0|Le,((0|Le)<0)<<31>>31|0),pa=0|_(),t=0|ji(0|Ja,((0|Ja)<0)<<31>>31|0,0|Le,((0|Le)<0)<<31>>31|0),ra=0|_(),je=0|ji(19*Ia|0,0|(_a=((19*Ia|0)<0)<<31>>31),0|Le,((0|Le)<0)<<31>>31|0),Sr=0|_(),Le=0|ji(19*He|0,0|da,0|Le,((0|Le)<0)<<31>>31|0),Te=0|_(),H=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|We,((0|We)<0)<<31>>31|0),Ga=0|_(),Ee=0|ji(0|Gr,((0|Gr)<0)<<31>>31|0,We<<1|0,((We<<1|0)<0)<<31>>31|0),Ce=0|_(),de=0|ji(0|Ir,((0|Ir)<0)<<31>>31|0,0|We,((0|We)<0)<<31>>31|0),gr=0|_(),T=0|ji(0|ir,((0|ir)<0)<<31>>31|0,We<<1|0,((We<<1|0)<0)<<31>>31|0),$a=0|_(),E=0|ji(0|Ra,((0|Ra)<0)<<31>>31|0,0|We,((0|We)<0)<<31>>31|0),Qa=0|_(),m=0|ji(0|Er,((0|Er)<0)<<31>>31|0,We<<1|0,((We<<1|0)<0)<<31>>31|0),ma=0|_(),n=0|ji(0|cr,((0|cr)<0)<<31>>31|0,0|We,((0|We)<0)<<31>>31|0),ia=0|_(),ze=0|ji(19*Ja|0,0|(Pa=((19*Ja|0)<0)<<31>>31),We<<1|0,((We<<1|0)<0)<<31>>31|0),Mr=0|_(),pe=0|ji(19*Ia|0,0|_a,0|We,((0|We)<0)<<31>>31|0),mr=0|_(),We=0|ji(19*He|0,0|da,We<<1|0,((We<<1|0)<0)<<31>>31|0),Pe=0|_(),Be=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|Da,((0|Da)<0)<<31>>31|0),Dr=0|_(),ge=0|ji(0|Gr,((0|Gr)<0)<<31>>31|0,0|Da,((0|Da)<0)<<31>>31|0),Ae=0|_(),K=0|ji(0|Ir,((0|Ir)<0)<<31>>31|0,0|Da,((0|Da)<0)<<31>>31|0),Oa=0|_(),Q=0|ji(0|ir,((0|ir)<0)<<31>>31|0,0|Da,((0|Da)<0)<<31>>31|0),xa=0|_(),f=0|ji(0|Ra,((0|Ra)<0)<<31>>31|0,0|Da,((0|Da)<0)<<31>>31|0),fa=0|_(),o=0|ji(0|Er,((0|Er)<0)<<31>>31|0,0|Da,((0|Da)<0)<<31>>31|0),ta=0|_(),De=0|ji(19*cr|0,0|(ur=((19*cr|0)<0)<<31>>31),0|Da,((0|Da)<0)<<31>>31|0),qr=0|_(),me=0|ji(19*Ja|0,0|Pa,0|Da,((0|Da)<0)<<31>>31|0),fr=0|_(),V=0|ji(19*Ia|0,0|_a,0|Da,((0|Da)<0)<<31>>31|0),Va=0|_(),Da=0|ji(19*He|0,0|da,0|Da,((0|Da)<0)<<31>>31|0),Ye=0|_(),he=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|Ve,((0|Ve)<0)<<31>>31|0),pr=0|_(),X=0|ji(0|Gr,((0|Gr)<0)<<31>>31|0,Ve<<1|0,((Ve<<1|0)<0)<<31>>31|0),O=0|_(),x=0|ji(0|Ir,((0|Ir)<0)<<31>>31|0,0|Ve,((0|Ve)<0)<<31>>31|0),ja=0|_(),y=0|ji(0|ir,((0|ir)<0)<<31>>31|0,Ve<<1|0,((Ve<<1|0)<0)<<31>>31|0),ya=0|_(),s=0|ji(0|Ra,((0|Ra)<0)<<31>>31|0,0|Ve,((0|Ve)<0)<<31>>31|0),na=0|_(),Se=0|ji(19*Er|0,0|(Qr=((19*Er|0)<0)<<31>>31),Ve<<1|0,((Ve<<1|0)<0)<<31>>31|0),Fr=0|_(),fe=0|ji(19*cr|0,0|ur,0|Ve,((0|Ve)<0)<<31>>31|0),yr=0|_(),W=0|ji(19*Ja|0,0|Pa,Ve<<1|0,((Ve<<1|0)<0)<<31>>31|0),Wa=0|_(),S=0|ji(19*Ia|0,0|_a,0|Ve,((0|Ve)<0)<<31>>31|0),Sa=0|_(),Ve=0|ji(19*He|0,0|da,Ve<<1|0,((Ve<<1|0)<0)<<31>>31|0),Ge=0|_(),$=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|or,((0|or)<0)<<31>>31|0),Xa=0|_(),D=0|ji(0|Gr,((0|Gr)<0)<<31>>31|0,0|or,((0|or)<0)<<31>>31|0),z=0|_(),b=0|ji(0|Ir,((0|Ir)<0)<<31>>31|0,0|or,((0|or)<0)<<31>>31|0),ba=0|_(),c=0|ji(0|ir,((0|ir)<0)<<31>>31|0,0|or,((0|or)<0)<<31>>31|0),oa=0|_(),Me=0|ji(19*Ra|0,((19*Ra|0)<0)<<31>>31|0,0|or,((0|or)<0)<<31>>31|0),Ur=0|_(),ye=0|ji(19*Er|0,0|Qr,0|or,((0|or)<0)<<31>>31|0),br=0|_(),Z=0|ji(19*cr|0,0|ur,0|or,((0|or)<0)<<31>>31|0),Za=0|_(),M=0|ji(19*Ja|0,0|Pa,0|or,((0|or)<0)<<31>>31|0),Ma=0|_(),$e=0|ji(19*Ia|0,0|_a,0|or,((0|or)<0)<<31>>31|0),Oe=0|_(),or=0|ji(19*He|0,0|da,0|or,((0|or)<0)<<31>>31|0),Je=0|_(),j=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|Ne,((0|Ne)<0)<<31>>31|0),za=0|_(),v=0|ji(0|Gr,((0|Gr)<0)<<31>>31|0,Ne<<1|0,((Ne<<1|0)<0)<<31>>31|0),w=0|_(),u=0|ji(0|Ir,((0|Ir)<0)<<31>>31|0,0|Ne,((0|Ne)<0)<<31>>31|0),sa=0|_(),qe=0|ji(19*ir|0,((19*ir|0)<0)<<31>>31|0,Ne<<1|0,((Ne<<1|0)<0)<<31>>31|0),Rr=0|_(),be=0|ji(19*Ra|0,((19*Ra|0)<0)<<31>>31|0,0|Ne,((0|Ne)<0)<<31>>31|0),kr=0|_(),ee=0|ji(19*Er|0,0|Qr,Ne<<1|0,((Ne<<1|0)<0)<<31>>31|0),er=0|_(),q=0|ji(19*cr|0,0|ur,0|Ne,((0|Ne)<0)<<31>>31|0),qa=0|_(),ua=0|ji(19*Ja|0,0|Pa,Ne<<1|0,((Ne<<1|0)<0)<<31>>31|0),Xe=0|_(),oe=0|ji(19*Ia|0,0|_a,0|Ne,((0|Ne)<0)<<31>>31|0),sr=0|_(),r=0|ji(19*He|0,0|da,Ne<<1|0,((Ne<<1|0)<0)<<31>>31|0),Ne=0|_(),k=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|va,((0|va)<0)<<31>>31|0),ka=0|_(),h=0|ji(0|Gr,((0|Gr)<0)<<31>>31|0,0|va,((0|va)<0)<<31>>31|0),d=0|_(),Fe=0|ji(19*Ir|0,((19*Ir|0)<0)<<31>>31|0,0|va,((0|va)<0)<<31>>31|0),Hr=0|_(),ke=0|ji(19*ir|0,((19*ir|0)<0)<<31>>31|0,0|va,((0|va)<0)<<31>>31|0),wr=0|_(),ae=0|ji(19*Ra|0,((19*Ra|0)<0)<<31>>31|0,0|va,((0|va)<0)<<31>>31|0),ar=0|_(),F=0|ji(19*Er|0,0|Qr,0|va,((0|va)<0)<<31>>31|0),Fa=0|_(),we=0|ji(19*cr|0,0|ur,0|va,((0|va)<0)<<31>>31|0),Cr=0|_(),se=0|ji(19*Ja|0,0|Pa,0|va,((0|va)<0)<<31>>31|0),lr=0|_(),Y=0|ji(19*Ia|0,0|_a,0|va,((0|va)<0)<<31>>31|0),Ya=0|_(),va=0|ji(19*He|0,0|da,0|va,((0|va)<0)<<31>>31|0),wa=0|_(),ca=0|ji(0|ca,((0|ca)<0)<<31>>31|0,0|ha,((0|ha)<0)<<31>>31|0),la=0|_(),Gr=0|ji(19*Gr|0,((19*Gr|0)<0)<<31>>31|0,ha<<1|0,((ha<<1|0)<0)<<31>>31|0),Re=0|_(),Ir=0|ji(19*Ir|0,((19*Ir|0)<0)<<31>>31|0,0|ha,((0|ha)<0)<<31>>31|0),vr=0|_(),ir=0|ji(19*ir|0,((19*ir|0)<0)<<31>>31|0,ha<<1|0,((ha<<1|0)<0)<<31>>31|0),rr=0|_(),Ra=0|ji(19*Ra|0,((19*Ra|0)<0)<<31>>31|0,0|ha,((0|ha)<0)<<31>>31|0),Ua=0|_(),Qr=0|ji(19*Er|0,0|Qr,ha<<1|0,((ha<<1|0)<0)<<31>>31|0),Er=0|_(),ur=0|ji(19*cr|0,0|ur,0|ha,((0|ha)<0)<<31>>31|0),cr=0|_(),Pa=0|ji(19*Ja|0,0|Pa,ha<<1|0,((ha<<1|0)<0)<<31>>31|0),Ja=0|_(),_a=0|ji(19*Ia|0,0|_a,0|ha,((0|ha)<0)<<31>>31|0),Ia=0|_(),ha=0|ji(19*He|0,0|da,ha<<1|0,((ha<<1|0)<0)<<31>>31|0),da=0|_(),a=0|yt(0|(Sr=0|yt(0|(Mr=0|yt(0|(qr=0|yt(0|(Fr=0|yt(0|(Ur=0|yt(0|(Rr=0|yt(0|(Hr=0|yt(0|(Nr=0|yt(0|Gr,0|Re,0|Ue,0|Nr)),0|_(),0|Fe,0|Hr)),0|_(),0|qe,0|Rr)),0|_(),0|Me,0|Ur)),0|_(),0|Se,0|Fr)),0|_(),0|De,0|qr)),0|_(),0|ze,0|Mr)),0|_(),0|je,0|Sr)),0|_(),0|Ke,0|a),Ke=0|_(),Br=0|yt(0|xe,0|Qe,0|_r,0|Br),_r=0|_(),Ge=0|yt(0|(Oe=0|yt(0|(Xe=0|yt(0|(Cr=0|yt(0|(Er=0|yt(0|(xr=0|yt(0|(jr=0|yt(0|(zr=0|yt(0|(Dr=0|yt(0|Ee,0|Ce,0|Be,0|Dr)),0|_(),0|_e,0|zr)),0|_(),0|Ie,0|jr)),0|_(),0|ve,0|xr)),0|_(),0|Qr,0|Er)),0|_(),0|we,0|Cr)),0|_(),0|ua,0|Xe)),0|_(),0|$e,0|Oe)),0|_(),0|Ve,0|Ge),Ve=0|_(),Xe=0|Mi(0|(Oe=0|yt(0|a,0|Ke,33554432,0)),0|($e=0|_()),26),ua=0|_(),ua=0|yt(0|(Te=0|yt(0|(mr=0|yt(0|(fr=0|yt(0|(yr=0|yt(0|(br=0|yt(0|(kr=0|yt(0|(wr=0|yt(0|(vr=0|yt(0|Br,0|_r,0|Ir,0|vr)),0|_(),0|ke,0|wr)),0|_(),0|be,0|kr)),0|_(),0|ye,0|br)),0|_(),0|fe,0|yr)),0|_(),0|me,0|fr)),0|_(),0|pe,0|mr)),0|_(),0|Le,0|Te)),0|_(),0|Xe,0|ua),Xe=0|_(),$e=0|mt(0|a,0|Ke,-67108864&Oe|0,0|$e),Oe=0|_(),Te=0|Mi(0|(Ke=0|yt(0|Ge,0|Ve,33554432,0)),0|(a=0|_()),26),Le=0|_(),Le=0|yt(0|(Je=0|yt(0|(sr=0|yt(0|(lr=0|yt(0|(cr=0|yt(0|(dr=0|yt(0|(hr=0|yt(0|(Ar=0|yt(0|(gr=0|yt(0|(pr=0|yt(0|ge,0|Ae,0|he,0|pr)),0|_(),0|de,0|gr)),0|_(),0|ue,0|Ar)),0|_(),0|ce,0|hr)),0|_(),0|le,0|dr)),0|_(),0|ur,0|cr)),0|_(),0|se,0|lr)),0|_(),0|oe,0|sr)),0|_(),0|or,0|Je)),0|_(),0|Te,0|Le),Te=0|_(),a=0|mt(0|Ge,0|Ve,-67108864&Ke|0,0|a),Ke=0|_(),Ge=0|Mi(0|(Ve=0|yt(0|ua,0|Xe,16777216,0)),0|_(),25),Je=0|_(),Je=0|yt(0|(Pe=0|yt(0|(Va=0|yt(0|(Wa=0|yt(0|(Za=0|yt(0|(er=0|yt(0|(ar=0|yt(0|(rr=0|yt(0|(tr=0|yt(0|(nr=0|yt(0|ne,0|te,0|ie,0|nr)),0|_(),0|re,0|tr)),0|_(),0|ir,0|rr)),0|_(),0|ae,0|ar)),0|_(),0|ee,0|er)),0|_(),0|Z,0|Za)),0|_(),0|W,0|Wa)),0|_(),0|V,0|Va)),0|_(),0|We,0|Pe)),0|_(),0|Ge,0|Je),Ge=0|_(),Ve=0|mt(0|ua,0|Xe,-33554432&Ve|0,0),Xe=0|_(),Pe=0|Mi(0|(ua=0|yt(0|Le,0|Te,16777216,0)),0|_(),25),We=0|_(),We=0|yt(0|(Ne=0|yt(0|(Ya=0|yt(0|(Ja=0|yt(0|(La=0|yt(0|(Ta=0|yt(0|(Ka=0|yt(0|($a=0|yt(0|(Oa=0|yt(0|(Xa=0|yt(0|X,0|O,0|$,0|Xa)),0|_(),0|K,0|Oa)),0|_(),0|T,0|$a)),0|_(),0|L,0|Ka)),0|_(),0|P,0|Ta)),0|_(),0|J,0|La)),0|_(),0|Pa,0|Ja)),0|_(),0|Y,0|Ya)),0|_(),0|r,0|Ne)),0|_(),0|Pe,0|We),Pe=0|_(),ua=0|mt(0|Le,0|Te,-33554432&ua|0,0),Te=0|_(),Ne=0|Mi(0|(Le=0|yt(0|Je,0|Ge,33554432,0)),0|_(),26),r=0|_(),r=0|yt(0|(Ye=0|yt(0|(Sa=0|yt(0|(Ma=0|yt(0|(qa=0|yt(0|(Fa=0|yt(0|(Ua=0|yt(0|(Ha=0|yt(0|(Na=0|yt(0|(Ga=0|yt(0|G,0|N,0|H,0|Ga)),0|_(),0|R,0|Na)),0|_(),0|U,0|Ha)),0|_(),0|Ra,0|Ua)),0|_(),0|F,0|Fa)),0|_(),0|q,0|qa)),0|_(),0|M,0|Ma)),0|_(),0|S,0|Sa)),0|_(),0|Da,0|Ye)),0|_(),0|Ne,0|r),Ne=0|_(),Le=0|mt(0|Je,0|Ge,-67108864&Le|0,0),_(),Je=0|Mi(0|(Ge=0|yt(0|We,0|Pe,33554432,0)),0|_(),26),Ye=0|_(),Ye=0|yt(0|(wa=0|yt(0|(Ia=0|yt(0|(Ba=0|yt(0|(Ca=0|yt(0|(Ea=0|yt(0|(Qa=0|yt(0|(xa=0|yt(0|(ja=0|yt(0|(za=0|yt(0|D,0|z,0|j,0|za)),0|_(),0|x,0|ja)),0|_(),0|Q,0|xa)),0|_(),0|E,0|Qa)),0|_(),0|C,0|Ea)),0|_(),0|B,0|Ca)),0|_(),0|I,0|Ba)),0|_(),0|_a,0|Ia)),0|_(),0|va,0|wa)),0|_(),0|Je,0|Ye),Je=0|_(),Ge=0|mt(0|We,0|Pe,-67108864&Ge|0,0),_(),Ke=0|yt(0|(We=0|Mi(0|(Pe=0|yt(0|r,0|Ne,16777216,0)),0|_(),25)),0|_(),0|a,0|Ke),a=0|_(),Pe=0|mt(0|r,0|Ne,-33554432&Pe|0,0),_(),r=0|Mi(0|(Ne=0|yt(0|Ye,0|Je,16777216,0)),0|_(),25),We=0|_(),We=0|yt(0|(da=0|yt(0|(Aa=0|yt(0|(ga=0|yt(0|(pa=0|yt(0|(ma=0|yt(0|(fa=0|yt(0|(ya=0|yt(0|(ba=0|yt(0|(ka=0|yt(0|v,0|w,0|k,0|ka)),0|_(),0|b,0|ba)),0|_(),0|y,0|ya)),0|_(),0|f,0|fa)),0|_(),0|m,0|ma)),0|_(),0|p,0|pa)),0|_(),0|g,0|ga)),0|_(),0|A,0|Aa)),0|_(),0|ha,0|da)),0|_(),0|r,0|We),r=0|_(),Ne=0|mt(0|Ye,0|Je,-33554432&Ne|0,0),_(),Ye=0|yt(0|ua,0|Te,0|(Ye=0|Oi(0|(Je=0|yt(0|Ke,0|a,33554432,0)),0|_(),26)),0|_()),_(),Je=0|mt(0|Ke,0|a,-67108864&Je|0,0),_(),Ke=0|Mi(0|(a=0|yt(0|We,0|r,33554432,0)),0|_(),26),Te=0|_(),Te=0|yt(0|(Ze=0|yt(0|(aa=0|yt(0|(ra=0|yt(0|(ia=0|yt(0|(ta=0|yt(0|(na=0|yt(0|(oa=0|yt(0|(sa=0|yt(0|(la=0|yt(0|h,0|d,0|ca,0|la)),0|_(),0|u,0|sa)),0|_(),0|c,0|oa)),0|_(),0|s,0|na)),0|_(),0|o,0|ta)),0|_(),0|n,0|ia)),0|_(),0|t,0|ra)),0|_(),0|i,0|aa)),0|_(),0|ea,0|Ze)),0|_(),0|Ke,0|Te),Ke=0|_(),a=0|mt(0|We,0|r,-67108864&a|0,0),_(),Oe=0|yt(0|(We=0|ji(0|(We=0|Mi(0|(r=0|yt(0|Te,0|Ke,16777216,0)),0|_(),25)),0|_(),19,0)),0|_(),0|$e,0|Oe),$e=0|_(),r=0|mt(0|Te,0|Ke,-33554432&r|0,0),_(),Te=0|yt(0|Ve,0|Xe,0|(Te=0|Oi(0|(Ke=0|yt(0|Oe,0|$e,33554432,0)),0|_(),26)),0|_()),_(),Ke=0|mt(0|Oe,0|$e,-67108864&Ke|0,0),_(),l[e>>2]=Ke,l[e+4>>2]=Te,l[e+8>>2]=Le,l[e+12>>2]=Pe,l[e+16>>2]=Je,l[e+20>>2]=Ye,l[e+24>>2]=Ge,l[e+28>>2]=Ne,l[e+32>>2]=a,l[e+36>>2]=r}function H(e,a,r){e|=0,r|=0;var i,t,n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,y=0,b=0,k=0,w=0,v=0,I=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0;i=f,t=f=f+63&-64,f=f+2048|0,gn(t+1024|0,a|=0),Nr(t+1024|0,e),gn(t,t+1024|0),Nr(t,r),e=0;do{o=0|l[t+1024+((4|(a=e<<4))<<3)>>2],s=0|l[t+1024+((4|a)<<3)+4>>2],q=0|Cr(0|l[t+1024+(a<<3)>>2],0|l[t+1024+(a<<3)+4>>2],o,s),H=0|_(),j=0|wi(l[t+1024+((12|a)<<3)>>2]^q,l[t+1024+((12|a)<<3)+4>>2]^H,32),I=0|_(),I=0|wi((H=0|Cr(q,H,s=0|wi((k=0|Cr(0|l[t+1024+((8|a)<<3)>>2],0|l[t+1024+((8|a)<<3)+4>>2],j,I))^o,(b=0|_())^s,24),o=0|_()))^j,(q=0|_())^I,16),j=0|_(),l[t+1024+((12|a)<<3)>>2]=I,l[t+1024+((12|a)<<3)+4>>2]=j,b=0|Cr(k,b,I,j),k=0|_(),l[t+1024+((8|a)<<3)>>2]=b,l[t+1024+((8|a)<<3)+4>>2]=k,o=0|wi(b^s,k^o,63),s=0|_(),l[t+1024+((4|a)<<3)>>2]=o,l[t+1024+((4|a)<<3)+4>>2]=s,S=0|l[t+1024+((5|a)<<3)>>2],M=0|l[t+1024+((5|a)<<3)+4>>2],E=0|Cr(0|l[t+1024+((1|a)<<3)>>2],0|l[t+1024+((1|a)<<3)+4>>2],S,M),z=0|_(),w=0|wi(l[t+1024+((13|a)<<3)>>2]^E,l[t+1024+((13|a)<<3)+4>>2]^z,32),g=0|_(),u=0|Cr(d=0|Cr(0|l[t+1024+((9|a)<<3)>>2],0|l[t+1024+((9|a)<<3)+4>>2],w,g),u=0|_(),g=0|wi((z=0|Cr(E,z,M=0|wi(d^S,u^M,24),S=0|_()))^w,(E=0|_())^g,16),w=0|_()),d=0|_(),l[t+1024+((9|a)<<3)>>2]=u,l[t+1024+((9|a)<<3)+4>>2]=d,S=0|wi(u^M,d^S,63),M=0|_(),B=0|l[t+1024+((6|a)<<3)>>2],C=0|l[t+1024+((6|a)<<3)+4>>2],y=0|Cr(0|l[t+1024+((2|a)<<3)>>2],0|l[t+1024+((2|a)<<3)+4>>2],B,C),v=0|_(),h=0|wi(l[t+1024+((14|a)<<3)>>2]^y,l[t+1024+((14|a)<<3)+4>>2]^v,32),n=0|_(),B=0|wi((F=0|Cr(U=0|Cr(0|l[t+1024+((10|a)<<3)>>2],0|l[t+1024+((10|a)<<3)+4>>2],h,n),F=0|_(),n=0|wi((v=0|Cr(y,v,C=0|wi(U^B,F^C,24),B=0|_()))^h,(y=0|_())^n,16),h=0|_()))^C,(U=0|_())^B,63),C=0|_(),p=0|l[t+1024+((7|a)<<3)>>2],m=0|l[t+1024+((7|a)<<3)+4>>2],c=0|Cr(0|l[t+1024+((3|a)<<3)>>2],0|l[t+1024+((3|a)<<3)+4>>2],p,m),A=0|_(),R=0|wi(l[t+1024+((15|a)<<3)>>2]^c,l[t+1024+((15|a)<<3)+4>>2]^A,32),D=0|_(),p=0|wi((Q=0|Cr(x=0|Cr(0|l[t+1024+((11|a)<<3)>>2],0|l[t+1024+((11|a)<<3)+4>>2],R,D),Q=0|_(),D=0|wi((A=0|Cr(c,A,m=0|wi(x^p,Q^m,24),p=0|_()))^R,(c=0|_())^D,16),R=0|_()))^m,(x=0|_())^p,63),m=0|_(),H=0|Cr(q=0|Cr(H,q,S,M),H=0|_(),M=0|wi((U=0|Cr(F,U,R=0|wi(q^D,H^R,32),D=0|_()))^S,(F=0|_())^M,24),S=0|_()),q=0|_(),l[t+1024+(a<<3)>>2]=H,l[t+1024+(a<<3)+4>>2]=q,D=0|wi(H^R,q^D,16),q=0|_(),l[t+1024+((15|a)<<3)>>2]=D,l[t+1024+((15|a)<<3)+4>>2]=q,q=0|Cr(U,F,D,q),D=0|_(),l[t+1024+((10|a)<<3)>>2]=q,l[t+1024+((10|a)<<3)+4>>2]=D,S=0|wi(q^M,D^S,63),D=0|_(),l[t+1024+((5|a)<<3)>>2]=S,l[t+1024+((5|a)<<3)+4>>2]=D,z=0|Cr(E=0|Cr(z,E,B,C),z=0|_(),C=0|wi((x=0|Cr(Q,x,j=0|wi(E^I,z^j,32),I=0|_()))^B,(Q=0|_())^C,24),B=0|_()),E=0|_(),l[t+1024+((1|a)<<3)>>2]=z,l[t+1024+((1|a)<<3)+4>>2]=E,I=0|wi(z^j,E^I,16),E=0|_(),l[t+1024+((12|a)<<3)>>2]=I,l[t+1024+((12|a)<<3)+4>>2]=E,E=0|Cr(x,Q,I,E),I=0|_(),l[t+1024+((11|a)<<3)>>2]=E,l[t+1024+((11|a)<<3)+4>>2]=I,B=0|wi(E^C,I^B,63),I=0|_(),l[t+1024+((6|a)<<3)>>2]=B,l[t+1024+((6|a)<<3)+4>>2]=I,v=0|Cr(y=0|Cr(v,y,p,m),v=0|_(),m=0|wi((k=0|Cr(b,k,w=0|wi(y^g,v^w,32),g=0|_()))^p,(b=0|_())^m,24),p=0|_()),y=0|_(),l[t+1024+((2|a)<<3)>>2]=v,l[t+1024+((2|a)<<3)+4>>2]=y,g=0|wi(v^w,y^g,16),y=0|_(),l[t+1024+((13|a)<<3)>>2]=g,l[t+1024+((13|a)<<3)+4>>2]=y,y=0|Cr(k,b,g,y),g=0|_(),l[t+1024+((8|a)<<3)>>2]=y,l[t+1024+((8|a)<<3)+4>>2]=g,p=0|wi(y^m,g^p,63),g=0|_(),l[t+1024+((7|a)<<3)>>2]=p,l[t+1024+((7|a)<<3)+4>>2]=g,A=0|Cr(c=0|Cr(A,c,o,s),A=0|_(),s=0|wi((d=0|Cr(u,d,h=0|wi(c^n,A^h,32),n=0|_()))^o,(u=0|_())^s,24),o=0|_()),c=0|_(),l[t+1024+((3|a)<<3)>>2]=A,l[t+1024+((3|a)<<3)+4>>2]=c,n=0|wi(A^h,c^n,16),c=0|_(),l[t+1024+((14|a)<<3)>>2]=n,l[t+1024+((14|a)<<3)+4>>2]=c,c=0|Cr(d,u,n,c),n=0|_(),l[t+1024+((9|a)<<3)>>2]=c,l[t+1024+((9|a)<<3)+4>>2]=n,o=0|wi(c^s,n^o,63),n=0|_(),l[t+1024+((4|a)<<3)>>2]=o,l[t+1024+((4|a)<<3)+4>>2]=n,e=e+1|0}while(8!=(0|e));e=0;do{U=0|l[(F=t+1024+(32+(H=e<<1)<<3)|0)>>2],F=0|l[F+4>>2],c=0|Cr(0|l[t+1024+(H<<3)>>2],0|l[t+1024+(H<<3)+4>>2],U,F),a=0|_(),g=0|wi(l[(g=t+1024+(H+96<<3)|0)>>2]^c,l[g+4>>2]^a,32),k=0|_(),k=0|wi((a=0|Cr(c,a,F=0|wi((B=0|Cr(0|l[(B=t+1024+(H+64<<3)|0)>>2],0|l[B+4>>2],g,k))^U,(C=0|_())^F,24),U=0|_()))^g,(c=0|_())^k,16),g=0|_(),l[(h=t+1024+(H+96<<3)|0)>>2]=k,l[h+4>>2]=g,C=0|Cr(B,C,k,g),B=0|_(),l[(h=t+1024+(H+64<<3)|0)>>2]=C,l[h+4>>2]=B,U=0|wi(C^F,B^U,63),F=0|_(),l[(h=t+1024+(H+32<<3)|0)>>2]=U,l[h+4>>2]=F,u=0|l[(h=t+1024+(H+33<<3)|0)>>2],h=0|l[h+4>>2],y=0|Cr(0|l[t+1024+((1|H)<<3)>>2],0|l[t+1024+((1|H)<<3)+4>>2],u,h),A=0|_(),I=0|wi(l[(I=t+1024+(H+97<<3)|0)>>2]^y,l[I+4>>2]^A,32),x=0|_(),M=0|Cr(S=0|Cr(0|l[(S=t+1024+(H+65<<3)|0)>>2],0|l[S+4>>2],I,x),M=0|_(),x=0|wi((A=0|Cr(y,A,h=0|wi(S^u,M^h,24),u=0|_()))^I,(y=0|_())^x,16),I=0|_()),S=0|_(),l[(E=t+1024+(H+65<<3)|0)>>2]=M,l[E+4>>2]=S,u=0|wi(M^h,S^u,63),h=0|_(),E=t+1024+(H+16<<3)|0,b=0|l[(w=t+1024+(H+48<<3)|0)>>2],w=0|l[w+4>>2],E=0|Cr(0|l[E>>2],0|l[E+4>>2],b,w),v=0|_(),D=0|wi(l[(D=t+1024+(H+112<<3)|0)>>2]^E,l[D+4>>2]^v,32),R=0|_(),b=0|wi((s=0|Cr(o=0|Cr(0|l[(o=t+1024+(H+80<<3)|0)>>2],0|l[o+4>>2],D,R),s=0|_(),R=0|wi((v=0|Cr(E,v,w=0|wi(o^b,s^w,24),b=0|_()))^D,(E=0|_())^R,16),D=0|_()))^w,(o=0|_())^b,63),w=0|_(),q=t+1024+(H+17<<3)|0,Q=0|l[(j=t+1024+(H+49<<3)|0)>>2],j=0|l[j+4>>2],q=0|Cr(0|l[q>>2],0|l[q+4>>2],Q,j),z=0|_(),n=0|wi(l[(n=t+1024+(H+113<<3)|0)>>2]^q,l[n+4>>2]^z,32),d=0|_(),Q=0|wi((m=0|Cr(p=0|Cr(0|l[(p=t+1024+(H+81<<3)|0)>>2],0|l[p+4>>2],n,d),m=0|_(),d=0|wi((z=0|Cr(q,z,j=0|wi(p^Q,m^j,24),Q=0|_()))^n,(q=0|_())^d,16),n=0|_()))^j,(p=0|_())^Q,63),j=0|_(),a=0|Cr(c=0|Cr(a,c,u,h),a=0|_(),h=0|wi((o=0|Cr(s,o,n=0|wi(c^d,a^n,32),d=0|_()))^u,(s=0|_())^h,24),u=0|_()),c=0|_(),l[t+1024+(H<<3)>>2]=a,l[t+1024+(H<<3)+4>>2]=c,d=0|wi(a^n,c^d,16),c=0|_(),l[(n=t+1024+(H+113<<3)|0)>>2]=d,l[n+4>>2]=c,c=0|Cr(o,s,d,c),d=0|_(),l[(s=t+1024+(H+80<<3)|0)>>2]=c,l[s+4>>2]=d,u=0|wi(c^h,d^u,63),d=0|_(),l[(h=t+1024+(H+33<<3)|0)>>2]=u,l[h+4>>2]=d,A=0|Cr(y=0|Cr(A,y,b,w),A=0|_(),w=0|wi((p=0|Cr(m,p,g=0|wi(y^k,A^g,32),k=0|_()))^b,(m=0|_())^w,24),b=0|_()),y=0|_(),l[t+1024+((1|H)<<3)>>2]=A,l[t+1024+((1|H)<<3)+4>>2]=y,k=0|wi(A^g,y^k,16),y=0|_(),l[(g=t+1024+(H+96<<3)|0)>>2]=k,l[g+4>>2]=y,y=0|Cr(p,m,k,y),k=0|_(),l[(m=t+1024+(H+81<<3)|0)>>2]=y,l[m+4>>2]=k,b=0|wi(y^w,k^b,63),k=0|_(),l[(w=t+1024+(H+48<<3)|0)>>2]=b,l[w+4>>2]=k,v=0|Cr(E=0|Cr(v,E,Q,j),v=0|_(),j=0|wi((B=0|Cr(C,B,I=0|wi(E^x,v^I,32),x=0|_()))^Q,(C=0|_())^j,24),Q=0|_()),E=0|_(),l[(w=t+1024+(H+16<<3)|0)>>2]=v,l[w+4>>2]=E,x=0|wi(v^I,E^x,16),E=0|_(),l[(I=t+1024+(H+97<<3)|0)>>2]=x,l[I+4>>2]=E,E=0|Cr(B,C,x,E),x=0|_(),l[(C=t+1024+(H+64<<3)|0)>>2]=E,l[C+4>>2]=x,Q=0|wi(E^j,x^Q,63),x=0|_(),l[(j=t+1024+(H+49<<3)|0)>>2]=Q,l[j+4>>2]=x,z=0|Cr(q=0|Cr(z,q,U,F),z=0|_(),F=0|wi((S=0|Cr(M,S,D=0|wi(q^R,z^D,32),R=0|_()))^U,(M=0|_())^F,24),U=0|_()),q=0|_(),l[(j=t+1024+(H+17<<3)|0)>>2]=z,l[j+4>>2]=q,R=0|wi(z^D,q^R,16),q=0|_(),l[(D=t+1024+(H+112<<3)|0)>>2]=R,l[D+4>>2]=q,q=0|Cr(S,M,R,q),R=0|_(),l[(M=t+1024+(H+65<<3)|0)>>2]=q,l[M+4>>2]=R,U=0|wi(q^F,R^U,63),R=0|_(),l[(H=t+1024+(H+32<<3)|0)>>2]=U,l[H+4>>2]=R,e=e+1|0}while(8!=(0|e));gn(r,t),Nr(r,t+1024|0),f=i}function N(e,a,r){e|=0,r|=0;var i,t,n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,y=0,b=0,k=0,w=0,v=0,I=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0;i=f,t=f=f+63&-64,f=f+2048|0,gn(t+1024|0,a|=0),Nr(t+1024|0,e),gn(t,t+1024|0),e=0;do{o=0|l[t+1024+((4|(a=e<<4))<<3)>>2],s=0|l[t+1024+((4|a)<<3)+4>>2],q=0|Cr(0|l[t+1024+(a<<3)>>2],0|l[t+1024+(a<<3)+4>>2],o,s),H=0|_(),j=0|wi(l[t+1024+((12|a)<<3)>>2]^q,l[t+1024+((12|a)<<3)+4>>2]^H,32),I=0|_(),I=0|wi((H=0|Cr(q,H,s=0|wi((k=0|Cr(0|l[t+1024+((8|a)<<3)>>2],0|l[t+1024+((8|a)<<3)+4>>2],j,I))^o,(b=0|_())^s,24),o=0|_()))^j,(q=0|_())^I,16),j=0|_(),l[t+1024+((12|a)<<3)>>2]=I,l[t+1024+((12|a)<<3)+4>>2]=j,b=0|Cr(k,b,I,j),k=0|_(),l[t+1024+((8|a)<<3)>>2]=b,l[t+1024+((8|a)<<3)+4>>2]=k,o=0|wi(b^s,k^o,63),s=0|_(),l[t+1024+((4|a)<<3)>>2]=o,l[t+1024+((4|a)<<3)+4>>2]=s,S=0|l[t+1024+((5|a)<<3)>>2],M=0|l[t+1024+((5|a)<<3)+4>>2],E=0|Cr(0|l[t+1024+((1|a)<<3)>>2],0|l[t+1024+((1|a)<<3)+4>>2],S,M),z=0|_(),w=0|wi(l[t+1024+((13|a)<<3)>>2]^E,l[t+1024+((13|a)<<3)+4>>2]^z,32),g=0|_(),u=0|Cr(d=0|Cr(0|l[t+1024+((9|a)<<3)>>2],0|l[t+1024+((9|a)<<3)+4>>2],w,g),u=0|_(),g=0|wi((z=0|Cr(E,z,M=0|wi(d^S,u^M,24),S=0|_()))^w,(E=0|_())^g,16),w=0|_()),d=0|_(),l[t+1024+((9|a)<<3)>>2]=u,l[t+1024+((9|a)<<3)+4>>2]=d,S=0|wi(u^M,d^S,63),M=0|_(),B=0|l[t+1024+((6|a)<<3)>>2],C=0|l[t+1024+((6|a)<<3)+4>>2],y=0|Cr(0|l[t+1024+((2|a)<<3)>>2],0|l[t+1024+((2|a)<<3)+4>>2],B,C),v=0|_(),h=0|wi(l[t+1024+((14|a)<<3)>>2]^y,l[t+1024+((14|a)<<3)+4>>2]^v,32),n=0|_(),B=0|wi((F=0|Cr(U=0|Cr(0|l[t+1024+((10|a)<<3)>>2],0|l[t+1024+((10|a)<<3)+4>>2],h,n),F=0|_(),n=0|wi((v=0|Cr(y,v,C=0|wi(U^B,F^C,24),B=0|_()))^h,(y=0|_())^n,16),h=0|_()))^C,(U=0|_())^B,63),C=0|_(),p=0|l[t+1024+((7|a)<<3)>>2],m=0|l[t+1024+((7|a)<<3)+4>>2],c=0|Cr(0|l[t+1024+((3|a)<<3)>>2],0|l[t+1024+((3|a)<<3)+4>>2],p,m),A=0|_(),R=0|wi(l[t+1024+((15|a)<<3)>>2]^c,l[t+1024+((15|a)<<3)+4>>2]^A,32),D=0|_(),p=0|wi((Q=0|Cr(x=0|Cr(0|l[t+1024+((11|a)<<3)>>2],0|l[t+1024+((11|a)<<3)+4>>2],R,D),Q=0|_(),D=0|wi((A=0|Cr(c,A,m=0|wi(x^p,Q^m,24),p=0|_()))^R,(c=0|_())^D,16),R=0|_()))^m,(x=0|_())^p,63),m=0|_(),H=0|Cr(q=0|Cr(H,q,S,M),H=0|_(),M=0|wi((U=0|Cr(F,U,R=0|wi(q^D,H^R,32),D=0|_()))^S,(F=0|_())^M,24),S=0|_()),q=0|_(),l[t+1024+(a<<3)>>2]=H,l[t+1024+(a<<3)+4>>2]=q,D=0|wi(H^R,q^D,16),q=0|_(),l[t+1024+((15|a)<<3)>>2]=D,l[t+1024+((15|a)<<3)+4>>2]=q,q=0|Cr(U,F,D,q),D=0|_(),l[t+1024+((10|a)<<3)>>2]=q,l[t+1024+((10|a)<<3)+4>>2]=D,S=0|wi(q^M,D^S,63),D=0|_(),l[t+1024+((5|a)<<3)>>2]=S,l[t+1024+((5|a)<<3)+4>>2]=D,z=0|Cr(E=0|Cr(z,E,B,C),z=0|_(),C=0|wi((x=0|Cr(Q,x,j=0|wi(E^I,z^j,32),I=0|_()))^B,(Q=0|_())^C,24),B=0|_()),E=0|_(),l[t+1024+((1|a)<<3)>>2]=z,l[t+1024+((1|a)<<3)+4>>2]=E,I=0|wi(z^j,E^I,16),E=0|_(),l[t+1024+((12|a)<<3)>>2]=I,l[t+1024+((12|a)<<3)+4>>2]=E,E=0|Cr(x,Q,I,E),I=0|_(),l[t+1024+((11|a)<<3)>>2]=E,l[t+1024+((11|a)<<3)+4>>2]=I,B=0|wi(E^C,I^B,63),I=0|_(),l[t+1024+((6|a)<<3)>>2]=B,l[t+1024+((6|a)<<3)+4>>2]=I,v=0|Cr(y=0|Cr(v,y,p,m),v=0|_(),m=0|wi((k=0|Cr(b,k,w=0|wi(y^g,v^w,32),g=0|_()))^p,(b=0|_())^m,24),p=0|_()),y=0|_(),l[t+1024+((2|a)<<3)>>2]=v,l[t+1024+((2|a)<<3)+4>>2]=y,g=0|wi(v^w,y^g,16),y=0|_(),l[t+1024+((13|a)<<3)>>2]=g,l[t+1024+((13|a)<<3)+4>>2]=y,y=0|Cr(k,b,g,y),g=0|_(),l[t+1024+((8|a)<<3)>>2]=y,l[t+1024+((8|a)<<3)+4>>2]=g,p=0|wi(y^m,g^p,63),g=0|_(),l[t+1024+((7|a)<<3)>>2]=p,l[t+1024+((7|a)<<3)+4>>2]=g,A=0|Cr(c=0|Cr(A,c,o,s),A=0|_(),s=0|wi((d=0|Cr(u,d,h=0|wi(c^n,A^h,32),n=0|_()))^o,(u=0|_())^s,24),o=0|_()),c=0|_(),l[t+1024+((3|a)<<3)>>2]=A,l[t+1024+((3|a)<<3)+4>>2]=c,n=0|wi(A^h,c^n,16),c=0|_(),l[t+1024+((14|a)<<3)>>2]=n,l[t+1024+((14|a)<<3)+4>>2]=c,c=0|Cr(d,u,n,c),n=0|_(),l[t+1024+((9|a)<<3)>>2]=c,l[t+1024+((9|a)<<3)+4>>2]=n,o=0|wi(c^s,n^o,63),n=0|_(),l[t+1024+((4|a)<<3)>>2]=o,l[t+1024+((4|a)<<3)+4>>2]=n,e=e+1|0}while(8!=(0|e));e=0;do{U=0|l[(F=t+1024+(32+(H=e<<1)<<3)|0)>>2],F=0|l[F+4>>2],c=0|Cr(0|l[t+1024+(H<<3)>>2],0|l[t+1024+(H<<3)+4>>2],U,F),a=0|_(),g=0|wi(l[(g=t+1024+(H+96<<3)|0)>>2]^c,l[g+4>>2]^a,32),k=0|_(),k=0|wi((a=0|Cr(c,a,F=0|wi((B=0|Cr(0|l[(B=t+1024+(H+64<<3)|0)>>2],0|l[B+4>>2],g,k))^U,(C=0|_())^F,24),U=0|_()))^g,(c=0|_())^k,16),g=0|_(),l[(h=t+1024+(H+96<<3)|0)>>2]=k,l[h+4>>2]=g,C=0|Cr(B,C,k,g),B=0|_(),l[(h=t+1024+(H+64<<3)|0)>>2]=C,l[h+4>>2]=B,U=0|wi(C^F,B^U,63),F=0|_(),l[(h=t+1024+(H+32<<3)|0)>>2]=U,l[h+4>>2]=F,u=0|l[(h=t+1024+(H+33<<3)|0)>>2],h=0|l[h+4>>2],y=0|Cr(0|l[t+1024+((1|H)<<3)>>2],0|l[t+1024+((1|H)<<3)+4>>2],u,h),A=0|_(),I=0|wi(l[(I=t+1024+(H+97<<3)|0)>>2]^y,l[I+4>>2]^A,32),x=0|_(),M=0|Cr(S=0|Cr(0|l[(S=t+1024+(H+65<<3)|0)>>2],0|l[S+4>>2],I,x),M=0|_(),x=0|wi((A=0|Cr(y,A,h=0|wi(S^u,M^h,24),u=0|_()))^I,(y=0|_())^x,16),I=0|_()),S=0|_(),l[(E=t+1024+(H+65<<3)|0)>>2]=M,l[E+4>>2]=S,u=0|wi(M^h,S^u,63),h=0|_(),E=t+1024+(H+16<<3)|0,b=0|l[(w=t+1024+(H+48<<3)|0)>>2],w=0|l[w+4>>2],E=0|Cr(0|l[E>>2],0|l[E+4>>2],b,w),v=0|_(),D=0|wi(l[(D=t+1024+(H+112<<3)|0)>>2]^E,l[D+4>>2]^v,32),R=0|_(),b=0|wi((s=0|Cr(o=0|Cr(0|l[(o=t+1024+(H+80<<3)|0)>>2],0|l[o+4>>2],D,R),s=0|_(),R=0|wi((v=0|Cr(E,v,w=0|wi(o^b,s^w,24),b=0|_()))^D,(E=0|_())^R,16),D=0|_()))^w,(o=0|_())^b,63),w=0|_(),q=t+1024+(H+17<<3)|0,Q=0|l[(j=t+1024+(H+49<<3)|0)>>2],j=0|l[j+4>>2],q=0|Cr(0|l[q>>2],0|l[q+4>>2],Q,j),z=0|_(),n=0|wi(l[(n=t+1024+(H+113<<3)|0)>>2]^q,l[n+4>>2]^z,32),d=0|_(),Q=0|wi((m=0|Cr(p=0|Cr(0|l[(p=t+1024+(H+81<<3)|0)>>2],0|l[p+4>>2],n,d),m=0|_(),d=0|wi((z=0|Cr(q,z,j=0|wi(p^Q,m^j,24),Q=0|_()))^n,(q=0|_())^d,16),n=0|_()))^j,(p=0|_())^Q,63),j=0|_(),a=0|Cr(c=0|Cr(a,c,u,h),a=0|_(),h=0|wi((o=0|Cr(s,o,n=0|wi(c^d,a^n,32),d=0|_()))^u,(s=0|_())^h,24),u=0|_()),c=0|_(),l[t+1024+(H<<3)>>2]=a,l[t+1024+(H<<3)+4>>2]=c,d=0|wi(a^n,c^d,16),c=0|_(),l[(n=t+1024+(H+113<<3)|0)>>2]=d,l[n+4>>2]=c,c=0|Cr(o,s,d,c),d=0|_(),l[(s=t+1024+(H+80<<3)|0)>>2]=c,l[s+4>>2]=d,u=0|wi(c^h,d^u,63),d=0|_(),l[(h=t+1024+(H+33<<3)|0)>>2]=u,l[h+4>>2]=d,A=0|Cr(y=0|Cr(A,y,b,w),A=0|_(),w=0|wi((p=0|Cr(m,p,g=0|wi(y^k,A^g,32),k=0|_()))^b,(m=0|_())^w,24),b=0|_()),y=0|_(),l[t+1024+((1|H)<<3)>>2]=A,l[t+1024+((1|H)<<3)+4>>2]=y,k=0|wi(A^g,y^k,16),y=0|_(),l[(g=t+1024+(H+96<<3)|0)>>2]=k,l[g+4>>2]=y,y=0|Cr(p,m,k,y),k=0|_(),l[(m=t+1024+(H+81<<3)|0)>>2]=y,l[m+4>>2]=k,b=0|wi(y^w,k^b,63),k=0|_(),l[(w=t+1024+(H+48<<3)|0)>>2]=b,l[w+4>>2]=k,v=0|Cr(E=0|Cr(v,E,Q,j),v=0|_(),j=0|wi((B=0|Cr(C,B,I=0|wi(E^x,v^I,32),x=0|_()))^Q,(C=0|_())^j,24),Q=0|_()),E=0|_(),l[(w=t+1024+(H+16<<3)|0)>>2]=v,l[w+4>>2]=E,x=0|wi(v^I,E^x,16),E=0|_(),l[(I=t+1024+(H+97<<3)|0)>>2]=x,l[I+4>>2]=E,E=0|Cr(B,C,x,E),x=0|_(),l[(C=t+1024+(H+64<<3)|0)>>2]=E,l[C+4>>2]=x,Q=0|wi(E^j,x^Q,63),x=0|_(),l[(j=t+1024+(H+49<<3)|0)>>2]=Q,l[j+4>>2]=x,z=0|Cr(q=0|Cr(z,q,U,F),z=0|_(),F=0|wi((S=0|Cr(M,S,D=0|wi(q^R,z^D,32),R=0|_()))^U,(M=0|_())^F,24),U=0|_()),q=0|_(),l[(j=t+1024+(H+17<<3)|0)>>2]=z,l[j+4>>2]=q,R=0|wi(z^D,q^R,16),q=0|_(),l[(D=t+1024+(H+112<<3)|0)>>2]=R,l[D+4>>2]=q,q=0|Cr(S,M,R,q),R=0|_(),l[(M=t+1024+(H+65<<3)|0)>>2]=q,l[M+4>>2]=R,U=0|wi(q^F,R^U,63),R=0|_(),l[(H=t+1024+(H+32<<3)|0)>>2]=U,l[H+4>>2]=R,e=e+1|0}while(8!=(0|e));gn(r,t),Nr(r,t+1024|0),f=i}function G(e,a){e|=0;var r,i,t,n,o,s,c,u,d,h,A,g,p,m,f,y,b,k,w,v,I,B,C,E,Q,x,j,z,D,S,M,q,F,U,R,H,N,G,Y,J,P,L,T,K,$,O,X,V,W,Z,ee,ae,re=0,ie=0,te=0,ne=0,oe=0,se=0,le=0,ce=0,ue=0,de=0,he=0,Ae=0,ge=0,pe=0,me=0,fe=0,ye=0,be=0,ke=0,we=0,ve=0,Ie=0,_e=0,Be=0,Ce=0,Ee=0,Qe=0,xe=0,je=0,ze=0,De=0,Se=0,Me=0,qe=0,Fe=0,Ue=0,Re=0,He=0,Ne=0,Ge=0,Ye=0,Je=0,Pe=0,Le=0,Te=0,Ke=0,$e=0,Oe=0,Xe=0,Ve=0,We=0,Ze=0,ea=0,aa=0,ra=0,ia=0,ta=0;ce=0|l[(a|=0)>>2],me=0|l[a+4>>2],Ae=0|l[a+8>>2],we=0|l[a+12>>2],ie=0|l[a+16>>2],ve=0|l[a+20>>2],fe=0|l[a+24>>2],se=0|l[a+28>>2],oe=0|l[a+32>>2],a=0|l[a+36>>2],Z=0|ji(0|ce,((0|ce)<0)<<31>>31|0,0|ce,((0|ce)<0)<<31>>31|0),ta=0|_(),K=0|ji(ce<<1|0,0|(ue=((ce<<1|0)<0)<<31>>31),0|me,((0|me)<0)<<31>>31|0),ea=0|_(),P=0|ji(0|Ae,((0|Ae)<0)<<31>>31|0,ce<<1|0,0|ue),J=0|_(),R=0|ji(0|we,((0|we)<0)<<31>>31|0,ce<<1|0,0|ue),U=0|_(),j=0|ji(0|ie,((0|ie)<0)<<31>>31|0,ce<<1|0,0|ue),Je=0|_(),B=0|ji(0|ve,((0|ve)<0)<<31>>31|0,ce<<1|0,0|ue),Re=0|_(),y=0|ji(0|fe,((0|fe)<0)<<31>>31|0,ce<<1|0,0|ue),Me=0|_(),A=0|ji(0|se,((0|se)<0)<<31>>31|0,ce<<1|0,0|ue),xe=0|_(),o=0|ji(0|oe,((0|oe)<0)<<31>>31|0,ce<<1|0,0|ue),Be=0|_(),ue=0|ji(0|a,((0|a)<0)<<31>>31|0,ce<<1|0,0|ue),ce=0|_(),Y=0|ji(me<<1|0,0|(re=((me<<1|0)<0)<<31>>31),0|me,((0|me)<0)<<31>>31|0),Ve=0|_(),F=0|ji(me<<1|0,0|re,0|Ae,((0|Ae)<0)<<31>>31|0),Ke=0|_(),S=0|ji(we<<1|0,0|(te=((we<<1|0)<0)<<31>>31),me<<1|0,0|re),D=0|_(),Q=0|ji(0|ie,((0|ie)<0)<<31>>31|0,me<<1|0,0|re),E=0|_(),b=0|ji(ve<<1|0,((ve<<1|0)<0)<<31>>31|0,me<<1|0,0|re),qe=0|_(),g=0|ji(0|fe,((0|fe)<0)<<31>>31|0,me<<1|0,0|re),je=0|_(),s=0|ji(se<<1|0,((se<<1|0)<0)<<31>>31|0,me<<1|0,0|re),Ce=0|_(),de=0|ji(0|oe,((0|oe)<0)<<31>>31|0,me<<1|0,0|re),he=0|_(),re=0|ji(38*a|0,0|(pe=((38*a|0)<0)<<31>>31),me<<1|0,0|re),me=0|_(),z=0|ji(0|Ae,((0|Ae)<0)<<31>>31|0,0|Ae,((0|Ae)<0)<<31>>31|0),Pe=0|_(),C=0|ji(Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0,0|we,((0|we)<0)<<31>>31|0),He=0|_(),k=0|ji(0|ie,((0|ie)<0)<<31>>31|0,Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),Fe=0|_(),f=0|ji(0|ve,((0|ve)<0)<<31>>31|0,Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),m=0|_(),h=0|ji(0|fe,((0|fe)<0)<<31>>31|0,Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),d=0|_(),r=0|ji(0|se,((0|se)<0)<<31>>31|0,Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),Ie=0|_(),X=0|ji(19*oe|0,0|(Se=((19*oe|0)<0)<<31>>31),Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),aa=0|_(),Ae=0|ji(38*a|0,0|pe,0|Ae,((0|Ae)<0)<<31>>31|0),ye=0|_(),v=0|ji(we<<1|0,0|te,0|we,((0|we)<0)<<31>>31|0),w=0|_(),p=0|ji(we<<1|0,0|te,0|ie,((0|ie)<0)<<31>>31|0),ze=0|_(),c=0|ji(ve<<1|0,((ve<<1|0)<0)<<31>>31|0,we<<1|0,0|te),Ee=0|_(),n=0|ji(0|fe,((0|fe)<0)<<31>>31|0,we<<1|0,0|te),t=0|_(),V=0|ji(38*se|0,0|(Ye=((38*se|0)<0)<<31>>31),we<<1|0,0|te),ra=0|_(),L=0|ji(19*oe|0,0|Se,we<<1|0,0|te),We=0|_(),te=0|ji(38*a|0,0|pe,we<<1|0,0|te),we=0|_(),u=0|ji(0|ie,((0|ie)<0)<<31>>31|0,0|ie,((0|ie)<0)<<31>>31|0),Qe=0|_(),i=0|ji(ie<<1|0,((ie<<1|0)<0)<<31>>31|0,0|ve,((0|ve)<0)<<31>>31|0),_e=0|_(),W=0|ji(19*fe|0,((19*fe|0)<0)<<31>>31|0,ie<<1|0,((ie<<1|0)<0)<<31>>31|0),ia=0|_(),T=0|ji(38*se|0,0|Ye,0|ie,((0|ie)<0)<<31>>31|0),Ze=0|_(),H=0|ji(19*oe|0,0|Se,ie<<1|0,((ie<<1|0)<0)<<31>>31|0),$e=0|_(),ie=0|ji(38*a|0,0|pe,0|ie,((0|ie)<0)<<31>>31|0),be=0|_(),ae=0|ji(38*ve|0,((38*ve|0)<0)<<31>>31|0,0|ve,((0|ve)<0)<<31>>31|0),ee=0|_(),O=0|ji(19*fe|0,((19*fe|0)<0)<<31>>31|0,ve<<1|0,((ve<<1|0)<0)<<31>>31|0),$=0|_(),N=0|ji(38*se|0,0|Ye,ve<<1|0,((ve<<1|0)<0)<<31>>31|0),Oe=0|_(),M=0|ji(19*oe|0,0|Se,ve<<1|0,((ve<<1|0)<0)<<31>>31|0),Le=0|_(),ve=0|ji(38*a|0,0|pe,ve<<1|0,((ve<<1|0)<0)<<31>>31|0),ge=0|_(),G=0|ji(19*fe|0,((19*fe|0)<0)<<31>>31|0,0|fe,((0|fe)<0)<<31>>31|0),Xe=0|_(),q=0|ji(38*se|0,0|Ye,0|fe,((0|fe)<0)<<31>>31|0),Te=0|_(),x=0|ji(19*oe|0,0|Se,fe<<1|0,((fe<<1|0)<0)<<31>>31|0),Ne=0|_(),fe=0|ji(38*a|0,0|pe,0|fe,((0|fe)<0)<<31>>31|0),le=0|_(),Ye=0|ji(38*se|0,0|Ye,0|se,((0|se)<0)<<31>>31|0),Ge=0|_(),I=0|ji(19*oe|0,0|Se,se<<1|0,((se<<1|0)<0)<<31>>31|0),Ue=0|_(),se=0|ji(38*a|0,0|pe,se<<1|0,((se<<1|0)<0)<<31>>31|0),ke=0|_(),Se=0|ji(19*oe|0,0|Se,0|oe,((0|oe)<0)<<31>>31|0),De=0|_(),oe=0|ji(38*a|0,0|pe,0|oe,((0|oe)<0)<<31>>31|0),ne=0|_(),a=0|ji(38*a|0,0|pe,0|a,((0|a)<0)<<31>>31|0),pe=0|_(),me=0|yt(0|(aa=0|yt(0|(ra=0|yt(0|(ia=0|yt(0|(ta=0|yt(0|ae,0|ee,0|Z,0|ta)),0|_(),0|W,0|ia)),0|_(),0|V,0|ra)),0|_(),0|X,0|aa)),0|_(),0|re,0|me),re=0|_(),ye=0|yt(0|(We=0|yt(0|(Ze=0|yt(0|(ea=0|yt(0|O,0|$,0|K,0|ea)),0|_(),0|T,0|Ze)),0|_(),0|L,0|We)),0|_(),0|Ae,0|ye),Ae=0|_(),we=0|yt(0|($e=0|yt(0|(Oe=0|yt(0|(Xe=0|yt(0|(Ve=0|yt(0|P,0|J,0|Y,0|Ve)),0|_(),0|G,0|Xe)),0|_(),0|N,0|Oe)),0|_(),0|H,0|$e)),0|_(),0|te,0|we),te=0|_(),be=0|yt(0|(Le=0|yt(0|(Te=0|yt(0|(Ke=0|yt(0|R,0|U,0|F,0|Ke)),0|_(),0|q,0|Te)),0|_(),0|M,0|Le)),0|_(),0|ie,0|be),ie=0|_(),ge=0|yt(0|(Ne=0|yt(0|(Ge=0|yt(0|(Je=0|yt(0|(Pe=0|yt(0|S,0|D,0|z,0|Pe)),0|_(),0|j,0|Je)),0|_(),0|Ye,0|Ge)),0|_(),0|x,0|Ne)),0|_(),0|ve,0|ge),ve=0|_(),le=0|yt(0|(Ue=0|yt(0|(Re=0|yt(0|(He=0|yt(0|Q,0|E,0|C,0|He)),0|_(),0|B,0|Re)),0|_(),0|I,0|Ue)),0|_(),0|fe,0|le),fe=0|_(),ke=0|yt(0|(De=0|yt(0|(Me=0|yt(0|(qe=0|yt(0|(Fe=0|yt(0|v,0|w,0|k,0|Fe)),0|_(),0|b,0|qe)),0|_(),0|y,0|Me)),0|_(),0|Se,0|De)),0|_(),0|se,0|ke),se=0|_(),ne=0|yt(0|(xe=0|yt(0|(je=0|yt(0|(ze=0|yt(0|f,0|m,0|p,0|ze)),0|_(),0|g,0|je)),0|_(),0|A,0|xe)),0|_(),0|oe,0|ne),oe=0|_(),pe=0|yt(0|(Be=0|yt(0|(Ce=0|yt(0|(Ee=0|yt(0|(Qe=0|yt(0|h,0|d,0|u,0|Qe)),0|_(),0|c,0|Ee)),0|_(),0|s,0|Ce)),0|_(),0|o,0|Be)),0|_(),0|a,0|pe),a=0|_(),ce=0|yt(0|(he=0|yt(0|(Ie=0|yt(0|(_e=0|yt(0|n,0|t,0|i,0|_e)),0|_(),0|r,0|Ie)),0|_(),0|de,0|he)),0|_(),0|ue,0|ce),ue=0|_(),re=0|Li(0|me,0|re,1),me=0|_(),Ae=0|Li(0|ye,0|Ae,1),ye=0|_(),te=0|Li(0|we,0|te,1),we=0|_(),ie=0|Li(0|be,0|ie,1),be=0|_(),ve=0|Li(0|ge,0|ve,1),ge=0|_(),fe=0|Li(0|le,0|fe,1),le=0|_(),se=0|Li(0|ke,0|se,1),ke=0|_(),oe=0|Li(0|ne,0|oe,1),ne=0|_(),a=0|Li(0|pe,0|a,1),pe=0|_(),ue=0|Li(0|ce,0|ue,1),ce=0|_(),ye=0|yt(0|(Ie=0|Mi(0|(he=0|yt(0|re,0|me,33554432,0)),0|(de=0|_()),26)),0|_(),0|Ae,0|ye),Ae=0|_(),de=0|mt(0|re,0|me,-67108864&he|0,0|de),he=0|_(),le=0|yt(0|(Ie=0|Mi(0|(me=0|yt(0|ve,0|ge,33554432,0)),0|(re=0|_()),26)),0|_(),0|fe,0|le),fe=0|_(),re=0|mt(0|ve,0|ge,-67108864&me|0,0|re),me=0|_(),we=0|yt(0|(ve=0|Mi(0|(ge=0|yt(0|ye,0|Ae,16777216,0)),0|_(),25)),0|_(),0|te,0|we),te=0|_(),ge=0|mt(0|ye,0|Ae,-33554432&ge|0,0),Ae=0|_(),ke=0|yt(0|(ve=0|Mi(0|(ye=0|yt(0|le,0|fe,16777216,0)),0|_(),25)),0|_(),0|se,0|ke),se=0|_(),ye=0|mt(0|le,0|fe,-33554432&ye|0,0),fe=0|_(),be=0|yt(0|(ve=0|Mi(0|(le=0|yt(0|we,0|te,33554432,0)),0|_(),26)),0|_(),0|ie,0|be),ie=0|_(),le=0|mt(0|we,0|te,-67108864&le|0,0),_(),ne=0|yt(0|(we=0|Mi(0|(te=0|yt(0|ke,0|se,33554432,0)),0|_(),26)),0|_(),0|oe,0|ne),oe=0|_(),te=0|mt(0|ke,0|se,-67108864&te|0,0),_(),me=0|yt(0|(ke=0|Mi(0|(se=0|yt(0|be,0|ie,16777216,0)),0|_(),25)),0|_(),0|re,0|me),re=0|_(),se=0|mt(0|be,0|ie,-33554432&se|0,0),_(),pe=0|yt(0|(be=0|Mi(0|(ie=0|yt(0|ne,0|oe,16777216,0)),0|_(),25)),0|_(),0|a,0|pe),a=0|_(),ie=0|mt(0|ne,0|oe,-33554432&ie|0,0),_(),ne=0|yt(0|ye,0|fe,0|(ne=0|Oi(0|(oe=0|yt(0|me,0|re,33554432,0)),0|_(),26)),0|_()),_(),oe=0|mt(0|me,0|re,-67108864&oe|0,0),_(),ce=0|yt(0|(me=0|Mi(0|(re=0|yt(0|pe,0|a,33554432,0)),0|_(),26)),0|_(),0|ue,0|ce),ue=0|_(),re=0|mt(0|pe,0|a,-67108864&re|0,0),_(),he=0|yt(0|(pe=0|ji(0|(pe=0|Mi(0|(a=0|yt(0|ce,0|ue,16777216,0)),0|_(),25)),0|_(),19,0)),0|_(),0|de,0|he),de=0|_(),a=0|mt(0|ce,0|ue,-33554432&a|0,0),_(),ce=0|yt(0|ge,0|Ae,0|(ce=0|Oi(0|(ue=0|yt(0|he,0|de,33554432,0)),0|_(),26)),0|_()),_(),ue=0|mt(0|he,0|de,-67108864&ue|0,0),_(),l[e>>2]=ue,l[e+4>>2]=ce,l[e+8>>2]=le,l[e+12>>2]=se,l[e+16>>2]=oe,l[e+20>>2]=ne,l[e+24>>2]=te,l[e+28>>2]=ie,l[e+32>>2]=re,l[e+36>>2]=a}function Y(e,a){e|=0;var r,i,t,n,o,s,c,u,d,h,A,g,p,m,f,y,b,k,w,v,I,B,C,E,Q,x,j,z,D,S,M,q,F,U,R,H,N,G,Y,J,P,L,T,K,$,O,X,V,W,Z,ee=0,ae=0,re=0,ie=0,te=0,ne=0,oe=0,se=0,le=0,ce=0,ue=0,de=0,he=0,Ae=0,ge=0,pe=0,me=0,fe=0,ye=0,be=0,ke=0,we=0,ve=0,Ie=0,_e=0,Be=0,Ce=0,Ee=0,Qe=0,xe=0,je=0,ze=0,De=0,Se=0,Me=0,qe=0,Fe=0,Ue=0,Re=0,He=0,Ne=0,Ge=0,Ye=0,Je=0,Pe=0,Le=0,Te=0,Ke=0,$e=0,Oe=0,Xe=0,Ve=0,We=0,Ze=0,ea=0,aa=0,ra=0,ia=0,ta=0;ge=0|l[(a|=0)>>2],ee=0|l[a+4>>2],oe=0|l[a+8>>2],ne=0|l[a+12>>2],ze=0|l[a+16>>2],he=0|l[a+20>>2],Te=0|l[a+24>>2],ae=0|l[a+28>>2],Ee=0|l[a+32>>2],we=0|l[a+36>>2],V=0|ji(0|ge,((0|ge)<0)<<31>>31|0,0|ge,((0|ge)<0)<<31>>31|0),ta=0|_(),U=0|ji(ge<<1|0,0|(pe=((ge<<1|0)<0)<<31>>31),0|ee,((0|ee)<0)<<31>>31|0),We=0|_(),K=0|ji(0|oe,((0|oe)<0)<<31>>31|0,ge<<1|0,0|pe),T=0|_(),L=0|ji(0|ne,((0|ne)<0)<<31>>31|0,ge<<1|0,0|pe),P=0|_(),N=0|ji(0|ze,((0|ze)<0)<<31>>31|0,ge<<1|0,0|pe),Ze=0|_(),z=0|ji(0|he,((0|he)<0)<<31>>31|0,ge<<1|0,0|pe),$e=0|_(),w=0|ji(0|Te,((0|Te)<0)<<31>>31|0,ge<<1|0,0|pe),Re=0|_(),g=0|ji(0|ae,((0|ae)<0)<<31>>31|0,ge<<1|0,0|pe),Qe=0|_(),s=0|ji(0|Ee,((0|Ee)<0)<<31>>31|0,ge<<1|0,0|pe),ve=0|_(),pe=0|ji(0|we,((0|we)<0)<<31>>31|0,ge<<1|0,0|pe),ge=0|_(),Pe=0|ji(ee<<1|0,0|(le=((ee<<1|0)<0)<<31>>31),0|ee,((0|ee)<0)<<31>>31|0),Le=0|_(),Me=0|ji(ee<<1|0,0|le,0|oe,((0|oe)<0)<<31>>31|0),qe=0|_(),J=0|ji(ne<<1|0,0|(Ae=((ne<<1|0)<0)<<31>>31),ee<<1|0,0|le),Y=0|_(),M=0|ji(0|ze,((0|ze)<0)<<31>>31|0,ee<<1|0,0|le),S=0|_(),v=0|ji(he<<1|0,((he<<1|0)<0)<<31>>31|0,ee<<1|0,0|le),He=0|_(),p=0|ji(0|Te,((0|Te)<0)<<31>>31|0,ee<<1|0,0|le),xe=0|_(),c=0|ji(ae<<1|0,((ae<<1|0)<0)<<31>>31|0,ee<<1|0,0|le),Ie=0|_(),r=0|ji(0|Ee,((0|Ee)<0)<<31>>31|0,ee<<1|0,0|le),me=0|_(),le=0|ji(38*we|0,0|(ke=((38*we|0)<0)<<31>>31),ee<<1|0,0|le),ee=0|_(),G=0|ji(0|oe,((0|oe)<0)<<31>>31|0,0|oe,((0|oe)<0)<<31>>31|0),ea=0|_(),D=0|ji(oe<<1|0,((oe<<1|0)<0)<<31>>31|0,0|ne,((0|ne)<0)<<31>>31|0),Oe=0|_(),I=0|ji(0|ze,((0|ze)<0)<<31>>31|0,oe<<1|0,((oe<<1|0)<0)<<31>>31|0),Ne=0|_(),y=0|ji(0|he,((0|he)<0)<<31>>31|0,oe<<1|0,((oe<<1|0)<0)<<31>>31|0),f=0|_(),A=0|ji(0|Te,((0|Te)<0)<<31>>31|0,oe<<1|0,((oe<<1|0)<0)<<31>>31|0),h=0|_(),i=0|ji(0|ae,((0|ae)<0)<<31>>31|0,oe<<1|0,((oe<<1|0)<0)<<31>>31|0),fe=0|_(),$=0|ji(19*Ee|0,0|(Ue=((19*Ee|0)<0)<<31>>31),oe<<1|0,((oe<<1|0)<0)<<31>>31|0),aa=0|_(),oe=0|ji(38*we|0,0|ke,0|oe,((0|oe)<0)<<31>>31|0),se=0|_(),C=0|ji(ne<<1|0,0|Ae,0|ne,((0|ne)<0)<<31>>31|0),B=0|_(),m=0|ji(ne<<1|0,0|Ae,0|ze,((0|ze)<0)<<31>>31|0),je=0|_(),u=0|ji(he<<1|0,((he<<1|0)<0)<<31>>31|0,ne<<1|0,0|Ae),_e=0|_(),o=0|ji(0|Te,((0|Te)<0)<<31>>31|0,ne<<1|0,0|Ae),n=0|_(),O=0|ji(38*ae|0,0|(be=((38*ae|0)<0)<<31>>31),ne<<1|0,0|Ae),ra=0|_(),q=0|ji(19*Ee|0,0|Ue,ne<<1|0,0|Ae),Xe=0|_(),Ae=0|ji(38*we|0,0|ke,ne<<1|0,0|Ae),ne=0|_(),d=0|ji(0|ze,((0|ze)<0)<<31>>31|0,0|ze,((0|ze)<0)<<31>>31|0),Be=0|_(),t=0|ji(ze<<1|0,((ze<<1|0)<0)<<31>>31|0,0|he,((0|he)<0)<<31>>31|0),ye=0|_(),X=0|ji(19*Te|0,((19*Te|0)<0)<<31>>31|0,ze<<1|0,((ze<<1|0)<0)<<31>>31|0),ia=0|_(),F=0|ji(38*ae|0,0|be,0|ze,((0|ze)<0)<<31>>31|0),Ve=0|_(),E=0|ji(19*Ee|0,0|Ue,ze<<1|0,((ze<<1|0)<0)<<31>>31|0),Ge=0|_(),ze=0|ji(38*we|0,0|ke,0|ze,((0|ze)<0)<<31>>31|0),ie=0|_(),Z=0|ji(38*he|0,((38*he|0)<0)<<31>>31|0,0|he,((0|he)<0)<<31>>31|0),W=0|_(),H=0|ji(19*Te|0,((19*Te|0)<0)<<31>>31|0,he<<1|0,((he<<1|0)<0)<<31>>31|0),R=0|_(),Q=0|ji(38*ae|0,0|be,he<<1|0,((he<<1|0)<0)<<31>>31|0),Ye=0|_(),b=0|ji(19*Ee|0,0|Ue,he<<1|0,((he<<1|0)<0)<<31>>31|0),De=0|_(),he=0|ji(38*we|0,0|ke,he<<1|0,((he<<1|0)<0)<<31>>31|0),re=0|_(),x=0|ji(19*Te|0,((19*Te|0)<0)<<31>>31|0,0|Te,((0|Te)<0)<<31>>31|0),Je=0|_(),k=0|ji(38*ae|0,0|be,0|Te,((0|Te)<0)<<31>>31|0),Se=0|_(),ce=0|ji(19*Ee|0,0|Ue,Te<<1|0,((Te<<1|0)<0)<<31>>31|0),ue=0|_(),Te=0|ji(38*we|0,0|ke,0|Te,((0|Te)<0)<<31>>31|0),te=0|_(),be=0|ji(38*ae|0,0|be,0|ae,((0|ae)<0)<<31>>31|0),de=0|_(),j=0|ji(19*Ee|0,0|Ue,ae<<1|0,((ae<<1|0)<0)<<31>>31|0),Ke=0|_(),a=0|ji(38*we|0,0|ke,ae<<1|0,((ae<<1|0)<0)<<31>>31|0),ae=0|_(),Ue=0|ji(19*Ee|0,0|Ue,0|Ee,((0|Ee)<0)<<31>>31|0),Fe=0|_(),Ee=0|ji(38*we|0,0|ke,0|Ee,((0|Ee)<0)<<31>>31|0),Ce=0|_(),we=0|ji(38*we|0,0|ke,0|we,((0|we)<0)<<31>>31|0),ke=0|_(),ee=0|yt(0|(aa=0|yt(0|(ra=0|yt(0|(ia=0|yt(0|(ta=0|yt(0|Z,0|W,0|V,0|ta)),0|_(),0|X,0|ia)),0|_(),0|O,0|ra)),0|_(),0|$,0|aa)),0|_(),0|le,0|ee),le=0|_(),Le=0|yt(0|K,0|T,0|Pe,0|Le),Pe=0|_(),qe=0|yt(0|L,0|P,0|Me,0|qe),Me=0|_(),re=0|yt(0|(ue=0|yt(0|(de=0|yt(0|(Ze=0|yt(0|(ea=0|yt(0|J,0|Y,0|G,0|ea)),0|_(),0|N,0|Ze)),0|_(),0|be,0|de)),0|_(),0|ce,0|ue)),0|_(),0|he,0|re),he=0|_(),de=0|Mi(0|(ue=0|yt(0|ee,0|le,33554432,0)),0|(ce=0|_()),26),be=0|_(),be=0|yt(0|(se=0|yt(0|(Xe=0|yt(0|(Ve=0|yt(0|(We=0|yt(0|H,0|R,0|U,0|We)),0|_(),0|F,0|Ve)),0|_(),0|q,0|Xe)),0|_(),0|oe,0|se)),0|_(),0|de,0|be),de=0|_(),ce=0|mt(0|ee,0|le,-67108864&ue|0,0|ce),ue=0|_(),se=0|Mi(0|(le=0|yt(0|re,0|he,33554432,0)),0|(ee=0|_()),26),oe=0|_(),oe=0|yt(0|(te=0|yt(0|(Ke=0|yt(0|($e=0|yt(0|(Oe=0|yt(0|M,0|S,0|D,0|Oe)),0|_(),0|z,0|$e)),0|_(),0|j,0|Ke)),0|_(),0|Te,0|te)),0|_(),0|se,0|oe),se=0|_(),ee=0|mt(0|re,0|he,-67108864&le|0,0|ee),le=0|_(),re=0|Mi(0|(he=0|yt(0|be,0|de,16777216,0)),0|_(),25),te=0|_(),te=0|yt(0|(ne=0|yt(0|(Ge=0|yt(0|(Ye=0|yt(0|(Je=0|yt(0|Le,0|Pe,0|x,0|Je)),0|_(),0|Q,0|Ye)),0|_(),0|E,0|Ge)),0|_(),0|Ae,0|ne)),0|_(),0|re,0|te),re=0|_(),he=0|mt(0|be,0|de,-33554432&he|0,0),de=0|_(),ne=0|Mi(0|(be=0|yt(0|oe,0|se,16777216,0)),0|_(),25),Ae=0|_(),Ae=0|yt(0|(ae=0|yt(0|(Fe=0|yt(0|(Re=0|yt(0|(He=0|yt(0|(Ne=0|yt(0|C,0|B,0|I,0|Ne)),0|_(),0|v,0|He)),0|_(),0|w,0|Re)),0|_(),0|Ue,0|Fe)),0|_(),0|a,0|ae)),0|_(),0|ne,0|Ae),ne=0|_(),be=0|mt(0|oe,0|se,-33554432&be|0,0),se=0|_(),ae=0|Mi(0|(oe=0|yt(0|te,0|re,33554432,0)),0|_(),26),a=0|_(),a=0|yt(0|(ie=0|yt(0|(De=0|yt(0|(Se=0|yt(0|qe,0|Me,0|k,0|Se)),0|_(),0|b,0|De)),0|_(),0|ze,0|ie)),0|_(),0|ae,0|a),ae=0|_(),oe=0|mt(0|te,0|re,-67108864&oe|0,0),_(),te=0|Mi(0|(re=0|yt(0|Ae,0|ne,33554432,0)),0|_(),26),ie=0|_(),ie=0|yt(0|(Ce=0|yt(0|(Qe=0|yt(0|(xe=0|yt(0|(je=0|yt(0|y,0|f,0|m,0|je)),0|_(),0|p,0|xe)),0|_(),0|g,0|Qe)),0|_(),0|Ee,0|Ce)),0|_(),0|te,0|ie),te=0|_(),re=0|mt(0|Ae,0|ne,-67108864&re|0,0),_(),le=0|yt(0|(Ae=0|Mi(0|(ne=0|yt(0|a,0|ae,16777216,0)),0|_(),25)),0|_(),0|ee,0|le),ee=0|_(),ne=0|mt(0|a,0|ae,-33554432&ne|0,0),_(),a=0|Mi(0|(ae=0|yt(0|ie,0|te,16777216,0)),0|_(),25),Ae=0|_(),Ae=0|yt(0|(ke=0|yt(0|(ve=0|yt(0|(Ie=0|yt(0|(_e=0|yt(0|(Be=0|yt(0|A,0|h,0|d,0|Be)),0|_(),0|u,0|_e)),0|_(),0|c,0|Ie)),0|_(),0|s,0|ve)),0|_(),0|we,0|ke)),0|_(),0|a,0|Ae),a=0|_(),ae=0|mt(0|ie,0|te,-33554432&ae|0,0),_(),ie=0|yt(0|be,0|se,0|(ie=0|Oi(0|(te=0|yt(0|le,0|ee,33554432,0)),0|_(),26)),0|_()),_(),te=0|mt(0|le,0|ee,-67108864&te|0,0),_(),le=0|Mi(0|(ee=0|yt(0|Ae,0|a,33554432,0)),0|_(),26),se=0|_(),se=0|yt(0|(ge=0|yt(0|(me=0|yt(0|(fe=0|yt(0|(ye=0|yt(0|o,0|n,0|t,0|ye)),0|_(),0|i,0|fe)),0|_(),0|r,0|me)),0|_(),0|pe,0|ge)),0|_(),0|le,0|se),le=0|_(),ee=0|mt(0|Ae,0|a,-67108864&ee|0,0),_(),ue=0|yt(0|(Ae=0|ji(0|(Ae=0|Mi(0|(a=0|yt(0|se,0|le,16777216,0)),0|_(),25)),0|_(),19,0)),0|_(),0|ce,0|ue),ce=0|_(),a=0|mt(0|se,0|le,-33554432&a|0,0),_(),se=0|yt(0|he,0|de,0|(se=0|Oi(0|(le=0|yt(0|ue,0|ce,33554432,0)),0|_(),26)),0|_()),_(),le=0|mt(0|ue,0|ce,-67108864&le|0,0),_(),l[e>>2]=le,l[e+4>>2]=se,l[e+8>>2]=oe,l[e+12>>2]=ne,l[e+16>>2]=te,l[e+20>>2]=ie,l[e+24>>2]=re,l[e+28>>2]=ae,l[e+32>>2]=ee,l[e+36>>2]=a}function J(e,a,r,i){e|=0,i|=0;var t=0,n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0,v=0,I=0,_=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0;!function(e,a){e|=0,a|=0;var r=0,i=0;r=0;do{i=0|Qt(a+(r<<2)|0),l[e+(r<<2)>>2]=i,r=r+1|0}while(16!=(0|r))}(r|=0,a|=0),l[i>>2]=l[e>>2],l[i+4>>2]=l[e+4>>2],l[i+8>>2]=l[e+8>>2],l[i+12>>2]=l[e+12>>2],l[i+16>>2]=l[e+16>>2],l[i+20>>2]=l[e+20>>2],l[i+24>>2]=l[e+24>>2],l[i+28>>2]=l[e+28>>2],y=0,a=0|l[r>>2];do{if(E=0|yn(w=0|l[i+16>>2],6),E=(0|yn(w,11))^E,E^=0|yn(w,25),z=0|l[i+20>>2],x=0|l[i+24>>2],n=(E=a+E+(0|l[32400+(y<<2)>>2])+((x^z)&w^x)+(0|l[i+28>>2])|0)+(0|l[i+12>>2])|0,l[i+12>>2]=n,v=0|yn(B=0|l[i>>2],2),v=(0|yn(B,13))^v,v^=0|yn(B,22),k=0|l[i+4>>2],I=0|l[i+8>>2],l[i+28>>2]=v+E+((I|k)&B|I&k),C=0|yn(n,6),C=(0|yn(n,11))^C,C=(n&(z^w)^z)+x+(C^=0|yn(n,25))+(0|l[r+((m=1|y)<<2)>>2])+(0|l[32400+(m<<2)>>2])|0,l[i+8>>2]=C+I,x=0|yn(v+E+((I|k)&B|I&k)|0,2),x=C+(v+E+((I|k)&B|I&k)&(k|B)|k&B)+((x=(0|yn(v+E+((I|k)&B|I&k)|0,13))^x)^(0|yn(v+E+((I|k)&B|I&k)|0,22)))|0,l[i+24>>2]=x,Q=0|yn(C+I|0,6),Q=(0|yn(C+I|0,11))^Q,Q=(C+I&(n^w)^w)+z+(Q^=0|yn(C+I|0,25))+(0|l[r+((f=2|y)<<2)>>2])+(0|l[32400+(f<<2)>>2])|0,l[i+4>>2]=Q+k,z=0|yn(x,2),z=Q+(x&(v+E+((I|k)&B|I&k)|B)|v+E+((I|k)&B|I&k)&B)+((z=(0|yn(x,13))^z)^(0|yn(x,22)))|0,l[i+20>>2]=z,j=0|yn(Q+k|0,6),j=(0|yn(Q+k|0,11))^j,j=(Q+k&(C+I^n)^n)+w+(j^=0|yn(Q+k|0,25))+(0|l[r+((a=3|y)<<2)>>2])+(0|l[32400+(a<<2)>>2])|0,l[i>>2]=j+B,w=0|yn(z,2),w=j+(z&(x|v+E+((I|k)&B|I&k))|x&v+E+((I|k)&B|I&k))+((w=(0|yn(z,13))^w)^(0|yn(z,22)))|0,l[i+16>>2]=w,_=0|yn(j+B|0,6),_=(0|yn(j+B|0,11))^_,E=(_=(j+B&(Q+k^C+I)^C+I)+n+(_^=0|yn(j+B|0,25))+(0|l[r+((t=4|y)<<2)>>2])+(0|l[32400+(t<<2)>>2])|0)+(v+E+((I|k)&B|I&k))|0,l[i+28>>2]=E,v=0|yn(w,2),v=_+(w&(z|x)|z&x)+((v=(0|yn(w,13))^v)^(0|yn(w,22)))|0,l[i+12>>2]=v,_=0|yn(E,6),_=(0|yn(E,11))^_,_=(E&(j+B^Q+k)^Q+k)+(C+I)+(_^=0|yn(E,25))+(0|l[r+((n=5|y)<<2)>>2])+(0|l[32400+(n<<2)>>2])|0,l[i+24>>2]=_+x,I=0|yn(v,2),I=_+(v&(w|z)|w&z)+((I=(0|yn(v,13))^I)^(0|yn(v,22)))|0,l[i+8>>2]=I,C=0|yn(_+x|0,6),C=(0|yn(_+x|0,11))^C,C=(_+x&(E^j+B)^j+B)+(Q+k)+(C^=0|yn(_+x|0,25))+(0|l[r+((o=6|y)<<2)>>2])+(0|l[32400+(o<<2)>>2])|0,l[i+20>>2]=C+z,k=0|yn(I,2),k=C+(I&(v|w)|v&w)+((k=(0|yn(I,13))^k)^(0|yn(I,22)))|0,l[i+4>>2]=k,Q=0|yn(C+z|0,6),Q=(0|yn(C+z|0,11))^Q,Q=(C+z&(_+x^E)^E)+(j+B)+(Q^=0|yn(C+z|0,25))+(0|l[r+((s=7|y)<<2)>>2])+(0|l[32400+(s<<2)>>2])|0,l[i+16>>2]=Q+w,B=0|yn(k,2),B=Q+(k&(I|v)|I&v)+((B=(0|yn(k,13))^B)^(0|yn(k,22)))|0,l[i>>2]=B,j=0|yn(Q+w|0,6),j=(0|yn(Q+w|0,11))^j,j=(Q+w&(C+z^_+x)^_+x)+E+(j^=0|yn(Q+w|0,25))+(0|l[r+((c=8|y)<<2)>>2])+(0|l[32400+(c<<2)>>2])|0,l[i+12>>2]=j+v,E=0|yn(B,2),E=j+(B&(k|I)|k&I)+((E=(0|yn(B,13))^E)^(0|yn(B,22)))|0,l[i+28>>2]=E,D=0|yn(j+v|0,6),D=(0|yn(j+v|0,11))^D,D=(j+v&(Q+w^C+z)^C+z)+(_+x)+(D^=0|yn(j+v|0,25))+(0|l[r+((u=9|y)<<2)>>2])+(0|l[32400+(u<<2)>>2])|0,l[i+8>>2]=D+I,x=0|yn(E,2),x=D+(E&(B|k)|B&k)+((x=(0|yn(E,13))^x)^(0|yn(E,22)))|0,l[i+24>>2]=x,_=0|yn(D+I|0,6),_=(0|yn(D+I|0,11))^_,_=(D+I&(j+v^Q+w)^Q+w)+(C+z)+(_^=0|yn(D+I|0,25))+(0|l[r+((d=10|y)<<2)>>2])+(0|l[32400+(d<<2)>>2])|0,l[i+4>>2]=_+k,z=0|yn(x,2),z=_+(x&(E|B)|E&B)+((z=(0|yn(x,13))^z)^(0|yn(x,22)))|0,l[i+20>>2]=z,C=0|yn(_+k|0,6),C=(0|yn(_+k|0,11))^C,C=(_+k&(D+I^j+v)^j+v)+(Q+w)+(C^=0|yn(_+k|0,25))+(0|l[r+((h=11|y)<<2)>>2])+(0|l[32400+(h<<2)>>2])|0,l[i>>2]=C+B,w=0|yn(z,2),w=C+(z&(x|E)|x&E)+((w=(0|yn(z,13))^w)^(0|yn(z,22)))|0,l[i+16>>2]=w,Q=0|yn(C+B|0,6),Q=(0|yn(C+B|0,11))^Q,Q=(C+B&(_+k^D+I)^D+I)+(j+v)+(Q^=0|yn(C+B|0,25))+(0|l[r+((A=12|y)<<2)>>2])+(0|l[32400+(A<<2)>>2])|0,l[i+28>>2]=Q+E,v=0|yn(w,2),v=Q+(w&(z|x)|z&x)+((v=(0|yn(w,13))^v)^(0|yn(w,22)))|0,l[i+12>>2]=v,j=0|yn(Q+E|0,6),j=(0|yn(Q+E|0,11))^j,j=(Q+E&(C+B^_+k)^_+k)+(D+I)+(j^=0|yn(Q+E|0,25))+(0|l[r+((g=13|y)<<2)>>2])+(0|l[32400+(g<<2)>>2])|0,l[i+24>>2]=j+x,I=0|yn(v,2),I=j+(v&(w|z)|w&z)+((I=(0|yn(v,13))^I)^(0|yn(v,22)))|0,l[i+8>>2]=I,D=0|yn(j+x|0,6),D=(0|yn(j+x|0,11))^D,D=(j+x&(Q+E^C+B)^C+B)+(_+k)+(D^=0|yn(j+x|0,25))+(0|l[r+((p=14|y)<<2)>>2])+(0|l[32400+(p<<2)>>2])|0,l[i+20>>2]=D+z,k=0|yn(I,2),k=D+(I&(v|w)|v&w)+((k=(0|yn(I,13))^k)^(0|yn(I,22)))|0,l[i+4>>2]=k,_=0|yn(D+z|0,6),_=(0|yn(D+z|0,11))^_,_=(D+z&(j+x^Q+E)^Q+E)+(C+B)+(_^=0|yn(D+z|0,25))+(0|l[r+((b=15|y)<<2)>>2])+(0|l[32400+(b<<2)>>2])|0,l[i+16>>2]=_+w,w=0|yn(k,2),k=_+(k&(I|v)|I&v)+((w=(0|yn(k,13))^w)^(0|yn(k,22)))|0,l[i>>2]=k,48==(0|y))break;j=(D=0|l[r+(p<<2)>>2])>>>10^(j=0|yn(D,17))^(0|yn(D,19)),x=0|l[r+(u<<2)>>2],I=(_=0|l[r+(m<<2)>>2])>>>3^(I=0|yn(_,7))^(0|yn(_,18)),I=j+x+(0|l[r+(y<<2)>>2])+I|0,l[r+((y=y+16|0)<<2)>>2]=I,Q=(j=0|l[r+(b<<2)>>2])>>>10^(Q=0|yn(j,17))^(0|yn(j,19)),B=(E=0|l[r+(m+9<<2)>>2])+_+Q+((C=0|l[r+(m+1<<2)>>2])>>>3^(B=0|yn(C,7))^(0|yn(C,18)))|0,l[r+(m+16<<2)>>2]=B,E=(I=I>>>10^(Q=0|yn(I,17))^(0|yn(I,19)))+(Q=0|l[r+(h<<2)>>2])+C+((_=0|l[r+(a<<2)>>2])>>>3^(E=0|yn(_,7))^(0|yn(_,18)))|0,l[r+(f+16<<2)>>2]=E,B=B>>>10^(C=0|yn(B,17))^(0|yn(B,19)),z=(C=0|l[r+(a+9<<2)>>2])+_+B+((I=0|l[r+(a+1<<2)>>2])>>>3^(z=0|yn(I,7))^(0|yn(I,18)))|0,l[r+(a+16<<2)>>2]=z,_=(a=E>>>10^(a=0|yn(E,17))^(0|yn(E,19)))+(E=0|l[r+(g<<2)>>2])+I+((B=0|l[r+(n<<2)>>2])>>>3^(_=0|yn(B,7))^(0|yn(B,18)))|0,l[r+(t+16<<2)>>2]=_,a=z>>>10^(a=0|yn(z,17))^(0|yn(z,19)),C=(z=0|l[r+(n+9<<2)>>2])+B+a+((I=0|l[r+(n+1<<2)>>2])>>>3^(C=0|yn(I,7))^(0|yn(I,18)))|0,l[r+(n+16<<2)>>2]=C,B=(_=(_>>>10^(a=0|yn(_,17))^(0|yn(_,19)))+j|0)+I+((a=0|l[r+(s<<2)>>2])>>>3^(B=0|yn(a,7))^(0|yn(a,18)))|0,l[r+(o+16<<2)>>2]=B,C=C>>>10^(I=0|yn(C,17))^(0|yn(C,19)),z=(I=0|l[r+(s+9<<2)>>2])+a+C+((_=0|l[r+(s+1<<2)>>2])>>>3^(z=0|yn(_,7))^(0|yn(_,18)))|0,l[r+(s+16<<2)>>2]=z,C=(B=(B=B>>>10^(C=0|yn(B,17))^(0|yn(B,19)))+(0|l[r+(c+9<<2)>>2])|0)+_+((C=0|yn(x,7))^x>>>3^(0|yn(x,18)))|0,l[r+(c+16<<2)>>2]=C,z=z>>>10^(_=0|yn(z,17))^(0|yn(z,19)),a=(_=0|l[r+(u+9<<2)>>2])+x+z+((B=0|l[r+(u+1<<2)>>2])>>>3^(a=0|yn(B,7))^(0|yn(B,18)))|0,l[r+(u+16<<2)>>2]=a,z=(C=(C=C>>>10^(z=0|yn(C,17))^(0|yn(C,19)))+(0|l[r+(d+9<<2)>>2])|0)+B+((z=0|yn(Q,7))^Q>>>3^(0|yn(Q,18)))|0,l[r+(d+16<<2)>>2]=z,a=a>>>10^(B=0|yn(a,17))^(0|yn(a,19)),x=(B=0|l[r+(h+9<<2)>>2])+Q+a+((C=0|l[r+(h+1<<2)>>2])>>>3^(x=0|yn(C,7))^(0|yn(C,18)))|0,l[r+(h+16<<2)>>2]=x,a=(z=(z=z>>>10^(a=0|yn(z,17))^(0|yn(z,19)))+(0|l[r+(A+9<<2)>>2])|0)+C+((a=0|yn(E,7))^E>>>3^(0|yn(E,18)))|0,l[r+(A+16<<2)>>2]=a,x=x>>>10^(C=0|yn(x,17))^(0|yn(x,19)),z=(C=0|l[r+(g+9<<2)>>2])+E+x+((z=0|l[r+(g+1<<2)>>2])>>>3^(Q=0|yn(z,7))^(0|yn(z,18)))|0,l[r+(g+16<<2)>>2]=z,a=a>>>10^(Q=0|yn(a,17))^(0|yn(a,19)),x=(Q=0|l[r+(p+9<<2)>>2])+D+a+((x=0|yn(j,7))^j>>>3^(0|yn(j,18)))|0,l[r+(p+16<<2)>>2]=x,z=z>>>10^(x=0|yn(z,17))^(0|yn(z,19)),D=(x=0|l[r+(b+9<<2)>>2])+j+z+((a=0|l[r+(b+1<<2)>>2])>>>3^(D=0|yn(a,7))^(0|yn(a,18)))|0,l[r+(b+16<<2)>>2]=D}while(y>>>0<64);a=0;do{l[(D=e+(a<<2)|0)>>2]=(0|l[D>>2])+(0|l[i+(a<<2)>>2]),a=a+1|0}while(8!=(0|a))}function P(e,a,r,i,t){e|=0,a|=0,r|=0,i|=0;var n=0,o=0,s=0,l=0,c=0,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0;if(h=0|gi(t|=0),g=0|_(),n=0|gi(t+8|0),o=0|_(),i=0|Li(0|r,0|i,56),t=0|_(),(a+r+(0-(7&r))|0)==(0|a))m=2037671283^n,l=1952801890^o,A=1886610805^h,c=1936682341^g,s=1852075885^n,f=1685025377^o,o=1852142177^h,n=1819895653^g;else for(y=a,m=2037671283^n,l=1952801890^o,A=1886610805^h,d=1936682341^g,c=1852075885^n,s=1685025377^o,o=1852142177^h,n=1819895653^g;;){if(w=(p=0|gi(y))^m,l^=b=0|_(),d=0|yt(0|A,0|d,0|c,0|s),f=0|_(),A=0|vi(c,s,13),c=(0|_())^f,f=0|vi(d,f,32),m=0|_(),h=0|yt(0|w,0|l,0|o,0|n),g=0|_(),m=0|yt((l=0|vi(w,l,16))^h|0,0|(s=(0|_())^g),0|f,0|m),f=0|_(),s=0|vi(l^h,s,21),l=f^(0|_()),g=0|yt(0|h,0|g,A^d|0,0|c),h=0|_(),c=0|vi(A^d,c,17),n=(0|_())^h,h=0|vi(g,h,32),o=0|_(),f=0|yt(c^g|0,0|n,0|m,0|f),d=0|_(),n=0|vi(c^g,n,13),g=(0|_())^d,d=0|vi(f,d,32),c=0|_(),o=0|yt(0|h,0|o,m^s|0,0|l),h=0|_(),c=0|yt((l=0|vi(m^s,l,16))^o|0,0|(s=(0|_())^h),0|d,0|c),d=0|_(),s=0|vi(l^o,s,21),l=d^(0|_()),h=0|yt(n^f|0,0|g,0|o,0|h),o=0|_(),g=0|vi(n^f,g,17),f=(0|_())^o,o=0|vi(h,o,32),n=0|_(),(0|(y=y+8|0))==(a+r+(0-(7&r))|0)){a=a+r+(0-(7&r))|0,m=c^s,A=c^p,c=d^b,s=g^h;break}m=c^s,A=c^p,d^=b,c=g^h,s=f}switch(7&r){case 7:i=0|Li(0|u[a+6>>0],0,48)|i,t=0|_()|t,k=6;break;case 6:k=6;break;case 5:k=7;break;case 4:k=8;break;case 3:k=9;break;case 2:k=10;break;case 1:k=11}return 6==(0|k)&&(w=0|Li(0|u[a+5>>0],0,40),t=0|_()|t,i|=w,k=7),7==(0|k)&&(t=0|u[a+4>>0]|t,k=8),8==(0|k)&&(i|=w=0|Li(0|u[a+3>>0],0,24),t=0|_()|t,k=9),9==(0|k)&&(i|=w=0|Li(0|u[a+2>>0],0,16),t=0|_()|t,k=10),10==(0|k)&&(i|=w=0|Li(0|u[a+1>>0],0,8),t=0|_()|t,k=11),11==(0|k)&&(i=0|i|u[a>>0]),y=i^m,r=t^l,g=0|yt(0|A,0|c,0|s,0|f),p=0|_(),m=0|vi(s,f,13),a=(0|_())^p,p=0|vi(g,p,32),k=0|_(),b=0|yt(0|y,0|r,0|o,0|n),w=0|_(),k=0|yt((f=0|vi(y,r,16))^b|0,0|(r=(0|_())^w),0|p,0|k),p=0|_(),r=0|vi(f^b,r,21),f=p^(0|_()),w=0|yt(0|b,0|w,m^g|0,0|a),b=0|_(),a=0|vi(m^g,a,17),g=(0|_())^b,b=0|vi(w,b,32),m=0|_(),p=0|yt(a^w|0,0|g,0|k,0|p),y=0|_(),g=0|vi(a^w,g,13),w=(0|_())^y,y=0|vi(p,y,32),a=0|_(),m=0|yt(0|b,0|m,k^r|0,0|f),b=0|_(),a=0|yt((f=0|vi(k^r,f,16))^m|0,0|(r=(0|_())^b),0|y,0|a),y=0|_(),r=0|vi(f^m,r,21),f=y^(0|_()),b=0|yt(g^p|0,0|w,0|m,0|b),m=0|_(),w=0|vi(g^p,w,17),p=(0|_())^m,m=0|vi(b,m,32),g=0|_(),y=0|yt(a^i|0,y^t|0,w^b|0,0|p),k=0|_(),p=0|vi(w^b,p,13),b=(0|_())^k,k=0|vi(y,k,32),w=0|_(),g=0|yt(255^m|0,0|g,a^r|0,0|f),m=0|_(),w=0|yt((f=0|vi(a^r,f,16))^g|0,0|(r=(0|_())^m),0|k,0|w),k=0|_(),r=0|vi(f^g,r,21),f=k^(0|_()),m=0|yt(0|g,0|m,p^y|0,0|b),g=0|_(),b=0|vi(p^y,b,17),y=(0|_())^g,g=0|vi(m,g,32),p=0|_(),k=0|yt(b^m|0,0|y,0|w,0|k),a=0|_(),y=0|vi(b^m,y,13),m=(0|_())^a,a=0|vi(k,a,32),b=0|_(),p=0|yt(0|g,0|p,w^r|0,0|f),g=0|_(),b=0|yt((f=0|vi(w^r,f,16))^p|0,0|(r=(0|_())^g),0|a,0|b),a=0|_(),r=0|vi(f^p,r,21),f=a^(0|_()),g=0|yt(y^k|0,0|m,0|p,0|g),p=0|_(),m=0|vi(y^k,m,17),k=(0|_())^p,p=0|vi(g,p,32),y=0|_(),a=0|yt(m^g|0,0|k,0|b,0|a),w=0|_(),k=0|vi(m^g,k,13),g=(0|_())^w,w=0|vi(a,w,32),m=0|_(),y=0|yt(0|p,0|y,b^r|0,0|f),p=0|_(),m=0|yt((f=0|vi(b^r,f,16))^y|0,0|(r=(0|_())^p),0|w,0|m),w=0|_(),r=0|vi(f^y,r,21),f=w^(0|_()),p=0|yt(k^a|0,0|g,0|y,0|p),y=0|_(),g=0|vi(k^a,g,17),a=(0|_())^y,y=0|vi(p,y,32),k=0|_(),w=0|yt(g^p|0,0|a,0|m,0|w),b=0|_(),a=0|vi(g^p,a,13),b=(0|_())^b,k=0|yt(0|y,0|k,m^r|0,0|f),y=0|_(),f=0|vi((f=0|vi(m^r,f,16))^k,(0|_())^y,21),r=0|_(),y=0|yt(a^w|0,0|b,0|k,0|y),k=0|_(),b=0|vi(a^w,b,17),w=0|_(),ii(e,f^y^b^(a=0|vi(y,k,32)),r^k^w^(0|_())),0}function L(e){var a=0,r=0,i=0,t=0,n=0,o=0,s=0,c=0;if(e|=0){a=0|l[8846],c=e+-8+(-8&(r=0|l[e+-4>>2]))|0;do{if(1&r)s=e+-8|0,a=-8&r,o=e+-8|0;else{if(i=0|l[e+-8>>2],!(3&r))return;if(n=i+(-8&r)|0,(o=e+-8+(0-i)|0)>>>0>>0)return;if((0|l[8847])==(0|o)){if(3!=(3&(a=0|l[c+4>>2])|0)){s=o,a=n;break}return l[8844]=n,l[c+4>>2]=-2&a,l[o+4>>2]=1|n,void(l[o+n>>2]=n)}if(i>>>0<256){if(a=0|l[o+8>>2],(0|(e=0|l[o+12>>2]))==(0|a)){l[8842]=l[8842]&~(1<<(i>>>3)),s=o,a=n;break}l[a+12>>2]=e,l[e+8>>2]=a,s=o,a=n;break}t=0|l[o+24>>2],a=0|l[o+12>>2];do{if((0|a)==(0|o)){if(a=0|l[o+16+4>>2])e=o+16+4|0;else{if(!(a=0|l[o+16>>2])){a=0;break}e=o+16|0}for(;;)if(r=0|l[(i=a+20|0)>>2])a=r,e=i;else{if(!(r=0|l[(i=a+16|0)>>2]))break;a=r,e=i}l[e>>2]=0}else s=0|l[o+8>>2],l[s+12>>2]=a,l[a+8>>2]=s}while(0);if(t){if(e=0|l[o+28>>2],(0|l[35672+(e<<2)>>2])==(0|o)){if(l[35672+(e<<2)>>2]=a,!a){l[8843]=l[8843]&~(1<>2])==(0|o)?t+16|0:t+20|0)>>2]=a,!a){s=o,a=n;break}l[a+24>>2]=t,0|(e=0|l[o+16>>2])&&(l[a+16>>2]=e,l[e+24>>2]=a),(e=0|l[o+16+4>>2])?(l[a+20>>2]=e,l[e+24>>2]=a,s=o,a=n):(s=o,a=n)}else s=o,a=n}}while(0);if(!(o>>>0>=c>>>0)&&1&(r=0|l[c+4>>2])){if(2&r)l[c+4>>2]=-2&r,l[s+4>>2]=1|a,l[o+a>>2]=a,t=a;else{if((0|l[8848])==(0|c)){if(c=(0|l[8845])+a|0,l[8845]=c,l[8848]=s,l[s+4>>2]=1|c,(0|s)!=(0|l[8847]))return;return l[8847]=0,void(l[8844]=0)}if((0|l[8847])==(0|c))return c=(0|l[8844])+a|0,l[8844]=c,l[8847]=o,l[s+4>>2]=1|c,void(l[o+c>>2]=c);t=(-8&r)+a|0;do{if(r>>>0<256){if(e=0|l[c+8>>2],(0|(a=0|l[c+12>>2]))==(0|e)){l[8842]=l[8842]&~(1<<(r>>>3));break}l[e+12>>2]=a,l[a+8>>2]=e;break}n=0|l[c+24>>2],a=0|l[c+12>>2];do{if((0|a)==(0|c)){if(a=0|l[c+16+4>>2])e=c+16+4|0;else{if(!(a=0|l[c+16>>2])){e=0;break}e=c+16|0}for(;;)if(r=0|l[(i=a+20|0)>>2])a=r,e=i;else{if(!(r=0|l[(i=a+16|0)>>2]))break;a=r,e=i}l[e>>2]=0,e=a}else e=0|l[c+8>>2],l[e+12>>2]=a,l[a+8>>2]=e,e=a}while(0);if(0|n){if(a=0|l[c+28>>2],(0|l[35672+(a<<2)>>2])==(0|c)){if(l[35672+(a<<2)>>2]=e,!e){l[8843]=l[8843]&~(1<>2])==(0|c)?n+16|0:n+20|0)>>2]=e,!e)break;l[e+24>>2]=n,0|(a=0|l[c+16>>2])&&(l[e+16>>2]=a,l[a+24>>2]=e),0|(a=0|l[c+16+4>>2])&&(l[e+20>>2]=a,l[a+24>>2]=e)}}while(0);if(l[s+4>>2]=1|t,l[o+t>>2]=t,(0|s)==(0|l[8847]))return void(l[8844]=t)}if(r=t>>>3,t>>>0<256)return(a=0|l[8842])&1<>2],e=35408+(r<<1<<2)+8|0):(l[8842]=a|1<>2]=s,l[a+12>>2]=s,l[s+8>>2]=a,void(l[s+12>>2]=35408+(r<<1<<2));a=35672+((i=(a=t>>>8)?t>>>0>16777215?31:t>>>(7+(i=14-((520192+(a<<((a+1048320|0)>>>16&8))|0)>>>16&4|(a+1048320|0)>>>16&8|(245760+(i=a<<((a+1048320|0)>>>16&8)<<((520192+(a<<((a+1048320|0)>>>16&8))|0)>>>16&4))|0)>>>16&2)+(i<<((i+245760|0)>>>16&2)>>>15)|0)|0)&1|i<<1:0)<<2)|0,l[s+28>>2]=i,l[s+20>>2]=0,l[s+16>>2]=0,e=0|l[8843],r=1<>2];a:do{if((-8&l[a+4>>2]|0)!=(0|t)){for(i=t<<(31==(0|i)?0:25-(i>>>1)|0);e=0|l[(r=a+16+(i>>>31<<2)|0)>>2];){if((-8&l[e+4>>2]|0)==(0|t)){a=e;break a}i<<=1,a=e}l[r>>2]=s,l[s+24>>2]=a,l[s+12>>2]=s,l[s+8>>2]=s;break e}}while(0);c=0|l[(o=a+8|0)>>2],l[c+12>>2]=s,l[o>>2]=s,l[s+8>>2]=c,l[s+12>>2]=a,l[s+24>>2]=0}else l[8843]=e|r,l[a>>2]=s,l[s+24>>2]=a,l[s+12>>2]=s,l[s+8>>2]=s}while(0);if(c=(0|l[8850])-1|0,l[8850]=c,!(0|c)){for(a=35824;a=0|l[a>>2];)a=a+8|0;l[8850]=-1}}}}function T(e,a){a|=0;var r=0,i=0,t=0,n=0,o=0,s=0,c=0;r=0|l[4+(e|=0)>>2];do{if(1&r)c=e,r=a;else{if(s=0|l[e>>2],!(3&r))return;if((0|l[8847])==(e+(0-s)|0)){if(3!=(3&(r=0|l[e+a+4>>2])|0)){c=e+(0-s)|0,r=s+a|0;break}return l[8844]=s+a,l[e+a+4>>2]=-2&r,l[e+(0-s)+4>>2]=s+a|1,void(l[e+a>>2]=s+a)}if(s>>>0<256){if(r=0|l[e+(0-s)+8>>2],(0|(i=0|l[e+(0-s)+12>>2]))==(0|r)){l[8842]=l[8842]&~(1<<(s>>>3)),c=e+(0-s)|0,r=s+a|0;break}l[r+12>>2]=i,l[i+8>>2]=r,c=e+(0-s)|0,r=s+a|0;break}o=0|l[e+(0-s)+24>>2],r=0|l[e+(0-s)+12>>2];do{if((0|r)==(e+(0-s)|0)){if(r=0|l[4+(i=e+(0-s)+16|0)>>2])i=i+4|0;else if(!(r=0|l[i>>2])){r=0;break}for(;;)if(t=0|l[(n=r+20|0)>>2])r=t,i=n;else{if(!(t=0|l[(n=r+16|0)>>2]))break;r=t,i=n}l[i>>2]=0}else c=0|l[e+(0-s)+8>>2],l[c+12>>2]=r,l[r+8>>2]=c}while(0);if(o){if(i=0|l[e+(0-s)+28>>2],(0|l[35672+(i<<2)>>2])==(e+(0-s)|0)){if(l[35672+(i<<2)>>2]=r,!r){l[8843]=l[8843]&~(1<>2])==(e+(0-s)|0)?o+16|0:o+20|0)>>2]=r,!r){c=e+(0-s)|0,r=s+a|0;break}l[r+24>>2]=o,0|(i=0|l[e+(0-s)+16>>2])&&(l[r+16>>2]=i,l[i+24>>2]=r),(i=0|l[e+(0-s)+16+4>>2])?(l[r+20>>2]=i,l[i+24>>2]=r,c=e+(0-s)|0,r=s+a|0):(c=e+(0-s)|0,r=s+a|0)}else c=e+(0-s)|0,r=s+a|0}}while(0);if(2&(t=0|l[e+a+4>>2]))l[e+a+4>>2]=-2&t,l[c+4>>2]=1|r,l[c+r>>2]=r,o=r;else{if((0|l[8848])==(e+a|0)){if(a=(0|l[8845])+r|0,l[8845]=a,l[8848]=c,l[c+4>>2]=1|a,(0|c)!=(0|l[8847]))return;return l[8847]=0,void(l[8844]=0)}if((0|l[8847])==(e+a|0))return a=(0|l[8844])+r|0,l[8844]=a,l[8847]=c,l[c+4>>2]=1|a,void(l[c+a>>2]=a);o=(-8&t)+r|0;do{if(t>>>0<256){if(i=0|l[e+a+8>>2],(0|(r=0|l[e+a+12>>2]))==(0|i)){l[8842]=l[8842]&~(1<<(t>>>3));break}l[i+12>>2]=r,l[r+8>>2]=i;break}s=0|l[e+a+24>>2],r=0|l[e+a+12>>2];do{if((0|r)==(e+a|0)){if(r=0|l[e+a+16+4>>2])i=e+a+16+4|0;else{if(!(r=0|l[e+a+16>>2])){i=0;break}i=e+a+16|0}for(;;)if(t=0|l[(n=r+20|0)>>2])r=t,i=n;else{if(!(t=0|l[(n=r+16|0)>>2]))break;r=t,i=n}l[i>>2]=0,i=r}else i=0|l[e+a+8>>2],l[i+12>>2]=r,l[r+8>>2]=i,i=r}while(0);if(0|s){if(r=0|l[e+a+28>>2],(0|l[35672+(r<<2)>>2])==(e+a|0)){if(l[35672+(r<<2)>>2]=i,!i){l[8843]=l[8843]&~(1<>2])==(e+a|0)?s+16|0:s+20|0)>>2]=i,!i)break;l[i+24>>2]=s,0|(r=0|l[e+a+16>>2])&&(l[i+16>>2]=r,l[r+24>>2]=i),0|(r=0|l[e+a+16+4>>2])&&(l[i+20>>2]=r,l[r+24>>2]=i)}}while(0);if(l[c+4>>2]=1|o,l[c+o>>2]=o,(0|c)==(0|l[8847]))return void(l[8844]=o)}if(t=o>>>3,o>>>0<256)return(r=0|l[8842])&1<>2],i=35408+(t<<1<<2)+8|0):(l[8842]=r|1<>2]=c,l[r+12>>2]=c,l[c+8>>2]=r,void(l[c+12>>2]=35408+(t<<1<<2));if(r=35672+((n=(r=o>>>8)?o>>>0>16777215?31:o>>>(7+(n=14-((520192+(r<<((r+1048320|0)>>>16&8))|0)>>>16&4|(r+1048320|0)>>>16&8|(245760+(n=r<<((r+1048320|0)>>>16&8)<<((520192+(r<<((r+1048320|0)>>>16&8))|0)>>>16&4))|0)>>>16&2)+(n<<((n+245760|0)>>>16&2)>>>15)|0)|0)&1|n<<1:0)<<2)|0,l[c+28>>2]=n,l[c+20>>2]=0,l[c+16>>2]=0,!((i=0|l[8843])&(t=1<>2]=c,l[c+24>>2]=r,l[c+12>>2]=c,void(l[c+8>>2]=c);r=0|l[r>>2];e:do{if((-8&l[r+4>>2]|0)!=(0|o)){for(n=o<<(31==(0|n)?0:25-(n>>>1)|0);i=0|l[(t=r+16+(n>>>31<<2)|0)>>2];){if((-8&l[i+4>>2]|0)==(0|o)){r=i;break e}n<<=1,r=i}return l[t>>2]=c,l[c+24>>2]=r,l[c+12>>2]=c,void(l[c+8>>2]=c)}}while(0);a=0|l[(e=r+8|0)>>2],l[a+12>>2]=c,l[e>>2]=c,l[c+8>>2]=a,l[c+12>>2]=r,l[c+24>>2]=0}function K(e,a,r,i,n){e|=0,a|=0,r|=0;var o,s,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,y=0,b=0,k=0,w=0,v=0,I=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0,N=0,G=0,Y=0,J=0,P=0,L=0,T=0,K=0,$=0,O=0,X=0,V=0,W=0,Z=0,ee=0,ae=0,re=0,ie=0,te=0,ne=0,oe=0,se=0,le=0,ce=0,ue=0,de=0,he=0,Ae=0;if(s=f,o=f=f+63&-64,f=f+64|0,!(0==(0|(i|=0))&0==(0|(n|=0)))){for(L=0|l[e>>2],D=0|l[e+4>>2],S=0|l[e+8>>2],M=0|l[e+12>>2],q=0|l[e+16>>2],F=0|l[e+20>>2],U=0|l[e+24>>2],R=0|l[e+28>>2],H=0|l[e+32>>2],N=0|l[e+36>>2],G=0|l[e+40>>2],Y=0|l[e+44>>2],J=0|l[e+56>>2],P=0|l[e+60>>2],c=0,x=0|l[e+52>>2],E=0|l[e+48>>2],j=n,z=i;;){if(Q=j>>>0<0|0==(0|j)&z>>>0<64){i=(n=o)+64|0;do{l[n>>2]=0,n=n+4|0}while((0|n)<(0|i));n=0;do{t[o+n>>0]=0|t[a+n>>0],n=n+1|0}while(j>>>0>0|0==(0|j)&z>>>0>n>>>0);c=r,a=o,r=o}n=L,i=D,u=S,d=M,h=q,A=F,g=U,p=R,m=H,y=N,b=G,k=P,w=J,v=x,I=E,B=Y,C=20;do{X=0|mn((ee=0|mn((he=0|mn((Z=(ee=0|mn((de=n+h|0)^I,16))+m|0)^h,12))+de^ee,8))+Z^he,7),Ae=0|mn(($=0|mn((le=0|mn((K=($=0|mn((se=i+A|0)^v,16))+y|0)^A,12))+se^$,8))+K^le,7),ce=0|mn((O=0|mn((ie=0|mn((ae=(O=0|mn((re=u+g|0)^w,16))+b|0)^g,12))+re^O,8))+ae^ie,7),te=0|mn((ne=0|mn((W=0|mn((T=(ne=0|mn((V=d+p|0)^k,16))+B|0)^p,12))+V^ne,8))+T^W,7),A=0|mn((b=(k=0|mn((n=(oe=0|mn((ue=0|mn(ne^Ae+(he+de),16))+(O+ae)^Ae,12))+(Ae+(he+de))|0)^ue,8))+(ue+(O+ae))|0)^oe,7),g=0|mn((B=(I=0|mn((i=(ae=0|mn((oe=0|mn(ce+(le+se)^ee,16))+(ne+T)^ce,12))+(ce+(le+se))|0)^oe,8))+(oe+(ne+T))|0)^ae,7),p=0|mn((m=(v=0|mn((u=(T=0|mn((ae=0|mn(te+(ie+re)^$,16))+(ee+Z)^te,12))+(te+(ie+re))|0)^ae,8))+(ae+(ee+Z))|0)^T,7),h=0|mn((y=(w=0|mn((d=(T=0|mn((O=0|mn(W+V+X^O,16))+($+K)^X,12))+(W+V+X)|0)^O,8))+(O+($+K))|0)^T,7),C=C+-2|0}while(0!=(0|C));if(W=(0|Pt(a))^n+L,Z=(0|Pt(a+4|0))^i+D,ee=(0|Pt(a+8|0))^u+S,ae=(0|Pt(a+12|0))^d+M,re=(0|Pt(a+16|0))^h+q,ie=(0|Pt(a+20|0))^A+F,te=(0|Pt(a+24|0))^g+U,ne=(0|Pt(a+28|0))^p+R,oe=(0|Pt(a+32|0))^m+H,se=(0|Pt(a+36|0))^y+N,le=(0|Pt(a+40|0))^b+G,ce=(0|Pt(a+44|0))^B+Y,ue=(0|Pt(a+48|0))^I+E,de=(0|Pt(a+52|0))^v+x,he=(0|Pt(a+56|0))^w+J,Ae=(0|Pt(a+60|0))^k+P,n=x+(0==(0|(i=E+1|0))&1)|0,_t(r,W),_t(r+4|0,Z),_t(r+8|0,ee),_t(r+12|0,ae),_t(r+16|0,re),_t(r+20|0,ie),_t(r+24|0,te),_t(r+28|0,ne),_t(r+32|0,oe),_t(r+36|0,se),_t(r+40|0,le),_t(r+44|0,ce),_t(r+48|0,ue),_t(r+52|0,de),_t(r+56|0,he),_t(r+60|0,Ae),j>>>0<0|0==(0|j)&z>>>0<65)break;Ae=0|yt(0|z,0|j,-64,-1),a=a+64|0,r=r+64|0,x=n,E=i,j=0|_(),z=Ae}if(Q&&0|z){a=0;do{t[c+a>>0]=0|t[r+a>>0],a=a+1|0}while((0|a)!=(0|z))}l[e+48>>2]=i,l[e+52>>2]=n}f=s}function $(e,a,r,i){a|=0,r|=0,i|=0;var n,o,s,c,u,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0,v=0,I=0,B=0,C=0;if(c=0==(0|t[80+(e|=0)>>0])?16777216:0,u=0|l[e+4>>2],n=0|l[e+8>>2],o=0|l[e+12>>2],s=0|l[e+16>>2],p=0|l[e+20>>2],g=0|l[e+24>>2],A=0|l[e+28>>2],h=0|l[e+32>>2],d=0|l[e+36>>2],i>>>0>0|0==(0|i)&r>>>0>15)for(b=0|l[e>>2],f=r;;){if(B=(67108863&(0|Pt(a)))+p|0,C=((0|Pt(a+3|0))>>>2&67108863)+g|0,I=((0|Pt(a+6|0))>>>4&67108863)+A|0,v=((0|Pt(a+9|0))>>>6)+h|0,p=((0|Pt(a+12|0))>>>8|c)+d|0,d=0|ji(0|B,0,0|b,0),r=0|_(),A=0|yt(0|(r=0|yt(0|(A=0|yt(0|(r=0|yt(0|(A=0|ji(0|C,0,5*s|0,0)),0|_(),0|d,0|r)),0|(d=0|_()),0|(A=0|ji(0|I,0,5*o|0,0)),0|_())),0|(d=0|_()),0|(r=0|ji(0|v,0,5*n|0,0)),0|_())),0|(d=0|_()),0|(A=0|ji(0|p,0,5*u|0,0)),0|_()),d=0|_(),r=0|ji(0|B,0,0|u,0),m=0|_(),w=0|yt(0|(m=0|yt(0|(w=0|yt(0|(m=0|yt(0|(w=0|ji(0|C,0,0|b,0)),0|_(),0|r,0|m)),0|(r=0|_()),0|(w=0|ji(0|I,0,5*s|0,0)),0|_())),0|(r=0|_()),0|(m=0|ji(0|v,0,5*o|0,0)),0|_())),0|(r=0|_()),0|(w=0|ji(0|p,0,5*n|0,0)),0|_()),r=0|_(),m=0|ji(0|B,0,0|n,0),y=0|_(),k=0|yt(0|(y=0|yt(0|(k=0|yt(0|(y=0|yt(0|(k=0|ji(0|C,0,0|u,0)),0|_(),0|m,0|y)),0|(m=0|_()),0|(k=0|ji(0|I,0,0|b,0)),0|_())),0|(m=0|_()),0|(y=0|ji(0|v,0,5*s|0,0)),0|_())),0|(m=0|_()),0|(k=0|ji(0|p,0,5*o|0,0)),0|_()),m=0|_(),y=0|ji(0|B,0,0|o,0),h=0|_(),g=0|yt(0|(h=0|yt(0|(g=0|yt(0|(h=0|yt(0|(g=0|ji(0|C,0,0|n,0)),0|_(),0|y,0|h)),0|(y=0|_()),0|(g=0|ji(0|I,0,0|u,0)),0|_())),0|(y=0|_()),0|(h=0|ji(0|v,0,0|b,0)),0|_())),0|(y=0|_()),0|(g=0|ji(0|p,0,5*s|0,0)),0|_()),y=0|_(),h=0|ji(0|B,0,0|s,0),B=0|_(),p=0|yt(0|(v=0|yt(0|(I=0|yt(0|(B=0|yt(0|(C=0|ji(0|C,0,0|o,0)),0|_(),0|h,0|B)),0|(h=0|_()),0|(I=0|ji(0|I,0,0|n,0)),0|_())),0|(h=0|_()),0|(v=0|ji(0|v,0,0|u,0)),0|_())),0|(h=0|_()),0|(p=0|ji(0|p,0,0|b,0)),0|_()),h=0|_(),d=0|Oi(0|A,0|d,26),_(),r=0|Oi(0|(d=0|yt(0|w,0|r,0|d,0)),0|_(),26),_(),m=0|Oi(0|(r=0|yt(0|k,0|m,0|r,0)),0|_(),26),_(),y=0|Oi(0|(m=0|yt(0|g,0|y,0|m,0)),0|_(),26),_(),h=0|Oi(0|(y=0|yt(0|p,0|h,0|y,0)),0|_(),26),_(),f=0|yt(0|f,0|i,-16,-1),!((i=0|_())>>>0>0|0==(0|i)&f>>>0>15)){p=(5*h|0)+(67108863&A)&67108863,g=(((5*h|0)+(67108863&A)|0)>>>26)+(67108863&d)|0,A=67108863&r,h=67108863&m,d=67108863&y;break}p=(5*h|0)+(67108863&A)&67108863,g=(((5*h|0)+(67108863&A)|0)>>>26)+(67108863&d)|0,A=67108863&r,h=67108863&m,d=67108863&y,a=a+16|0}l[e+20>>2]=p,l[e+24>>2]=g,l[e+28>>2]=A,l[e+32>>2]=h,l[e+36>>2]=d}function O(e,a){e|=0;var r=0,i=0,n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0,v=0,I=0,B=0;u=0|Er(a|=0),c=0|_(),v=0|Li(0|(v=0|Qi(0|t[a+4>>0],0|t[a+5>>0],0|t[a+6>>0])),0|_(),6),I=0|_(),s=0|Li(0|(s=0|Qi(0|t[a+7>>0],0|t[a+8>>0],0|t[a+9>>0])),0|_(),5),o=0|_(),k=0|Li(0|(k=0|Qi(0|t[a+10>>0],0|t[a+11>>0],0|t[a+12>>0])),0|_(),3),w=0|_(),n=0|Li(0|(n=0|Qi(0|t[a+13>>0],0|t[a+14>>0],0|t[a+15>>0])),0|_(),2),i=0|_(),y=0|Er(a+16|0),b=0|_(),d=0|Li(0|(d=0|Qi(0|t[a+20>>0],0|t[a+21>>0],0|t[a+22>>0])),0|_(),7),r=0|_(),h=0|Li(0|(h=0|Qi(0|t[a+23>>0],0|t[a+24>>0],0|t[a+25>>0])),0|_(),5),f=0|_(),A=0|Li(0|(A=0|Qi(0|t[a+26>>0],0|t[a+27>>0],0|t[a+28>>0])),0|_(),4),g=0|_(),p=0|Li(0|(p=0|Qi(0|t[a+29>>0],0|t[a+30>>0],0|t[a+31>>0])),0|_(),2),_(),B=0|mt(0,0,0|(B=0|Oi(0|(m=0|yt(33554428&p|0,0,16777216,0)),0|_(),25)),0|_()),_(),c=0|yt(19&B|0,0,0|u,0|c),u=0|_(),m=0|mt(33554428&p|0,0,33554432&m|0,0),p=0|_(),o=0|yt(0|(a=0|Mi(0|(B=0|yt(0|v,0|I,16777216,0)),0|_(),25)),0|_(),0|s,0|o),s=0|_(),B=0|mt(0|v,0|I,-33554432&B|0,0),I=0|_(),i=0|yt(0|(a=0|Mi(0|(v=0|yt(0|k,0|w,16777216,0)),0|_(),25)),0|_(),0|n,0|i),n=0|_(),v=0|mt(0|k,0|w,-33554432&v|0,0),w=0|_(),a=0|yt(0|d,0|r,0|(a=0|Mi(0|(k=0|yt(0|y,0|b,16777216,0)),0|_(),25)),0|_()),r=0|_(),k=0|mt(0|y,0|b,-33554432&k|0,0),b=0|_(),g=0|yt(0|(d=0|Mi(0|(y=0|yt(0|h,0|f,16777216,0)),0|_(),25)),0|_(),0|A,0|g),A=0|_(),y=0|mt(0|h,0|f,-33554432&y|0,0),f=0|_(),d=0|yt(0|B,0|I,0|(d=0|Oi(0|(h=0|yt(0|c,0|u,33554432,0)),0|_(),26)),0|_()),_(),h=0|mt(0|c,0|u,-67108864&h|0,0),_(),c=0|yt(0|v,0|w,0|(c=0|Oi(0|(u=0|yt(0|o,0|s,33554432,0)),0|_(),26)),0|_()),_(),u=0|mt(0|o,0|s,-67108864&u|0,0),_(),o=0|yt(0|k,0|b,0|(o=0|Oi(0|(s=0|yt(0|i,0|n,33554432,0)),0|_(),26)),0|_()),_(),s=0|mt(0|i,0|n,-67108864&s|0,0),_(),i=0|yt(0|y,0|f,0|(i=0|Oi(0|(n=0|yt(0|a,0|r,33554432,0)),0|_(),26)),0|_()),_(),n=0|mt(0|a,0|r,-67108864&n|0,0),_(),a=0|yt(0|m,0|p,0|(a=0|Oi(0|(r=0|yt(0|g,0|A,33554432,0)),0|_(),26)),0|_()),_(),r=0|mt(0|g,0|A,-67108864&r|0,0),_(),l[e>>2]=h,l[e+4>>2]=d,l[e+8>>2]=u,l[e+12>>2]=c,l[e+16>>2]=s,l[e+20>>2]=o,l[e+24>>2]=n,l[e+28>>2]=i,l[e+32>>2]=r,l[e+36>>2]=a}function X(e,a){e|=0;var r=0,i=0,t=0,n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0,v=0,I=0;c=0|l[(a|=0)>>2],w=0|l[a+4>>2],o=0|l[a+8>>2],b=0|l[a+12>>2],t=0|l[a+16>>2],f=0|l[a+20>>2],r=0|l[a+24>>2],d=0|l[a+28>>2],h=0|l[a+32>>2],I=0|l[a+36>>2],c=0|ji(0|c,((0|c)<0)<<31>>31|0,121666,0),s=0|_(),w=0|ji(0|w,((0|w)<0)<<31>>31|0,121666,0),v=0|_(),o=0|ji(0|o,((0|o)<0)<<31>>31|0,121666,0),n=0|_(),b=0|ji(0|b,((0|b)<0)<<31>>31|0,121666,0),k=0|_(),t=0|ji(0|t,((0|t)<0)<<31>>31|0,121666,0),i=0|_(),f=0|ji(0|f,((0|f)<0)<<31>>31|0,121666,0),y=0|_(),r=0|ji(0|r,((0|r)<0)<<31>>31|0,121666,0),a=0|_(),d=0|ji(0|d,((0|d)<0)<<31>>31|0,121666,0),m=0|_(),h=0|ji(0|h,((0|h)<0)<<31>>31|0,121666,0),A=0|_(),s=0|yt(0|(u=0|ji(0|(u=0|Mi(0|(p=0|yt(0|(I=0|ji(0|I,((0|I)<0)<<31>>31|0,121666,0)),0|(g=0|_()),16777216,0)),0|_(),25)),0|_(),19,0)),0|_(),0|c,0|s),c=0|_(),p=0|mt(0|I,0|g,-33554432&p|0,0),g=0|_(),n=0|yt(0|(u=0|Mi(0|(I=0|yt(0|w,0|v,16777216,0)),0|_(),25)),0|_(),0|o,0|n),o=0|_(),I=0|mt(0|w,0|v,-33554432&I|0,0),v=0|_(),i=0|yt(0|(u=0|Mi(0|(w=0|yt(0|b,0|k,16777216,0)),0|_(),25)),0|_(),0|t,0|i),t=0|_(),w=0|mt(0|b,0|k,-33554432&w|0,0),k=0|_(),a=0|yt(0|(u=0|Mi(0|(b=0|yt(0|f,0|y,16777216,0)),0|_(),25)),0|_(),0|r,0|a),r=0|_(),b=0|mt(0|f,0|y,-33554432&b|0,0),y=0|_(),A=0|yt(0|(u=0|Mi(0|(f=0|yt(0|d,0|m,16777216,0)),0|_(),25)),0|_(),0|h,0|A),h=0|_(),f=0|mt(0|d,0|m,-33554432&f|0,0),m=0|_(),u=0|yt(0|I,0|v,0|(u=0|Oi(0|(d=0|yt(0|s,0|c,33554432,0)),0|_(),26)),0|_()),_(),d=0|mt(0|s,0|c,-67108864&d|0,0),_(),s=0|yt(0|w,0|k,0|(s=0|Oi(0|(c=0|yt(0|n,0|o,33554432,0)),0|_(),26)),0|_()),_(),c=0|mt(0|n,0|o,-67108864&c|0,0),_(),n=0|yt(0|b,0|y,0|(n=0|Oi(0|(o=0|yt(0|i,0|t,33554432,0)),0|_(),26)),0|_()),_(),o=0|mt(0|i,0|t,-67108864&o|0,0),_(),i=0|yt(0|f,0|m,0|(i=0|Oi(0|(t=0|yt(0|a,0|r,33554432,0)),0|_(),26)),0|_()),_(),t=0|mt(0|a,0|r,-67108864&t|0,0),_(),a=0|yt(0|p,0|g,0|(a=0|Oi(0|(r=0|yt(0|A,0|h,33554432,0)),0|_(),26)),0|_()),_(),r=0|mt(0|A,0|h,-67108864&r|0,0),_(),l[e>>2]=d,l[e+4>>2]=u,l[e+8>>2]=c,l[e+12>>2]=s,l[e+16>>2]=o,l[e+20>>2]=n,l[e+24>>2]=t,l[e+28>>2]=i,l[e+32>>2]=r,l[e+36>>2]=a}function V(e,a,r,i,t){e|=0,r|=0,i|=0,t|=0;var n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0;if(!(a|=0))return i?t?(l[t>>2]=0|e,l[t+4>>2]=0&a,t=0,0|(I(0|(i=0)),t)):(t=0,0|(I(0|(i=0)),t)):(0|t&&(l[t>>2]=(e>>>0)%(r>>>0),l[t+4>>2]=0),t=(e>>>0)/(r>>>0)>>>0,0|(I(0|(i=0)),t));do{if(r){if(0|i){if((o=(0|k(0|i))-(0|k(0|a))|0)>>>0<=31){A=o+1|0,s=e>>>((o+1|0)>>>0)&o-31>>31|a<<31-o,h=a>>>((o+1|0)>>>0)&o-31>>31,n=0,o=e<<31-o;break}return t?(l[t>>2]=0|e,l[t+4>>2]=a|0&a,t=0,0|(I(0|(i=0)),t)):(t=0,0|(I(0|(i=0)),t))}if(r-1&r|0){A=o=33+(0|k(0|r))-(0|k(0|a))|0,s=32-o-1>>31&a>>>((o-32|0)>>>0)|(a<<32-o|e>>>(o>>>0))&o-32>>31,h=o-32>>31&a>>>(o>>>0),n=e<<64-o&32-o>>31,o=(a<<64-o|e>>>((o-32|0)>>>0))&32-o>>31|e<<32-o&o-33>>31;break}return 0|t&&(l[t>>2]=r-1&e,l[t+4>>2]=0),1==(0|r)?(t=0|e,0|(I(0|(i=a|0&a)),t)):(i=a>>>((t=0|un(0|r))>>>0)|0,t=a<<32-t|e>>>(t>>>0)|0,0|(I(0|i),t))}if(!i)return 0|t&&(l[t>>2]=(a>>>0)%(r>>>0),l[t+4>>2]=0),t=(a>>>0)/(r>>>0)>>>0,0|(I(0|(i=0)),t);if(!e)return 0|t&&(l[t>>2]=0,l[t+4>>2]=(a>>>0)%(i>>>0)),t=(a>>>0)/(i>>>0)>>>0,0|(I(0|(r=0)),t);if(!(i-1&i))return 0|t&&(l[t>>2]=0|e,l[t+4>>2]=i-1&a|0&a),r=0,t=a>>>((0|un(0|i))>>>0),0|(I(0|r),t);if((o=(0|k(0|i))-(0|k(0|a))|0)>>>0<=30){A=o+1|0,s=a<<31-o|e>>>((o+1|0)>>>0),h=a>>>((o+1|0)>>>0),n=0,o=e<<31-o;break}return t?(l[t>>2]=0|e,l[t+4>>2]=a|0&a,t=0,0|(I(0|(i=0)),t)):(t=0,0|(I(0|(i=0)),t))}while(0);if(A){u=0|yt(0|r,i|0&i|0,-1,-1),d=0|_(),c=o,a=h,e=A,o=0;do{p=c,c=n>>>31|c<<1,n=o|n<<1,mt(0|u,0|d,0|(p=s<<1|p>>>31|0),0|(g=s>>>31|a<<1|0)),o=1&(h=(A=0|_())>>31|((0|A)<0?-1:0)<<1),s=0|mt(0|p,0|g,h&(0|r)|0,(((0|A)<0?-1:0)>>31|((0|A)<0?-1:0)<<1)&(i|0&i)|0),a=0|_(),e=e-1|0}while(0!=(0|e));e=0}else c=o,a=h,e=0,o=0;return 0|t&&(l[t>>2]=s,l[t+4>>2]=a),p=-2&(n<<1|0)|o,0|(I(0|(g=(0|n)>>>31|c<<1|0&(0|n>>>31)|e)),p)}function W(e,a,r){e|=0,a|=0;var i,n,o=0,s=0,l=0;if(n=f,i=f=f+63&-64,f=f+64|0,(r|=0)<<24>>24&&(255&r)<=64){if(0|function(e,a){return 1&(0!=(0|(e|=0))|0!=(0|(a|=0)))|0}(u[e+80>>0]|u[e+80+1>>0]<<8|u[e+80+2>>0]<<16|u[e+80+3>>0]<<24,u[e+80+4>>0]|u[e+80+4+1>>0]<<8|u[e+80+4+2>>0]<<16|u[e+80+4+3>>0]<<24))o=-1;else{o=u[e+352>>0]|u[e+352+1>>0]<<8|u[e+352+2>>0]<<16|u[e+352+3>>0]<<24;do{if(o>>>0>128){if(He(e,128,0),D(e,e+96|0),o=(u[e+352>>0]|u[e+352+1>>0]<<8|u[e+352+2>>0]<<16|u[e+352+3>>0]<<24)-128|0,t[e+352>>0]=o,t[e+352+1>>0]=o>>8,t[e+352+2>>0]=o>>16,t[e+352+3>>0]=o>>24,o>>>0<129){Ee(e+96|0,e+224|0,0|o),s=e+96|0,l=u[e+352>>0]|u[e+352+1>>0]<<8|u[e+352+2>>0]<<16|u[e+352+3>>0]<<24;break}C(33897,33929,306,33974)}else s=e+96|0,l=o}while(0);He(e,l,0),function(e){0|t[356+(e|=0)>>0]&&function(e){t[88+(e|=0)>>0]=-1,t[e+88+1>>0]=-1,t[e+88+2>>0]=-1,t[e+88+3>>0]=-1,t[e+88+4>>0]=-1,t[e+88+4+1>>0]=-1,t[e+88+4+2>>0]=-1,t[e+88+4+3>>0]=-1}(e),t[e+80>>0]=-1,t[e+80+1>>0]=-1,t[e+80+2>>0]=-1,t[e+80+3>>0]=-1,t[e+80+4>>0]=-1,t[e+80+4+1>>0]=-1,t[e+80+4+2>>0]=-1,t[e+80+4+3>>0]=-1}(e),la(e+96+(o=u[e+352>>0]|u[e+352+1>>0]<<8|u[e+352+2>>0]<<16|u[e+352+3>>0]<<24)|0,0,256-o|0),D(e,s),ii(i,u[e>>0]|u[e+1>>0]<<8|u[e+2>>0]<<16|u[e+3>>0]<<24,u[e+4>>0]|u[e+4+1>>0]<<8|u[e+4+2>>0]<<16|u[e+4+3>>0]<<24),ii(i+8|0,u[e+8>>0]|u[e+8+1>>0]<<8|u[e+8+2>>0]<<16|u[e+8+3>>0]<<24,u[e+8+4>>0]|u[e+8+4+1>>0]<<8|u[e+8+4+2>>0]<<16|u[e+8+4+3>>0]<<24),ii(i+16|0,u[e+16>>0]|u[e+16+1>>0]<<8|u[e+16+2>>0]<<16|u[e+16+3>>0]<<24,u[e+16+4>>0]|u[e+16+4+1>>0]<<8|u[e+16+4+2>>0]<<16|u[e+16+4+3>>0]<<24),ii(i+24|0,u[e+24>>0]|u[e+24+1>>0]<<8|u[e+24+2>>0]<<16|u[e+24+3>>0]<<24,u[e+24+4>>0]|u[e+24+4+1>>0]<<8|u[e+24+4+2>>0]<<16|u[e+24+4+3>>0]<<24),ii(i+32|0,u[e+32>>0]|u[e+32+1>>0]<<8|u[e+32+2>>0]<<16|u[e+32+3>>0]<<24,u[e+32+4>>0]|u[e+32+4+1>>0]<<8|u[e+32+4+2>>0]<<16|u[e+32+4+3>>0]<<24),ii(i+40|0,u[e+40>>0]|u[e+40+1>>0]<<8|u[e+40+2>>0]<<16|u[e+40+3>>0]<<24,u[e+40+4>>0]|u[e+40+4+1>>0]<<8|u[e+40+4+2>>0]<<16|u[e+40+4+3>>0]<<24),ii(i+48|0,u[e+48>>0]|u[e+48+1>>0]<<8|u[e+48+2>>0]<<16|u[e+48+3>>0]<<24,u[e+48+4>>0]|u[e+48+4+1>>0]<<8|u[e+48+4+2>>0]<<16|u[e+48+4+3>>0]<<24),ii(i+56|0,u[e+56>>0]|u[e+56+1>>0]<<8|u[e+56+2>>0]<<16|u[e+56+3>>0]<<24,u[e+56+4>>0]|u[e+56+4+1>>0]<<8|u[e+56+4+2>>0]<<16|u[e+56+4+3>>0]<<24),Ee(0|a,0|i,255&r|0),Hr(e,64),Hr(s,256),o=0}return f=n,0|o}return ao(),0}function Z(e){var a,r,i=0,t=0,n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,y=0,b=0,k=0,w=0,v=0,I=0,_=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0;a=f,r=f=f+63&-64,f=f+64|0,rt(r,e|=0),i=0,n=0|l[r+28>>2],o=0|l[r>>2],s=0|l[r+48>>2],c=0|l[r+16>>2],u=0|l[r+32>>2],d=0|l[r+20>>2],t=0|l[r+4>>2],h=0|l[r+36>>2],A=0|l[r+52>>2],g=0|l[r+40>>2],p=0|l[r+24>>2],m=0|l[r+56>>2],y=0|l[r+8>>2],b=0|l[r+60>>2],k=0|l[r+44>>2],w=0|l[r+12>>2];do{j=((U=((_=((_=(E=((E=t+d|0)<<7|E>>>25)^h)+d|0)<<9|_>>>23)^A)+E<<13|(_+E|0)>>>19)^t)+_<<18|(U+_|0)>>>14)^d,C=((D=((F=((F=(I=((I=p+g|0)<<7|I>>>25)^m)+g|0)<<9|F>>>23)^y)+I<<13|(F+I|0)>>>19)^p)+F<<18|(D+F|0)>>>14)^g,v=((x=((S=((S=(q=((q=k+b|0)<<7|q>>>25)^w)+b|0)<<9|S>>>23)^n)+q<<13|(S+q|0)>>>19)^k)+S<<18|(x+S|0)>>>14)^b,o=((q=(w=((F=(y=((U=(t=(q+(M=((B=((Q=((Q=(z=((z=s+o|0)<<7|z>>>25)^c)+o|0)<<9|Q>>>23)^u)+z<<13|(Q+z|0)>>>19)^s)+Q<<18|(B+Q|0)>>>14)^o)<<7|(q+M|0)>>>25)^U)+M|0)<<9|U>>>23)^F)+t|0)<<13|F>>>19)^q)+y|0)<<18|q>>>14)^M,d=((z=(c=((D=(n=S^((D=(p=D^(j+z<<7|(j+z|0)>>>25))+j|0)<<9|D>>>23))+p|0)<<13|D>>>19)^z)+n|0)<<18|z>>>14)^j,g=((E=(h=((Q=(u=((x=(k=x^(C+E<<7|(C+E|0)>>>25))+C|0)<<9|x>>>23)^Q)+k|0)<<13|Q>>>19)^E)+u|0)<<18|E>>>14)^C,b=((I=(m=((_=(A=((B=(s=(v+I<<7|(v+I|0)>>>25)^B)+v|0)<<9|B>>>23)^_)+s|0)<<13|_>>>19)^I)+A|0)<<18|I>>>14)^v,i=i+2|0}while(i>>>0<8);for(l[r>>2]=o,l[r+48>>2]=s,l[r+16>>2]=c,l[r+32>>2]=u,l[r+20>>2]=d,l[r+4>>2]=t,l[r+36>>2]=h,l[r+52>>2]=A,l[r+40>>2]=g,l[r+24>>2]=p,l[r+56>>2]=m,l[r+8>>2]=y,l[r+60>>2]=b,l[r+44>>2]=k,l[r+12>>2]=w,l[r+28>>2]=n,l[e>>2]=(0|l[e>>2])+o,i=1;l[(U=e+(i<<2)|0)>>2]=(0|l[U>>2])+t,16!=(0|(i=i+1|0));)t=0|l[r+(i<<2)>>2];f=a}function ee(e,a,r,i,t){e|=0,a|=0,r|=0,t|=0;var n,o,s,l,c,u,d,h,A,g,p,m,f=0,y=0,b=0,k=0,w=0,v=0,I=0,_=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0,N=0,G=0,Y=0,J=0,P=0,L=0,T=0,K=0,$=0,O=0,X=0;(i|=0)?(M=0|Pt(i),D=0|Pt(i+4|0),S=0|Pt(i+8|0),z=0|Pt(i+12|0)):(D=857760878,S=2036477234,M=1634760805,z=1797285236),u=0|Pt(r),d=0|Pt(r+4|0),h=0|Pt(r+8|0),A=0|Pt(r+12|0),g=0|Pt(r+16|0),p=0|Pt(r+20|0),m=0|Pt(r+24|0),o=0|Pt(r+28|0),s=0|Pt(a),l=0|Pt(a+4|0),c=0|Pt(a+8|0),n=0|Pt(a+12|0),i=u,r=d,a=h,f=A,y=s,b=l,k=c,w=n,v=g,I=o,_=m,B=p,C=0,E=D,Q=S,x=z,j=M;do{K=(0|mn((R=(0|mn((G=(0|mn((P=(0|mn(j+B|0,7))^f)+j|0,9))^k)+P|0,13))^B)+G|0,18))^j,J=(0|mn((X=(0|mn((U=(0|mn((N=(0|mn(i+E|0,7))^w)+E|0,9))^_)+N|0,13))^i)+U|0,18))^E,H=(0|mn((T=(0|mn((O=(0|mn((F=(0|mn(y+Q|0,7))^I)+Q|0,9))^r)+F|0,13))^y)+O|0,18))^Q,q=(0|mn((Y=(0|mn((L=(0|mn(($=(0|mn(v+x|0,7))^a)+x|0,9))^b)+$|0,13))^v)+L|0,18))^x,j=(0|mn((a=(0|mn((r=(0|mn((i=(0|mn($+K|0,7))^X)+K|0,9))^O)+i|0,13))^$)+r|0,18))^K,E=(0|mn((f=(0|mn((b=(0|mn((y=(0|mn(J+P|0,7))^T)+J|0,9))^L)+y|0,13))^P)+b|0,18))^J,Q=(0|mn((w=(0|mn((k=(0|mn((v=(0|mn(H+N|0,7))^Y)+H|0,9))^G)+v|0,13))^N)+k|0,18))^H,x=(0|mn((I=(0|mn((_=(0|mn((B=(0|mn(q+F|0,7))^R)+q|0,9))^U)+B|0,13))^F)+_|0,18))^q,C=C+2|0}while((0|C)<(0|t));_t(e,j+M|0),_t(e+4|0,i+u|0),_t(e+8|0,r+d|0),_t(e+12|0,a+h|0),_t(e+16|0,f+A|0),_t(e+20|0,E+D|0),_t(e+24|0,y+s|0),_t(e+28|0,b+l|0),_t(e+32|0,k+c|0),_t(e+36|0,w+n|0),_t(e+40|0,Q+S|0),_t(e+44|0,v+g|0),_t(e+48|0,B+p|0),_t(e+52|0,_+m|0),_t(e+56|0,I+o|0),_t(e+60|0,x+z|0)}function ae(e,a,r,i){e|=0,a|=0,r|=0;var n,o,s=0,c=0,u=0,d=0,h=0;switch(o=f,n=f=f+63&-64,f=f+16|0,0|(i|=0)){case 2:if(a>>>0<13)i=-31;else{s=34187,c=(i=e)+13|0;do{t[i>>0]=0|t[s>>0],i=i+1|0,s=s+1|0}while((0|i)<(0|c));e=e+12|0,s=a+-12|0,c=6}break;case 1:if(a>>>0<12)i=-31;else{s=34200,c=(i=e)+12|0;do{t[i>>0]=0|t[s>>0],i=i+1|0,s=s+1|0}while((0|i)<(0|c));e=e+11|0,s=a+-11|0,c=6}break;default:i=-31}do{if(6==(0|c)&&!(i=0|Me(r))){if(er(n,19),c=e+(i=0|Ma(n))|0,u=s-i|0,s>>>0<=i>>>0){i=-31;break}if(Ee(0|e,0|n,i+1|0),u>>>0>=4){if(t[c>>0]=36,t[c+1>>0]=109,t[c+2>>0]=61,t[c+3>>0]=0,er(n,0|l[r+44>>2]),e=c+3+(s=0|Ma(n))|0,(u+-3|0)>>>0<=s>>>0){i=-31;break}if(Ee(c+3|0,0|n,s+1|0),(u+-3-s|0)>>>0>=4){if(t[e>>0]=44,t[e+1>>0]=116,t[e+2>>0]=61,t[e+3>>0]=0,er(n,0|l[r+40>>2]),c=e+3+(i=0|Ma(n))|0,a=u+-3-s-3-i|0,(u+-3-s-3|0)>>>0<=i>>>0){i=-31;break}if(Ee(e+3|0,0|n,i+1|0),a>>>0>=4){if(t[c>>0]=44,t[c+1>>0]=112,t[c+2>>0]=61,t[c+3>>0]=0,er(n,0|l[r+48>>2]),(a+-3|0)>>>0<=(s=0|Ma(n))>>>0){i=-31;break}if(Ee(c+3|0,0|n,s+1|0),i=c+3+s+1|0,(a+-3-s|0)>>>0>=2&&(t[c+3+s>>0]=36,t[c+3+s+1>>0]=0,Ae(i,a+-3-s-1|0,0|l[r+16>>2],0|l[r+20>>2],3),(h=a+-3-s-1-(d=0|Ma(i))|0)>>>0>=2))return t[i+d>>0]=36,t[i+d+1>>0]=0,Ae(i+d+1|0,h+-1|0,0|l[r>>2],0|l[r+4>>2],3),f=o,0;i=-31}else i=-31}else i=-31}else i=-31}}while(0);return f=o,0|i}function re(e,a,r,i){e|=0,a|=0,r|=0;var t=0,n=0,o=0,s=0,l=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0,v=0,I=0,_=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0,M=0,q=0,F=0,U=0,R=0,H=0;(i|=0)?(o=0|Pt(i),n=0|Pt(i+4|0),t=0|Pt(i+8|0),i=0|Pt(i+12|0)):(i=1797285236,t=2036477234,n=857760878,o=1634760805),f=0|Pt(r),m=0|Pt(r+4|0),p=0|Pt(r+8|0),g=0|Pt(r+12|0),A=0|Pt(r+16|0),h=0|Pt(r+20|0),d=0|Pt(r+24|0),u=0|Pt(r+28|0),c=0|Pt(a),l=0|Pt(a+4|0),s=0|Pt(a+8|0),y=0,a=0|Pt(a+12|0),r=o;do{v=0|mn((C=0|mn((R=0|mn((B=(C=0|mn(c^(U=f+r|0),16))+A|0)^f,12))+U^C,8))+B^R,7),H=0|mn((k=0|mn((M=0|mn((b=(k=0|mn(l^(S=m+n|0),16))+h|0)^m,12))+S^k,8))+b^M,7),q=0|mn((w=0|mn((x=0|mn((E=(w=0|mn(s^(Q=p+t|0),16))+d|0)^p,12))+Q^w,8))+E^x,7),j=0|mn((z=0|mn((_=0|mn((o=(z=0|mn(a^(I=g+i|0),16))+u|0)^g,12))+I^z,8))+o^_,7),m=0|mn((d=(a=0|mn((r=(D=0|mn((F=0|mn(z^H+(R+U),16))+(w+E)^H,12))+(H+(R+U))|0)^F,8))+(F+(w+E))|0)^D,7),p=0|mn((u=(c=0|mn((n=(E=0|mn((D=0|mn(q+(M+S)^C,16))+(z+o)^q,12))+(q+(M+S))|0)^D,8))+(D+(z+o))|0)^E,7),g=0|mn((A=(l=0|mn((t=(o=0|mn((E=0|mn(j+(x+Q)^k,16))+(C+B)^j,12))+(j+(x+Q))|0)^E,8))+(E+(C+B))|0)^o,7),f=0|mn((h=(s=0|mn((i=(o=0|mn((w=0|mn(_+I+v^w,16))+(k+b)^v,12))+(_+I+v)|0)^w,8))+(w+(k+b))|0)^o,7),y=y+1|0}while(10!=(0|y));return _t(e,r),_t(e+4|0,n),_t(e+8|0,t),_t(e+12|0,i),_t(e+16|0,c),_t(e+20|0,l),_t(e+24|0,s),_t(e+28|0,a),0}function ie(e,a,r,i){e|=0,a|=0,r|=0,i|=0;var n,o,s=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0;o=f,n=f=f+63&-64,f=f+704|0;e:do{if(!(0==(0|r)&0==(0|i))){if(h=0|Oi(0|(m=0|l[e+72>>2]),0|(g=0|l[e+72+4>>2]),3),_(),A=0|Li(0|r,0|i,3),p=0|_(),u=0|Oi(0|r,0|i,61),d=0|_(),g=0|yt(0|m,0|g,0|A,0|p),m=0|_(),l[e+72>>2]=g,l[e+72+4>>2]=m,s=0|l[e+64>>2],c=0|l[e+64+4>>2],m>>>0

>>0|(0|m)==(0|p)&g>>>0>>0&&(s=0|yt(0|s,0|c,1,0),c=0|_(),l[e+64>>2]=s,l[e+64+4>>2]=c),s=0|yt(0|s,0|c,0|u,0|d),d=0|_(),l[e+64>>2]=s,l[e+64+4>>2]=d,d=0|mt(128,0,127&h|0,0),(s=0|_())>>>0>i>>>0|(0|s)==(0|i)&d>>>0>r>>>0)for(s=0,c=0;;)if(p=0|t[a+s>>0],m=0|yt(0|s,0|c,127&h|0,0),_(),t[e+80+m>>0]=p,s=0|yt(0|s,0|c,1,0),!((c=0|_())>>>0>>0|(0|c)==(0|i)&s>>>0>>0))break e;if(!(0==(0|d)&0==(0|s))){c=0,u=0;do{p=0|t[a+c>>0],m=0|yt(0|c,0|u,127&h|0,0),_(),t[e+80+m>>0]=p,c=0|yt(0|c,0|u,1,0),u=0|_()}while(u>>>0>>0|(0|u)==(0|s)&c>>>0>>0)}if(q(e,e+80|0,n,n+640|0),s=0|mt(0|r,0|i,0|d,0|s),(c=0|_())>>>0>0|0==(0|c)&s>>>0>127){u=a+d|0;do{q(e,u,n,n+640|0),u=u+128|0,s=0|yt(0|s,0|c,-128,-1),c=0|_()}while(c>>>0>0|0==(0|c)&s>>>0>127);d=u}else d=a+d|0;if(!(0==(0|(s&=127))&!0)){c=0,u=0;do{t[e+80+c>>0]=0|t[d+c>>0],c=0|yt(0|c,0|u,1,0),u=0|_()}while(u>>>0<0|0==(0|u)&c>>>0>>0)}Hr(n,704)}}while(0);return f=o,0}function te(e,a,r,i){e|=0,r|=0,i|=0;var n,o,s=0,l=0;for(n=f,o=f=f+63&-64,f=f+2272|0,Ke(o+1536|0,a|=0),Ke(o+1280|0,i),Hi(o,r),Ni(o+2112|0,r),Di(o+1792|0,o+2112|0),Ra(o+2112|0,o+1792|0,o),Di(o+1952|0,o+2112|0),Hi(o+160|0,o+1952|0),Ra(o+2112|0,o+1792|0,o+160|0),Di(o+1952|0,o+2112|0),Hi(o+320|0,o+1952|0),Ra(o+2112|0,o+1792|0,o+320|0),Di(o+1952|0,o+2112|0),Hi(o+480|0,o+1952|0),Ra(o+2112|0,o+1792|0,o+480|0),Di(o+1952|0,o+2112|0),Hi(o+640|0,o+1952|0),Ra(o+2112|0,o+1792|0,o+640|0),Di(o+1952|0,o+2112|0),Hi(o+800|0,o+1952|0),Ra(o+2112|0,o+1792|0,o+800|0),Di(o+1952|0,o+2112|0),Hi(o+960|0,o+1952|0),Ra(o+2112|0,o+1792|0,o+960|0),Di(o+1952|0,o+2112|0),Hi(o+1120|0,o+1952|0),function(e){Ft(e|=0),pt(e+40|0),pt(e+80|0)}(e),a=255;;){if(0|t[o+1536+a>>0]){s=a,l=5;break}if(0|t[o+1280+a>>0]){s=a,l=5;break}if(!a)break;a=a+-1|0}if(5==(0|l)&&(0|s)>-1)for(;ar(o+2112|0,e),(a=0|t[o+1536+s>>0])<<24>>24<=0?a<<24>>24<0&&(Di(o+1952|0,o+2112|0),Ua(o+2112|0,o+1952|0,o+(160*(((a<<24>>24)/-2|0)<<24>>24)|0)|0)):(Di(o+1952|0,o+2112|0),Ra(o+2112|0,o+1952|0,o+(160*((255&a)>>>1&255)|0)|0)),(a=0|t[o+1280+s>>0])<<24>>24<=0?a<<24>>24<0&&(Di(o+1952|0,o+2112|0),Ha(o+2112|0,o+1952|0,160+(120*(((a<<24>>24)/-2|0)<<24>>24)|0)|0)):(Di(o+1952|0,o+2112|0),Na(o+2112|0,o+1952|0,160+(120*((255&a)>>>1&255)|0)|0)),it(e,o+2112|0),(0|s)>0;)s=s+-1|0;f=n}function ne(e,a,r,i,n,o,s,c){e|=0,a|=0,r|=0,i|=0,n|=0,o|=0,s|=0,c|=0;var u,d,h=0,A=0,g=0,p=0,m=0,y=0,b=0;if(d=f,u=f=f+63&-64,f=f+16|0,l[u>>2]=0,tn(c),i){A=0,p=0,g=0,h=0;e:for(;;){for(;y=0|t[r+h>>0],255==(0|(m=4&c?0|za(y):0|Da(y)));){if(!n){m=18;break e}if(!(0|Ht(n,y))){m=19;break e}if((h=h+1|0)>>>0>=i>>>0){m=17;break e}}if(p=m+(p<<6)|0,(m=A+6|0)>>>0>7){if(A=A+-2|0,g>>>0>=a>>>0){m=13;break}t[e+g>>0]=p>>>A,g=g+1|0}else A=m;if((h=h+1|0)>>>0>=i>>>0){m=16;break}}13==(0|m)?(l[u>>2]=h,l[8966]=34,h=-1):16==(0|m)?(l[u>>2]=h,h=0):17==(0|m)?(l[u>>2]=h,h=0):18==(0|m)?(l[u>>2]=h,h=0):19==(0|m)&&(l[u>>2]=h,h=0),A>>>0>4?(h=-1,g=0):m=21}else h=0,g=0,p=0,A=0,m=21;do{if(21==(0|m))if((1<>>1)),h)g=0;else if(0!=(0|n)&&(b=0|l[u>>2])>>>0>>0){for(h=b;;){if(!(0|Ht(n,0|t[r+h>>0]))){m=31;break}if((h=h+1|0)>>>0>=i>>>0){m=30;break}}if(30==(0|m)){l[u>>2]=h,h=0;break}if(31==(0|m)){l[u>>2]=h,h=0;break}}else h=0}while(0);return A=0|l[u>>2],s?l[s>>2]=r+A:(0|A)!=(0|i)&&(l[8966]=22,h=-1),0|o&&(l[o>>2]=g),f=d,0|h}function oe(e,a,r,i){e|=0,a|=0,r|=0;var t=0,n=0,o=0,s=0,l=0,c=0,u=0,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0,v=0,I=0,_=0,B=0,C=0,E=0,Q=0,x=0,j=0,z=0,D=0,S=0;(i|=0)?(g=0|Pt(i),n=0|Pt(i+4|0),t=0|Pt(i+8|0),i=0|Pt(i+12|0)):(i=1797285236,t=2036477234,n=857760878,g=1634760805),A=0|Pt(r),h=0|Pt(r+4|0),d=0|Pt(r+8|0),u=0|Pt(r+12|0),b=0|Pt(r+16|0),y=0|Pt(r+20|0),f=0|Pt(r+24|0),m=0|Pt(r+28|0),c=0|Pt(a),l=0|Pt(a+4|0),s=0|Pt(a+8|0),o=0|Pt(a+12|0),p=20,a=n,r=g;do{j=(0|mn((w=(0|mn((_=(0|mn((E=(0|mn(y+r|0,7))^u)+r|0,9))^s)+E|0,13))^y)+_|0,18))^r,C=(0|mn((S=(0|mn((k=(0|mn((I=(0|mn(a+A|0,7))^o)+a|0,9))^f)+I|0,13))^A)+k|0,18))^a,v=(0|mn((x=(0|mn((D=(0|mn((n=(0|mn(t+c|0,7))^m)+t|0,9))^h)+n|0,13))^c)+D|0,18))^t,g=(0|mn((B=(0|mn((Q=(0|mn((z=(0|mn(i+b|0,7))^d)+i|0,9))^l)+z|0,13))^b)+Q|0,18))^i,r=(0|mn((d=(0|mn((h=(0|mn((A=(0|mn(z+j|0,7))^S)+j|0,9))^D)+A|0,13))^z)+h|0,18))^j,a=(0|mn((u=(0|mn((l=(0|mn((c=(0|mn(C+E|0,7))^x)+C|0,9))^Q)+c|0,13))^E)+l|0,18))^C,t=(0|mn((o=(0|mn((s=(0|mn((b=(0|mn(v+I|0,7))^B)+v|0,9))^_)+b|0,13))^I)+s|0,18))^v,i=(0|mn((m=(0|mn((f=(0|mn((y=(0|mn(g+n|0,7))^w)+g|0,9))^k)+y|0,13))^n)+f|0,18))^g,p=p+-2|0}while(0!=(0|p));return _t(e,r),_t(e+4|0,a),_t(e+8|0,t),_t(e+12|0,i),_t(e+16|0,c),_t(e+20|0,l),_t(e+24|0,s),_t(e+28|0,o),0}function se(e,a,r){a|=0,r|=0;var i,n,o,s=0,c=0,u=0;switch(o=f,n=f=f+63&-64,f=f+16|0,u=0|l[20+(e|=0)>>2],i=0|l[e+4>>2],l[e+20>>2]=0,l[e+4>>2]=0,0|r){case 2:0|Xa(a,34152,9)?a=-32:(a=a+9|0,c=4);break;case 1:0|Xa(a,34162,8)?a=-32:(a=a+8|0,c=4);break;default:a=-26}do{if(4==(0|c))if(0==(0|Xa(a,34171,3))&&0!=(0|(s=0|xa(a+3|0,n+4|0))))if(19==(0|l[n+4>>2]))if(0|Xa(s,34175,3))a=-32;else{if(!(a=0|xa(s+3|0,n+4|0))){a=-32;break}if(l[e+44>>2]=l[n+4>>2],0|Xa(a,34179,3))a=-32;else{if(!(a=0|xa(a+3|0,n+4|0))){a=-32;break}if(l[e+40>>2]=l[n+4>>2],0|Xa(a,34183,3))a=-32;else{if(!(a=0|xa(a+3|0,n+4|0))){a=-32;break}if(c=0|l[n+4>>2],l[e+48>>2]=c,l[e+52>>2]=c,a=(c=36==(0|t[a>>0]))?a+1|0:a,c){if(l[n+4>>2]=u,0|ne(c=0|l[e+16>>2],u,a,0|Ma(a),0,n+4|0,n,3)){a=-32;break}if(l[e+20>>2]=l[n+4>>2],a=0|l[n>>2],a=(u=36==(0|t[a>>0]))?a+1|0:a,u){if(l[n+4>>2]=i,0|ne(u=0|l[e>>2],i,a,0|Ma(a),0,n+4|0,n,3)){a=-32;break}l[e+4>>2]=l[n+4>>2],r=0|l[n>>2],(a=0|Me(e))||(a=0==(0|t[r>>0])?0:-32)}else a=-32}else a=-32}}}else a=-26;else a=-32}while(0);return f=o,0|a}function le(e,a,r,i){e|=0,a|=0,r|=0,i|=0;var n,o=0,s=0,c=0,u=0,d=0,h=0,A=0,g=0;n=f,h=f=f+63&-64,f=f+288|0;e:do{if(!(0==(0|r)&0==(0|i))){if(u=0|Oi(0|(c=0|l[e+32>>2]),0|(d=0|l[e+32+4>>2]),3),_(),o=0|yt(0|c,0|d,0|(o=0|Li(0|r,0|i,3)),0|_()),d=0|_(),l[e+32>>2]=o,l[e+32+4>>2]=d,d=0|mt(64,0,63&u|0,0),(o=0|_())>>>0>i>>>0|(0|o)==(0|i)&d>>>0>r>>>0)for(o=0,s=0;;)if(d=0|t[a+o>>0],h=0|yt(0|o,0|s,63&u|0,0),_(),t[e+40+h>>0]=d,o=0|yt(0|o,0|s,1,0),!((s=0|_())>>>0>>0|(0|s)==(0|i)&o>>>0>>0))break e;if(!(0==(0|d)&0==(0|o))){s=0,c=0;do{g=0|t[a+s>>0],A=0|yt(0|s,0|c,63&u|0,0),_(),t[e+40+A>>0]=g,s=0|yt(0|s,0|c,1,0),c=0|_()}while(c>>>0>>0|(0|c)==(0|o)&s>>>0>>0)}if(J(e,e+40|0,h,h+256|0),o=0|mt(0|r,0|i,0|d,0|o),(s=0|_())>>>0>0|0==(0|s)&o>>>0>63){c=a+d|0;do{J(e,c,h,h+256|0),c=c+64|0,o=0|yt(0|o,0|s,-64,-1),s=0|_()}while(s>>>0>0|0==(0|s)&o>>>0>63);u=c}else u=a+d|0;if(!(0==(0|(o&=63))&!0)){s=0,c=0;do{t[e+40+s>>0]=0|t[u+s>>0],s=0|yt(0|s,0|c,1,0),c=0|_()}while(c>>>0<0|0==(0|c)&s>>>0>>0)}Hr(h,288)}}while(0);return f=n,0}function ce(e,a,r,i){a|=0,r|=0,i|=0;var n=0,o=0,s=0,c=0,u=0,d=0,h=0,A=0;if(0==(0|(o=0|l[56+(e|=0)>>2]))&0==(0|(n=0|l[e+56+4>>2])))h=7;else{if(c=0|mt(16,0,0|o,0|n),!(0==(0|(u=(d=0|_())>>>0>i>>>0|(0|d)==(0|i)&c>>>0>r>>>0?r:c))&0==(0|(d=d>>>0>i>>>0|(0|d)==(0|i)&c>>>0>r>>>0?i:d)))){c=0,s=0;do{A=0|t[a+c>>0],o=0|yt(0|o,0|n,0|c,0|s),_(),t[e+64+o>>0]=A,c=0|yt(0|c,0|s,1,0),s=0|_(),o=0|l[e+56>>2],n=0|l[e+56+4>>2]}while(s>>>0>>0|(0|s)==(0|d)&c>>>0>>0)}A=0|yt(0|o,0|n,0|u,0|d),c=0|_(),l[e+56>>2]=A,l[e+56+4>>2]=c,c>>>0<0|0==(0|c)&A>>>0<16||(r=0|mt(0|r,0|i,0|u,0|d),i=0|_(),$(e,e+64|0,16,0),l[e+56>>2]=0,l[e+56+4>>2]=0,a=a+u|0,h=7)}if(7==(0|h)&&(n=-16&r,i>>>0>0|0==(0|i)&r>>>0>15?(o=0|mt(0|r,0|i,0|n,0|i),A=0|_(),$(e,a,n,i),s=a+n|0,n=A):(s=a,o=r,n=i),!(0==(0|o)&0==(0|n)))){r=0,a=0;do{h=0|t[s+r>>0],A=0|yt(0|l[e+56>>2],0|l[e+56+4>>2],0|r,0|a),_(),t[e+64+A>>0]=h,r=0|yt(0|r,0|a,1,0),a=0|_()}while(a>>>0>>0|(0|a)==(0|n)&r>>>0>>0);h=0|yt(0|l[e+56>>2],0|l[e+56+4>>2],0|o,0|n),A=0|_(),l[e+56>>2]=h,l[e+56+4>>2]=A}}function ue(e,a,r){var i,t;r|=0,i=f,t=f=f+63&-64,f=f+400|0,0==(0|(e|=0))|0==(0|(a|=0))||(mr(t,0,0,64),_t(t+384|0,0|l[a+48>>2]),Bt(t,t+384|0,4,0),_t(t+384|0,0|l[a+4>>2]),Bt(t,t+384|0,4,0),_t(t+384|0,0|l[a+44>>2]),Bt(t,t+384|0,4,0),_t(t+384|0,0|l[a+40>>2]),Bt(t,t+384|0,4,0),_t(t+384|0,19),Bt(t,t+384|0,4,0),_t(t+384|0,r),Bt(t,t+384|0,4,0),_t(t+384|0,0|l[a+12>>2]),Bt(t,t+384|0,4,0),0|(r=0|l[a+8>>2])&&(Bt(t,r,0|l[a+12>>2],0),1&l[a+56>>2]|0)&&(Hr(0|l[a+8>>2],0|l[a+12>>2]),l[a+12>>2]=0),_t(t+384|0,0|l[a+20>>2]),Bt(t,t+384|0,4,0),0|(r=0|l[a+16>>2])&&Bt(t,r,0|l[a+20>>2],0),_t(t+384|0,0|l[a+28>>2]),Bt(t,t+384|0,4,0),0|(r=0|l[a+24>>2])&&(Bt(t,r,0|l[a+28>>2],0),2&l[a+56>>2]|0)&&(Hr(0|l[a+24>>2],0|l[a+28>>2]),l[a+28>>2]=0),_t(t+384|0,0|l[a+36>>2]),Bt(t,t+384|0,4,0),0|(r=0|l[a+32>>2])&&Bt(t,r,0|l[a+36>>2],0),qi(t,e,64)),f=i}function de(e,a){e|=0,a|=0;var r=0,i=0,n=0,o=0,s=0,c=0,d=0,h=0,A=0,g=0,p=0;e:do{if(0|e){do{if(2==(0|l[e+36>>2])){if(0==(0|(r=0|l[a>>2]))&&(0|u[a+8>>0])<=1){i=6;break}h=0,d=0|l[e+4>>2]}else i=6}while(0);if(6==(0|i)&&(xe(e,a,d=0|l[e+4>>2]),h=1,r=0|l[a>>2]),r=0==(0|r)&(n=0|t[a+8>>0])<<24>>24==0?2:0,i=0|l[e+24>>2],s=0|b(i,0|l[a+4>>2]),c=0|l[e+20>>2],n=s+r+(0|b(c,255&n))|0,r>>>0>>0)for(c=n,n=(0==(0|(n>>>0)%(i>>>0))?i+-1|0:-1)+n|0;;){if(s=1==(0|(c>>>0)%(i>>>0))?c+-1|0:n,i=h?d+(r<<3)|0:(0|l[4+(0|l[e>>2])>>2])+(s<<10)|0,p=0|l[(o=i)>>2],o=0|_i(0|l[o+4>>2],0,0|l[e+28>>2],0),n=0|_(),A=0|l[a>>2],i=0|t[a+8>>0],g=0|l[a+4>>2],o=0==(0|A)&i<<24>>24==0?g:o,l[a+12>>2]=r,n=0|Oe(e,A,i,r,p,1&((0|o)==(0|g)?0==(0|(0==(0|A)&i<<24>>24==0?0:n)):0)),n=(i=0|l[4+(0|l[e>>2])>>2])+((0|b(0|l[e+24>>2],o))<<10)+(n<<10)|0,o=i+(c<<10)|0,A?H(i+(s<<10)|0,n,o):N(i+(s<<10)|0,n,o),(r=r+1|0)>>>0>=(0|l[e+20>>2])>>>0)break e;c=c+1|0,n=s+1|0,i=0|l[e+24>>2]}}}while(0)}function he(e,a,r,i){e|=0,a|=0,r|=0,i|=0;var n,o,s=0,c=0,u=0;if(n=f,o=f=f+63&-64,f=f+528|0,l[o+512>>2]=0,_t(o+512|0,a),a>>>0<65)(0|mr(o,0,0,a))>=0&&(Bt(o,o+512|0,4,0),Bt(o,r,i,0),qi(o,e,a));else e:do{if((0|mr(o,0,0,64))>=0&&(Bt(o,o+512|0,4,0),Bt(o,r,i,0),(0|qi(o,o+448|0,64))>=0)){c=o+448|0,u=(s=e)+32|0;do{t[s>>0]=0|t[c>>0],s=s+1|0,c=c+1|0}while((0|s)<(0|u));c=o+448|0,u=64+(s=o+384|0)|0;do{l[s>>2]=l[c>>2],s=s+4|0,c=c+4|0}while((0|s)<(0|u));if((a+-32|0)>>>0>64){i=a+-32|0,r=e+32|0;do{if((0|Zr(o+448|0,64,o+384|0,64,0,0,0))<0)break e;c=o+448|0,u=(s=r)+32|0;do{t[s>>0]=0|t[c>>0],s=s+1|0,c=c+1|0}while((0|s)<(0|u));i=i+-32|0,r=r+32|0,c=o+448|0,u=64+(s=o+384|0)|0;do{l[s>>2]=l[c>>2],s=s+4|0,c=c+4|0}while((0|s)<(0|u))}while(i>>>0>64)}else i=a+-32|0,r=e+32|0;(0|Zr(o+448|0,i,o+384|0,64,0,0,0))>=0&&Ee(0|r,o+448|0,0|i)}}while(0);Hr(o,384),f=n}function Ae(e,a,r,i,n){e|=0,a|=0,r|=0,i|=0;var o=0,s=0,l=0,c=0,d=0,h=0;tn(n|=0),s=(0|b((i>>>0)/3|0,-3))+i|0,o=((i>>>0)/3|0)<<2;do{if(s){if(2&n){o=(2|o)+(s>>>1)|0;break}o=o+4|0;break}}while(0);if(o>>>0>=a>>>0&&ao(),4&n)if(0|i){c=0,n=0,d=0,s=0;do{if(h=d,d=d+1|0,c=c<<8|0|u[r+h>>0],(n=n+8|0)>>>0>5)for(;;){if(h=255&(0|li(c>>>(n=n+-6|0)&63)),l=s+1|0,t[e+s>>0]=h,!(n>>>0>5)){s=l;break}s=l}}while((0|d)!=(0|i));n&&(h=255&(0|li(c<<6-n&63)),t[e+s>>0]=h,s=s+1|0)}else s=0;else if(0|i){c=0,d=0,s=0,n=0;do{if(l=c,c=c+1|0,d=d<<8|0|u[r+l>>0],(n=n+8|0)>>>0>5)for(;;){if(h=255&(0|ui(d>>>(n=n+-6|0)&63)),l=s+1|0,t[e+s>>0]=h,!(n>>>0>5)){s=l;break}s=l}}while((0|c)!=(0|i));n&&(h=255&(0|ui(d<<6-n&63)),t[e+s>>0]=h,s=s+1|0)}else s=0;return o>>>0>>0&&C(35129,35148,230,35164),o>>>0>s>>>0?la(e+s|0,61,o-s|0):o=s,la(e+o|0,0,((h=o+1|0)>>>0>>0?a:h)-o|0),0|e}function ge(e,a,r,i,n,o,s,c){e|=0,a|=0,n|=0,o|=0,s|=0,c|=0;var d,h,A=0,g=0;if(d=f,h=f=f+63&-64,f=f+112|0,!(0==(0|(r|=0))&0==(0|(i|=0)))){A=(g=h)+32|0;do{t[g>>0]=0|t[c>>0],g=g+1|0,c=c+1|0}while((0|g)<(0|A));c=u[n+4>>0]|u[n+4+1>>0]<<8|u[n+4+2>>0]<<16|u[n+4+3>>0]<<24,l[h+96>>2]=u[n>>0]|u[n+1>>0]<<8|u[n+2>>0]<<16|u[n+3>>0]<<24,l[h+96+4>>2]=c,c=8;do{t[h+96+c>>0]=o,o=0|Oi(0|o,0|s,8),s=0|_(),c=c+1|0}while(16!=(0|c));if(i>>>0>0|0==(0|i)&r>>>0>63)for(c=e,o=r;;){Yt(h+32|0,h+96|0,h,0),e=0;do{t[c+e>>0]=t[h+32+e>>0]^t[a+e>>0],e=e+1|0}while(64!=(0|e));for(e=1,s=8;e=e+(0|u[(r=h+96+s|0)>>0])|0,t[r>>0]=e,16!=(0|(s=s+1|0));)e>>>=8;if(s=0|yt(0|o,0|i,-64,-1),e=c+64|0,a=a+64|0,!((i=0|_())>>>0>0|0==(0|i)&s>>>0>63))break;c=e,o=s}else s=r;if(!(0==(0|s)&0==(0|i))&&(Yt(h+32|0,h+96|0,h,0),0|s)){i=0;do{t[e+i>>0]=t[h+32+i>>0]^t[a+i>>0],i=i+1|0}while((0|i)!=(0|s))}Hr(h+32|0,64),Hr(h,32)}return f=d,0}function pe(e,a){a|=0;var r,i,n,o,s,c,u=0,d=0,h=0,A=0;0==(0|(d=0|l[56+(e|=0)>>2]))&0==(0|(u=0|l[e+56+4>>2]))||(t[e+64+d>>0]=1,u=0|yt(0|d,0|u,1,0),(h=0|_())>>>0<0|0==(0|h)&u>>>0<16&&la(e+64+u|0,0,14-d+1|0),t[e+80>>0]=1,$(e,e+64|0,16,0)),d=0|l[e+24>>2],A=(n=(-67108864|(i=((A=((h=(0|l[e+28>>2])+(d>>>26)|0)>>>26)+(0|l[e+32>>2])|0)>>>26)+(0|l[e+36>>2])|0))+((((((o=((c=(5*(i>>>26)|0)+(0|l[e+20>>2])|0)>>>26)+(67108863&d)+((5+(67108863&c)|0)>>>26)|0)>>>26)+(67108863&h)|0)>>>26)+(67108863&A)|0)>>>26)|0)>>31&67108863&A|(s=(n>>>31)-1&67108863)&(((o>>>26)+(67108863&h)|0)>>>26)+(67108863&A),r=0|yt(n>>31&67108863&c|s&5+(67108863&c)|(n>>31&(c>>>26)+(67108863&d)|s&o)<<26|0,0,0|l[e+40>>2],0),u=0|_(),u=0|yt(0|(d=0|yt((n>>31&(c>>>26)+(67108863&d)|s&o)>>>6|(n>>31&67108863&h|s&(o>>>26)+(67108863&h))<<20|0,0,0|l[e+44>>2],0)),0|_(),0|u,0),d=0|_(),d=0|yt(0|(h=0|yt((n>>31&67108863&h|s&(o>>>26)+(67108863&h))>>>12|A<<14|0,0,0|l[e+48>>2],0)),0|_(),0|d,0),h=0|_(),h=0|yt(0|(A=0|yt(((n>>>31)-1&n|n>>31&i)<<8|A>>>18|0,0,0|l[e+52>>2],0)),0|_(),0|h,0),_(),_t(a,r),_t(a+4|0,u),_t(a+8|0,d),_t(a+12|0,h),Hr(e,88)}function me(e,a){var r,i;e|=0,r=f,i=f=f+63&-64,f=f+192|0,Y(i+144|0,a|=0),Y(i+96|0,i+144|0),Y(i+96|0,i+96|0),R(i+96|0,a,i+96|0),R(i+144|0,i+144|0,i+96|0),Y(i+48|0,i+144|0),R(i+96|0,i+96|0,i+48|0),Y(i+48|0,i+96|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(5!=(0|a));R(i+96|0,i+48|0,i+96|0),Y(i+48|0,i+96|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(10!=(0|a));R(i+48|0,i+48|0,i+96|0),Y(i,i+48|0),a=1;do{Y(i,i),a=a+1|0}while(20!=(0|a));R(i+48|0,i,i+48|0),Y(i+48|0,i+48|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(10!=(0|a));R(i+96|0,i+48|0,i+96|0),Y(i+48|0,i+96|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(50!=(0|a));R(i+48|0,i+48|0,i+96|0),Y(i,i+48|0),a=1;do{Y(i,i),a=a+1|0}while(100!=(0|a));R(i+48|0,i,i+48|0),Y(i+48|0,i+48|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(50!=(0|a));R(i+96|0,i+48|0,i+96|0),Y(i+96|0,i+96|0),a=1;do{Y(i+96|0,i+96|0),a=a+1|0}while(5!=(0|a));R(e,i+96|0,i+144|0),f=r}function fe(e,a,r,i,t,n,o){e|=0,a|=0,r|=0,i|=0,t|=0;var s,c,u=0;return s=f,c=f=f+63&-64,f=f+352|0,re(c,n|=0,o|=0,0),e>>>0>r>>>0&&0>>0|0==(0|t)&(e-r|0)>>>0>>0?u=5:r>>>0>e>>>0&&0>>0|0==(0|t)&(r-e|0)>>>0>>0&&(u=5),5==(0|u)&&(Rr(0|e,0|r,0|i),r=e),l[c+32>>2]=0,l[c+32+4>>2]=0,l[c+32+8>>2]=0,l[c+32+12>>2]=0,l[c+32+16>>2]=0,l[c+32+20>>2]=0,l[c+32+24>>2]=0,l[c+32+28>>2]=0,0==(0|(o=t>>>0>0|0==(0|t)&i>>>0>32?32:i))&0==(0|(u=t>>>0>0|0==(0|t)&i>>>0>32?0:t))||Ee(c+32+32|0,0|r,-2-(~t>>>0>4294967295|-1==(0|~t)&~i>>>0>4294967263?~i:-33)+1|0),di(c+32|0,c+32|0,0|yt(0|o,0|u,32,0),0|_(),n+16|0,c),Wt(c+96|0,c+32|0),0==(0|o)&0==(0|u)||Ee(0|e,c+32+32|0,-2-(~t>>>0>4294967295|-1==(0|~t)&~i>>>0>4294967263?~i:-33)+1|0),Hr(c+32|0,64),t>>>0>0|0==(0|t)&i>>>0>32&&Lr(e+o|0,r+o|0,0|mt(0|i,0|t,0|o,0|u),0|_(),n+16|0,1,0,c),Hr(c,32),wt(c+96|0,e,i,t),Vt(c+96|0,a),Hr(c+96|0,256),f=s,0}function ye(e,a,r,i,t,n,o){e|=0,a|=0,r|=0,i|=0,t|=0;var s,c,u=0;return s=f,c=f=f+63&-64,f=f+352|0,oe(c,n|=0,o|=0,0),e>>>0>r>>>0&&0>>0|0==(0|t)&(e-r|0)>>>0>>0?u=5:r>>>0>e>>>0&&0>>0|0==(0|t)&(r-e|0)>>>0>>0&&(u=5),5==(0|u)&&(Rr(0|e,0|r,0|i),r=e),l[c+32>>2]=0,l[c+32+4>>2]=0,l[c+32+8>>2]=0,l[c+32+12>>2]=0,l[c+32+16>>2]=0,l[c+32+20>>2]=0,l[c+32+24>>2]=0,l[c+32+28>>2]=0,0==(0|(o=t>>>0>0|0==(0|t)&i>>>0>32?32:i))&0==(0|(u=t>>>0>0|0==(0|t)&i>>>0>32?0:t))||Ee(c+32+32|0,0|r,-2-(~t>>>0>4294967295|-1==(0|~t)&~i>>>0>4294967263?~i:-33)+1|0),ut(c+32|0,c+32|0,0|yt(0|o,0|u,32,0),0|_(),n+16|0,c),Wt(c+96|0,c+32|0),0==(0|o)&0==(0|u)||Ee(0|e,c+32+32|0,-2-(~t>>>0>4294967295|-1==(0|~t)&~i>>>0>4294967263?~i:-33)+1|0),Hr(c+32|0,64),t>>>0>0|0==(0|t)&i>>>0>32&&Ui(e+o|0,r+o|0,0|mt(0|i,0|t,0|o,0|u),0|_(),n+16|0,1,0,c),Hr(c,32),wt(c+96|0,e,i,t),Vt(c+96|0,a),Hr(c+96|0,256),f=s,0}function be(e,a){e|=0;var r,i,t=0;r=f,i=f=f+63&-64,f=f+144|0,Y(i+96|0,a|=0),Y(i+48|0,i+96|0),Y(i+48|0,i+48|0),R(i+48|0,a,i+48|0),R(i+96|0,i+96|0,i+48|0),Y(i+96|0,i+96|0),R(i+96|0,i+48|0,i+96|0),Y(i+48|0,i+96|0),t=1;do{Y(i+48|0,i+48|0),t=t+1|0}while(5!=(0|t));R(i+96|0,i+48|0,i+96|0),Y(i+48|0,i+96|0),t=1;do{Y(i+48|0,i+48|0),t=t+1|0}while(10!=(0|t));R(i+48|0,i+48|0,i+96|0),Y(i,i+48|0),t=1;do{Y(i,i),t=t+1|0}while(20!=(0|t));R(i+48|0,i,i+48|0),Y(i+48|0,i+48|0),t=1;do{Y(i+48|0,i+48|0),t=t+1|0}while(10!=(0|t));R(i+96|0,i+48|0,i+96|0),Y(i+48|0,i+96|0),t=1;do{Y(i+48|0,i+48|0),t=t+1|0}while(50!=(0|t));R(i+48|0,i+48|0,i+96|0),Y(i,i+48|0),t=1;do{Y(i,i),t=t+1|0}while(100!=(0|t));R(i+48|0,i,i+48|0),Y(i+48|0,i+48|0),t=1;do{Y(i+48|0,i+48|0),t=t+1|0}while(50!=(0|t));R(i+96|0,i+48|0,i+96|0),Y(i+96|0,i+96|0),Y(i+96|0,i+96|0),R(e,i+96|0,a),f=r}function ke(e,a,r,i){e|=0,a|=0,r|=0,i|=0;var n=0,o=0,s=0,l=0;e:do{if(!(0==(0|r)&0==(0|i))){for(n=u[e+352>>0]|u[e+352+1>>0]<<8|u[e+352+2>>0]<<16|u[e+352+3>>0]<<24,l=i;i=e+96+n|0,l>>>0>0|0==(0|l)&r>>>0>(s=256-n|0)>>>0;){Ee(0|i,0|a,0|s),i=(u[e+352>>0]|u[e+352+1>>0]<<8|u[e+352+2>>0]<<16|u[e+352+3>>0]<<24)+s|0,t[e+352>>0]=i,t[e+352+1>>0]=i>>8,t[e+352+2>>0]=i>>16,t[e+352+3>>0]=i>>24,He(e,128,0),D(e,e+96|0),n=e+224|0,o=128+(i=e+96|0)|0;do{t[i>>0]=0|t[n>>0],i=i+1|0,n=n+1|0}while((0|i)<(0|o));if(n=(u[e+352>>0]|u[e+352+1>>0]<<8|u[e+352+2>>0]<<16|u[e+352+3>>0]<<24)-128|0,t[e+352>>0]=n,t[e+352+1>>0]=n>>8,t[e+352+2>>0]=n>>16,t[e+352+3>>0]=n>>24,0==(0|(i=0|mt(0|r,0|l,0|s,0)))&0==(0|(l=0|_())))break e;a=a+s|0,r=i}Ee(0|i,0|a,0|r),l=(u[e+352>>0]|u[e+352+1>>0]<<8|u[e+352+2>>0]<<16|u[e+352+3>>0]<<24)+r|0,t[e+352>>0]=l,t[e+352+1>>0]=l>>8,t[e+352+2>>0]=l>>16,t[e+352+3>>0]=l>>24}}while(0)}function we(e,a,r,i,t,n,o,s,c,u,d){e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,u|=0,d|=0;var h=0,A=0,g=0;g=0|ji(0|(c|=0),0,0|(s|=0),0),A=0|_();do{if(A>>>0>0|0==(0|A)&g>>>0>1073741823)l[8966]=27,e=-1;else{if(o>>>0>0|0==(0|o)&n>>>0>4294967295){l[8966]=27,e=-1;break}if(o>>>0<0|0==(0|o)&n>>>0<2|0!=((g=0|yt(0|n,0|o,-1,-1))&n|0)|0!=((0|_())&o|0)){l[8966]=22,e=-1;break}if(0==(0|s)|0==(0|c)){l[8966]=22,e=-1;break}if(!(s>>>0>16777215||(33554431/(c>>>0)|0)>>>0>>0||0>>0|(0==(0|o)?(33554431/(s>>>0)|0)>>>0>>0:0))){if(((A=0|b(s<<7,c))+(g=0|b(s<<7,n))|0)>>>0>>0){l[8966]=12,e=-1;break}if((h=A+g+(s<<8|64)|0)>>>0<(s<<8|64)>>>0){l[8966]=12,e=-1;break}if((0|l[e+8>>2])>>>0>>0&&(Zt(e),0==(0|yr(e,h)))){e=-1;break}va(a,r,i,t,h=0|l[e+4>>2],A),e=0;do{ve(h+(0|b(s<<7,e))|0,s,n,o,h+A|0,h+A+g|0),e=e+1|0}while((0|e)!=(0|c));va(a,r,h,A,u,d),e=0;break}l[8966]=12,e=-1}}while(0);return 0|e}function ve(e,a,r,i,t,n){e|=0,r|=0,i|=0,t|=0,n|=0;var o=0,s=0,c=0,u=0,d=0;if((a|=0)<<5|0){o=0;do{u=0|Pt(e+(o<<2)|0),l[n+(o<<2)>>2]=u,o=o+1|0}while((0|o)!=(a<<5|0))}if(!(0==(0|r)&0==(0|i))){o=0,s=0;do{Ei(t+((0|b(a<<5,o))<<2)|0,n,a<<7),Za(n,n+(a<<5<<2)|0,n+(a<<6<<2)|0,a),Ei(t+((0|b(1|o,a<<5))<<2)|0,n+(a<<5<<2)|0,a<<7),Za(n+(a<<5<<2)|0,n,n+(a<<6<<2)|0,a),o=0|yt(0|o,0|s,2,0),s=0|_()}while(s>>>0>>0|(0|s)==(0|i)&o>>>0>>0);o=0|yt(0|r,0|i,-1,-1),s=0|_(),c=0,u=0;do{d=0|kt(n,a),_(),ci(n,t+((0|b(a<<5,d&o))<<2)|0,a<<7),Za(n,n+(a<<5<<2)|0,n+(a<<6<<2)|0,a),d=0|kt(n+(a<<5<<2)|0,a),_(),ci(n+(a<<5<<2)|0,t+((0|b(a<<5,d&o))<<2)|0,a<<7),Za(n+(a<<5<<2)|0,n,n+(a<<6<<2)|0,a),c=0|yt(0|c,0|u,2,0),u=0|_()}while(u>>>0>>0|(0|u)==(0|i)&c>>>0>>0)}if(a<<5|0){o=0;do{_t(e+(o<<2)|0,0|l[n+(o<<2)>>2]),o=o+1|0}while((0|o)!=(a<<5|0))}}function Ie(e,a,r){var i,t,n,o,s,c,u,d,h,A,g,p,m,f,y,b,k,w,v,I;a|=0,r|=0,I=0|l[(e|=0)>>2],w=0|l[e+4>>2],b=0|l[e+8>>2],f=0|l[e+12>>2],p=0|l[e+16>>2],A=0|l[e+20>>2],d=0|l[e+24>>2],c=0|l[e+28>>2],o=0|l[e+32>>2],t=0|l[e+36>>2],v=0|l[a>>2],k=0|l[a+4>>2],y=0|l[a+8>>2],m=0|l[a+12>>2],g=0|l[a+16>>2],h=0|l[a+20>>2],u=0|l[a+24>>2],s=0|l[a+28>>2],n=0|l[a+32>>2],i=0|l[a+36>>2],l[e>>2]=(v^I)&0-r^I,l[e+4>>2]=(k^w)&0-r^w,l[e+8>>2]=(y^b)&0-r^b,l[e+12>>2]=(m^f)&0-r^f,l[e+16>>2]=(g^p)&0-r^p,l[e+20>>2]=(h^A)&0-r^A,l[e+24>>2]=(u^d)&0-r^d,l[e+28>>2]=(s^c)&0-r^c,l[e+32>>2]=(n^o)&0-r^o,l[e+36>>2]=(i^t)&0-r^t,l[a>>2]=(v^I)&0-r^v,l[a+4>>2]=(k^w)&0-r^k,l[a+8>>2]=(y^b)&0-r^y,l[a+12>>2]=(m^f)&0-r^m,l[a+16>>2]=(g^p)&0-r^g,l[a+20>>2]=(h^A)&0-r^h,l[a+24>>2]=(u^d)&0-r^u,l[a+28>>2]=(s^c)&0-r^s,l[a+32>>2]=(n^o)&0-r^n,l[a+36>>2]=(i^t)&0-r^i}function _e(e,a,r,i,t,n,o){e|=0,a|=0,r|=0,i|=0,t|=0;var s,l,c=0;return l=f,s=f=f+63&-64,f=f+96|0,re(s,n|=0,o|=0,0),zi(s+32|0,32,0,n+16|0,s),0|ht(r,a,i,t,s+32|0)?(Hr(s,32),r=-1):e?(a>>>0>=e>>>0&&0>>0|0==(0|t)&(a-e|0)>>>0>>0?c=8:e>>>0>=a>>>0&&0>>0|0==(0|t)&(e-a|0)>>>0>>0&&(c=8),8==(0|c)&&(Rr(0|e,0|a,0|i),a=e),0==(0|(r=t>>>0>0|0==(0|t)&i>>>0>32?32:i))&0==(0|(o=t>>>0>0|0==(0|t)&i>>>0>32?0:t))?di(s+32|0,s+32|0,32,0,n+16|0,s):(Ee(s+32+32|0,0|a,-2-(c=~t>>>0>4294967295|-1==(0|~t)&~i>>>0>4294967263?~i:-33)+1|0),di(s+32|0,s+32|0,0|yt(0|r,0|o,32,0),0|_(),n+16|0,s),Ee(0|e,s+32+32|0,-2-c+1|0)),t>>>0>0|0==(0|t)&i>>>0>32&&Lr(e+r|0,a+r|0,0|mt(0|i,0|t,0|r,0|o),0|_(),n+16|0,1,0,s),Hr(s,32),r=0):r=0,f=l,0|r}function Be(e,a,r,i,n){e|=0,i|=0,n|=0;var o,s,c=0,d=0,h=0,A=0,g=0;if(o=f,s=f=f+63&-64,f=f+112|0,!(0==(0|(a|=0))&0==(0|(r|=0)))){c=(d=s)+32|0;do{t[d>>0]=0|t[n>>0],d=d+1|0,n=n+1|0}while((0|d)<(0|c));if(d=u[i+4>>0]|u[i+4+1>>0]<<8|u[i+4+2>>0]<<16|u[i+4+3>>0]<<24,l[s+96>>2]=u[i>>0]|u[i+1>>0]<<8|u[i+2>>0]<<16|u[i+3>>0]<<24,l[s+96+4>>2]=d,l[s+96+8>>2]=0,l[s+96+8+4>>2]=0,r>>>0>0|0==(0|r)&a>>>0>63){do{for(Yt(e,s+96|0,s,0),n=1,c=8;n=n+(0|u[(d=s+96+c|0)>>0])|0,t[d>>0]=n,16!=(0|(c=c+1|0));)n>>>=8;a=0|yt(0|a,0|r,-64,-1),r=0|_(),e=e+64|0}while(r>>>0>0|0==(0|r)&a>>>0>63);0==(0|a)&0==(0|r)||(A=e,g=a,h=8)}else A=e,g=a,h=8;if(8==(0|h)&&(Yt(s+32|0,s+96|0,s,0),0|g)){n=0;do{t[A+n>>0]=0|t[s+32+n>>0],n=n+1|0}while((0|n)!=(0|g))}Hr(s+32|0,64),Hr(s,32)}return f=o,0}function Ce(e,a,r,i,t,n,o){e|=0,a|=0,r|=0,i|=0,t|=0;var s,l,c=0;return l=f,s=f=f+63&-64,f=f+96|0,oe(s,n|=0,o|=0,0),jt(s+32|0,32,0,n+16|0,s),0|ht(r,a,i,t,s+32|0)?(Hr(s,32),r=-1):e?(a>>>0>=e>>>0&&0>>0|0==(0|t)&(a-e|0)>>>0>>0?c=8:e>>>0>=a>>>0&&0>>0|0==(0|t)&(e-a|0)>>>0>>0&&(c=8),8==(0|c)&&(Rr(0|e,0|a,0|i),a=e),0==(0|(r=t>>>0>0|0==(0|t)&i>>>0>32?32:i))&0==(0|(o=t>>>0>0|0==(0|t)&i>>>0>32?0:t))?ut(s+32|0,s+32|0,32,0,n+16|0,s):(Ee(s+32+32|0,0|a,-2-(c=~t>>>0>4294967295|-1==(0|~t)&~i>>>0>4294967263?~i:-33)+1|0),ut(s+32|0,s+32|0,0|yt(0|r,0|o,32,0),0|_(),n+16|0,s),Ee(0|e,s+32+32|0,-2-c+1|0)),t>>>0>0|0==(0|t)&i>>>0>32&&Ui(e+r|0,a+r|0,0|mt(0|i,0|t,0|r,0|o),0|_(),n+16|0,1,0,s),Hr(s,32),r=0):r=0,f=l,0|r}function Ee(e,a,r){e|=0,a|=0;var i,n,o=0;if((0|(r|=0))>=8192)return 0|j(0|e,0|a,0|r);if(n=0|e,i=e+r|0,(3&e)==(3&a)){for(;3&e;){if(!r)return 0|n;t[e>>0]=0|t[a>>0],e=e+1|0,a=a+1|0,r=r-1|0}for(o=(r=-4&i|0)-64|0;(0|e)<=(0|o);)l[e>>2]=l[a>>2],l[e+4>>2]=l[a+4>>2],l[e+8>>2]=l[a+8>>2],l[e+12>>2]=l[a+12>>2],l[e+16>>2]=l[a+16>>2],l[e+20>>2]=l[a+20>>2],l[e+24>>2]=l[a+24>>2],l[e+28>>2]=l[a+28>>2],l[e+32>>2]=l[a+32>>2],l[e+36>>2]=l[a+36>>2],l[e+40>>2]=l[a+40>>2],l[e+44>>2]=l[a+44>>2],l[e+48>>2]=l[a+48>>2],l[e+52>>2]=l[a+52>>2],l[e+56>>2]=l[a+56>>2],l[e+60>>2]=l[a+60>>2],e=e+64|0,a=a+64|0;for(;(0|e)<(0|r);)l[e>>2]=l[a>>2],e=e+4|0,a=a+4|0}else for(r=i-4|0;(0|e)<(0|r);)t[e>>0]=0|t[a>>0],t[e+1>>0]=0|t[a+1>>0],t[e+2>>0]=0|t[a+2>>0],t[e+3>>0]=0|t[a+3>>0],e=e+4|0,a=a+4|0;for(;(0|e)<(0|i);)t[e>>0]=0|t[a>>0],e=e+1|0,a=a+1|0;return 0|n}function Qe(e,a){e|=0;var r,i,n=0;r=f,i=f=f+63&-64,f=f+48|0,function(e,a){var r,i,t,n,o,s,c,u,d,h,A;e|=0,d=0|l[(a|=0)>>2],A=0|l[a+4>>2],c=0|l[a+8>>2],s=0|l[a+12>>2],o=0|l[a+16>>2],h=0|l[a+20>>2],t=0|l[a+24>>2],i=0|l[a+28>>2],r=0|l[a+32>>2],n=(((((u=((19*((((((((((((16777216+(19*(a=0|l[a+36>>2])|0)|0)>>>25)+d>>26)+A>>25)+c>>26)+s>>25)+o>>26)+h>>25)+t>>26)+i>>25)+r>>26)+a>>25)|0)+d>>26)+A|0)>>25)+c>>26)+s>>25)+o>>26)+h|0,l[e>>2]=(19*((((((((((((16777216+(19*a|0)|0)>>>25)+d>>26)+A>>25)+c>>26)+s>>25)+o>>26)+h>>25)+t>>26)+i>>25)+r>>26)+a>>25)|0)+d&67108863,l[e+4>>2]=33554431&u,l[e+8>>2]=(u>>25)+c&67108863,l[e+12>>2]=((u>>25)+c>>26)+s&33554431,l[e+16>>2]=(((u>>25)+c>>26)+s>>25)+o&67108863,l[e+20>>2]=33554431&n,l[e+24>>2]=(n>>25)+t&67108863,l[e+28>>2]=((n>>25)+t>>26)+i&33554431,l[e+32>>2]=(((n>>25)+t>>26)+i>>25)+r&67108863,l[e+36>>2]=((((n>>25)+t>>26)+i>>25)+r>>26)+a&33554431}(i,a|=0),a=0|l[i>>2],t[e>>0]=a,t[e+1>>0]=a>>>8,t[e+2>>0]=a>>>16,n=0|l[i+4>>2],t[e+3>>0]=n<<2|a>>>24,t[e+4>>0]=n>>>6,t[e+5>>0]=n>>>14,a=0|l[i+8>>2],t[e+6>>0]=a<<3|n>>>22,t[e+7>>0]=a>>>5,t[e+8>>0]=a>>>13,n=0|l[i+12>>2],t[e+9>>0]=n<<5|a>>>21,t[e+10>>0]=n>>>3,t[e+11>>0]=n>>>11,a=0|l[i+16>>2],t[e+12>>0]=a<<6|n>>>19,t[e+13>>0]=a>>>2,t[e+14>>0]=a>>>10,t[e+15>>0]=a>>>18,a=0|l[i+20>>2],t[e+16>>0]=a,t[e+17>>0]=a>>>8,t[e+18>>0]=a>>>16,n=0|l[i+24>>2],t[e+19>>0]=n<<1|a>>>24,t[e+20>>0]=n>>>7,t[e+21>>0]=n>>>15,a=0|l[i+28>>2],t[e+22>>0]=a<<3|n>>>23,t[e+23>>0]=a>>>5,t[e+24>>0]=a>>>13,n=0|l[i+32>>2],t[e+25>>0]=n<<4|a>>>21,t[e+26>>0]=n>>>4,t[e+27>>0]=n>>>12,a=0|l[i+36>>2],t[e+28>>0]=a<<6|n>>>20,t[e+29>>0]=a>>>2,t[e+30>>0]=a>>>10,t[e+31>>0]=a>>>18,f=r}function xe(e,a,r){e|=0,a|=0,r|=0;var i,t,n=0,o=0,s=0;if(i=f,t=f=f+63&-64,f=f+4096|0,bn(t+3072|0),bn(t+2048|0),0!=(0|e)&0!=(0|a)&&(l[t+2048>>2]=l[a>>2],l[t+2048+4>>2]=0,l[t+2048+8>>2]=l[a+4>>2],l[t+2048+8+4>>2]=0,l[t+2048+16>>2]=u[a+8>>0],l[t+2048+16+4>>2]=0,l[t+2048+24>>2]=l[e+16>>2],l[t+2048+24+4>>2]=0,l[t+2048+32>>2]=l[e+8>>2],l[t+2048+32+4>>2]=0,l[t+2048+40>>2]=l[e+36>>2],l[t+2048+40+4>>2]=0,0|l[e+20>>2])){a=0;do{(n=127&a)||(s=0|yt(0|l[t+2048+48>>2],0|l[t+2048+48+4>>2],1,0),o=0|_(),l[t+2048+48>>2]=s,l[t+2048+48+4>>2]=o,bn(t),bn(t+1024|0),H(t+3072|0,t+2048|0,t),H(t+3072|0,t,t+1024|0)),o=0|l[t+1024+(n<<3)+4>>2],l[(s=r+(a<<3)|0)>>2]=l[t+1024+(n<<3)>>2],l[s+4>>2]=o,a=a+1|0}while(a>>>0<(0|l[e+20>>2])>>>0)}f=i}function je(e,a,r,i){e|=0,a|=0,r|=0,i|=0;var t,n,o,s,c=0,u=0,d=0;s=f,o=f=f+63&-64,f=f+64|0,u=52+(c=o+8|0)|0;do{l[c>>2]=0,c=c+4|0}while((0|c)<(0|u));c=0|Ma(e),l[o+36>>2]=c,l[o+20>>2]=c,l[o+4>>2]=c,u=0|F(c),l[o+32>>2]=u,t=0|F(c),l[o+16>>2]=t,n=0|F(c),l[o>>2]=n;do{if(0==(0|u)|0==(0|t)|0==(0|n))L(u),L(t),L(n),c=-22;else{if(!(d=0|F(c))){L(u),L(t),L(n),c=-22;break}if(0|(c=0|se(o,e,i))){L(0|l[o+32>>2]),L(0|l[o+16>>2]),L(0|l[o>>2]),L(d);break}i=0|Ne(0|l[o+40>>2],0|l[o+44>>2],0|l[o+52>>2],a,r,0|l[o+16>>2],0|l[o+20>>2],d,0|l[o+4>>2],0,0,i),L(0|l[o+32>>2]),L(0|l[o+16>>2]),c=0==(0|i)&&0==(0|Pa(d,0|l[o>>2],0|l[o+4>>2]))?0:-35,L(d),L(0|l[o>>2])}}while(0);return f=s,0|c}function ze(e,a,r,i,t,n,o,s,l,c,u){var d;e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,l|=0,d=f,f=f+352|0,fi(d+16|0,64,0,c|=0,u|=0),Wt(d+80|0,d+16|0),Hr(d+16|0,64),wt(d+80|0,o,s,l),a=0|mt(0,0,0|s,0|l),_(),wt(d+80|0,35264,15&a,0),wt(d+80|0,r,i,t),a=0|mt(0,0,0|i,0|t),_(),wt(d+80|0,35264,15&a,0),ii(d+336|0,s,l),wt(d+80|0,d+336|0,8,0),ii(d+336|0,i,t),wt(d+80|0,d+336|0,8,0),Vt(d+80|0,d),Hr(d+80|0,256),a=0|An(d,n),Hr(d,16);do{if(e){if(a){la(0|e,0,0|i),a=-1;break}Wa(e,r,i,t,c,1,u),a=0;break}}while(0);return f=d,0|a}function De(e,a){e|=0,a|=0;var r,i,n=0,o=0,s=0;r=f,i=f=f+63&-64,f=f+464|0,n=0;do{s=0|t[a+n>>0],t[i+(o=n<<1)>>0]=15&s,t[i+(1|o)>>0]=(255&s)>>>4,n=n+1|0}while(32!=(0|n));n=0,a=0;do{n=134217728+((o=n+(0|u[(s=i+a|0)>>0])|0)<<24)>>28,t[s>>0]=o-(n<<4),a=a+1|0}while(63!=(0|a));t[i+63>>0]=n+(0|u[i+63>>0]),$t(e),n=1;do{Kt(i+64|0,n>>>1,0|t[i+n>>0]),Na(i+304|0,e,i+64|0),Di(e,i+304|0),n=n+2|0}while(n>>>0<64);Ni(i+304|0,e),it(i+184|0,i+304|0),ar(i+304|0,i+184|0),it(i+184|0,i+304|0),ar(i+304|0,i+184|0),it(i+184|0,i+304|0),ar(i+304|0,i+184|0),Di(e,i+304|0),n=0;do{Kt(i+64|0,n>>>1,0|t[i+n>>0]),Na(i+304|0,e,i+64|0),Di(e,i+304|0),n=n+2|0}while(n>>>0<64);f=r}function Se(e,a,r,i,t,n){r|=0,i|=0,t|=0;var o,s=0,c=0;o=(a|=0)>>>0>0|0==(0|a)&(e|=0)>>>0>32768?e:32768,a=a>>>0>0|0==(0|a)&e>>>0>32768?a:0,l[(n|=0)>>2]=8;e:do{if(a>>>0<0|0==(0|a)&o>>>0>>5>>>0){l[t>>2]=1,a=0|en(0|o,0|a,l[n>>2]<<2|0,0),e=0|_(),l[i>>2]=1,e=0|Oi(0|a,0|e,1),a=0|_(),r=1;do{if(n=0|Li(1,0,0|r),r=r+1|0,(t=0|_())>>>0>a>>>0|(0|t)==(0|a)&n>>>0>e>>>0)break e;l[i>>2]=r}while(r>>>0<63)}else{for(l[i>>2]=1,e=1;s=0|Li(1,0,0|e),!((c=0|_())>>>0>0|0==(0|c)&s>>>0>r>>>11>>>0);)if(e=e+1|0,l[i>>2]=e,e>>>0>=63){e=63;break}i=0|Oi(0|(i=0|Oi(0|o,0|a,2)),0|_(),0|e),c=(s=0|_())>>>0<0|0==(0|s)&i>>>0<1073741823?i:1073741823,l[t>>2]=(c>>>0)/((0|l[n>>2])>>>0)|0}}while(0)}function Me(e){e|=0;var a=0,r=0;do{if(e)if(0|l[e>>2])if((0|l[e+4>>2])>>>0>=16){if(0==(0|l[e+8>>2])&&0|l[e+12>>2]){a=-18;break}if(a=0|l[e+20>>2],!(0|l[e+16>>2]))return 0|(0==(0|a)?-6:-19);if(a>>>0>=8){if(0==(0|l[e+24>>2])&&0|l[e+28>>2]){a=-20;break}if(0==(0|l[e+32>>2])&&0|l[e+36>>2]){a=-21;break}if((a=0|l[e+44>>2])>>>0>=8)if(a>>>0<=2097152)if(a>>>0>=(r=0|l[e+48>>2])<<3>>>0)if(0|l[e+40>>2])if(r){if(!(r>>>0>16777215))return 0|(0==(0|(e=0|l[e+52>>2]))?-28:e>>>0>16777215?-29:0);a=-17}else a=-16;else a=-12;else a=-14;else a=-15;else a=-14}else a=-6}else a=-2;else a=-1;else a=-25}while(0);return 0|a}function qe(e,a,r,i,n,o){var s,c;if(e|=0,r|=0,i|=0,n|=0,o|=0,s=f,c=f=f+63&-64,f=f+192|0,((a|=0)-1&255)>63&&ao(),0!=(0|r)&i<<24>>24!=0&&(255&i)<=64)return t[c+128>>0]=a,t[c+128+1>>0]=i,t[c+128+2>>0]=1,t[c+128+3>>0]=1,Tt(c+128+4|0),ii(c+128+8|0,0,0),l[c+128+16>>2]=0,l[c+128+16+4>>2]=0,l[c+128+16+8>>2]=0,l[c+128+16+12>>2]=0,n?Gi(c+128|0,n):(l[c+128+32>>2]=0,l[c+128+32+4>>2]=0,l[c+128+32+8>>2]=0,l[c+128+32+12>>2]=0),o?Ri(c+128|0,o):(l[c+128+48>>2]=0,l[c+128+48+4>>2]=0,l[c+128+48+8>>2]=0,l[c+128+48+12>>2]=0),Ia(e,c+128|0),la(c+(255&i)|0,0,128-(255&i)|0),Ee(0|c,0|r,255&i|0),ke(e,c,128,0),Hr(c,128),void(f=s);ao()}function Fe(e,a,r){e|=0,a|=0;var i,n=0,o=0,s=0;i=f,f=f+192|0,(r|=0)>>>0>128&&(Xr(e),ie(e,a,r,0),Ai(e,i),r=64,a=i),Xr(e),o=128+(n=i+64|0)|0;do{l[n>>2]=909522486,n=n+4|0}while((0|n)<(0|o));if(!(s=0==(0|r))&&(t[i+64>>0]=54^t[a>>0],1!=(0|r))){n=1;do{t[(o=i+64+n|0)>>0]=t[o>>0]^t[a+n>>0],n=n+1|0}while((0|n)!=(0|r))}ie(e,i+64|0,128,0),Xr(e+208|0),o=128+(n=i+64|0)|0;do{l[n>>2]=1549556828,n=n+4|0}while((0|n)<(0|o));if(!s&&(t[i+64>>0]=92^t[a>>0],1!=(0|r))){n=1;do{t[(s=i+64+n|0)>>0]=t[s>>0]^t[a+n>>0],n=n+1|0}while((0|n)!=(0|r))}return ie(e+208|0,i+64|0,128,0),Hr(i+64|0,128),Hr(i,64),f=i,0}function Ue(e,a,r){e|=0,a|=0;var i,n=0,o=0,s=0;i=f,f=f+96|0,(r|=0)>>>0>64&&(Br(e),le(e,a,r,0),pi(e,i),r=32,a=i),Br(e),o=64+(n=i+32|0)|0;do{l[n>>2]=909522486,n=n+4|0}while((0|n)<(0|o));if(!(s=0==(0|r))&&(t[i+32>>0]=54^t[a>>0],1!=(0|r))){n=1;do{t[(o=i+32+n|0)>>0]=t[o>>0]^t[a+n>>0],n=n+1|0}while((0|n)!=(0|r))}le(e,i+32|0,64,0),Br(e+104|0),o=64+(n=i+32|0)|0;do{l[n>>2]=1549556828,n=n+4|0}while((0|n)<(0|o));if(!s&&(t[i+32>>0]=92^t[a>>0],1!=(0|r))){n=1;do{t[(s=i+32+n|0)>>0]=t[s>>0]^t[a+n>>0],n=n+1|0}while((0|n)!=(0|r))}return le(e+104|0,i+32|0,64,0),Hr(i+32|0,64),Hr(i,32),f=i,0}function Re(e,a){e|=0,a|=0;var r,i,n=0,o=0;r=f,i=f=f+63&-64,f=f+128|0,l[i+64>>2]=0,l[i+64+4>>2]=0,l[i+64+8>>2]=0,l[i+64+12>>2]=0,l[i+64+16>>2]=0,l[i+64+20>>2]=0,l[i+64+24>>2]=0,l[i+64+28>>2]=0,l[(o=i+64+32|0)>>2]=l[8456],l[o+4>>2]=l[8457],l[o+8>>2]=l[8458],l[o+12>>2]=l[8459],l[o+16>>2]=l[8460],l[o+20>>2]=l[8461],l[o+24>>2]=l[8462],l[o+28>>2]=l[8463],l[i+32>>2]=0,l[i+32+4>>2]=0,l[i+32+8>>2]=0,l[i+32+12>>2]=0,l[i+32+16>>2]=0,l[i+32+20>>2]=0,l[i+32+24>>2]=0,l[i+32+28>>2]=0,n=(o=i)+32|0;do{t[o>>0]=0|t[a>>0],o=o+1|0,a=a+1|0}while((0|o)<(0|n));oi(i+64|0,i),U(i+64|0),a=i+64|0,n=(o=e)+32|0;do{t[o>>0]=0|t[a>>0],o=o+1|0,a=a+1|0}while((0|o)<(0|n));f=r}function He(e,a,r){var i,n;a|=0,r|=0,i=0|yt(u[64+(e|=0)>>0]|u[e+64+1>>0]<<8|u[e+64+2>>0]<<16|u[e+64+3>>0]<<24|0,u[e+64+4>>0]|u[e+64+4+1>>0]<<8|u[e+64+4+2>>0]<<16|u[e+64+4+3>>0]<<24|0,0|a,0|r),n=0|_(),t[e+64>>0]=i,t[e+64+1>>0]=i>>8,t[e+64+2>>0]=i>>16,t[e+64+3>>0]=i>>24,t[e+64+4>>0]=n,t[e+64+4+1>>0]=n>>8,t[e+64+4+2>>0]=n>>16,t[e+64+4+3>>0]=n>>24,a=0|yt(u[e+72>>0]|u[e+72+1>>0]<<8|u[e+72+2>>0]<<16|u[e+72+3>>0]<<24|0,u[e+72+4>>0]|u[e+72+4+1>>0]<<8|u[e+72+4+2>>0]<<16|u[e+72+4+3>>0]<<24|0,1&(n>>>0>>0|(0|n)==(0|r)&i>>>0>>0)|0,0),r=0|_(),t[e+72>>0]=a,t[e+72+1>>0]=a>>8,t[e+72+2>>0]=a>>16,t[e+72+3>>0]=a>>24,t[e+72+4>>0]=r,t[e+72+4+1>>0]=r>>8,t[e+72+4+2>>0]=r>>16,t[e+72+4+3>>0]=r>>24}function Ne(e,a,r,i,t,n,o,s,c,u,d,h){var A,g,p;e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,u|=0,d|=0,h|=0,p=f,g=f=f+63&-64,f=f+64|0,A=0|F(c|=0);do{if(A){if(l[g>>2]=A,l[g+4>>2]=c,l[g+8>>2]=i,l[g+12>>2]=t,l[g+16>>2]=n,l[g+20>>2]=o,l[g+24>>2]=0,l[g+24+4>>2]=0,l[g+24+8>>2]=0,l[g+24+12>>2]=0,l[g+40>>2]=e,l[g+44>>2]=a,l[g+48>>2]=r,l[g+52>>2]=r,l[g+56>>2]=0,0|(e=0|We(g,h))){Hr(A,c),L(A);break}if(0|s&&Ee(0|s,0|A,0|c),0!=(0|u)&0!=(0|d)&&0|ae(u,d,g,h)){Hr(A,c),Hr(u,d),L(A),e=-31;break}Hr(A,c),L(A),e=0}else e=-22}while(0);return f=p,0|e}function Ge(e,a,r,i,t,n,o,s,c,u,d,h){return e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,c|=0,u|=0,u=f,f=f+336|0,fi(u,64,0,d|=0,h|=0),Wt(u+64|0,u),Hr(u,64),wt(u+64|0,o,s,c),o=0|mt(0,0,0|s,0|c),_(),wt(u+64|0,35264,15&o,0),Wa(e,i,t,n,d,1,h),wt(u+64|0,e,t,n),o=0|mt(0,0,0|t,0|n),_(),wt(u+64|0,35264,15&o,0),ii(u+320|0,s,c),wt(u+64|0,u+320|0,8,0),ii(u+320|0,t,n),wt(u+64|0,u+320|0,8,0),Vt(u+64|0,a),Hr(u+64|0,256),0|r&&(l[r>>2]=16,l[r+4>>2]=0),f=u,0}function Ye(e,a){var r,i,t=0;return i=f,r=f=f+63&-64,f=f+288|0,O(40+(e|=0)|0,a|=0),pt(e+80|0),Y(r+240|0,e+40|0),R(r+192|0,r+240|0,16),aa(r+240|0,r+240|0,e+80|0),ra(r+192|0,r+192|0,e+80|0),Y(r+144|0,r+192|0),R(r+144|0,r+144|0,r+192|0),Y(e,r+144|0),R(e,e,r+192|0),R(e,e,r+240|0),be(e,e),R(e,e,r+144|0),R(e,e,r+240|0),Y(r+96|0,e),R(r+96|0,r+96|0,r+192|0),aa(r+48|0,r+96|0,r+240|0),0|Yi(r+48|0)?t=4:(ra(r,r+96|0,r+240|0),0|Yi(r)?(R(e,e,64),t=4):e=-1),4==(0|t)&&((0|(t=0|Xi(e)))==((0|u[a+31>>0])>>>7|0)&&_a(e,e),R(e+120|0,e,e+40|0),e=0),f=i,0|e}function Je(e,a,r){var i,t,n,o,s,c,u,d,h,A,g,p,m,f,y,b,k,w,v;a|=0,r|=0,v=0|l[(e|=0)>>2],k=0|l[e+4>>2],y=0|l[e+8>>2],m=0|l[e+12>>2],g=0|l[e+16>>2],h=0|l[e+20>>2],u=0|l[e+24>>2],s=0|l[e+28>>2],n=0|l[e+32>>2],i=0|l[e+36>>2],w=(l[a+4>>2]^k)&0-r,b=(l[a+8>>2]^y)&0-r,f=(l[a+12>>2]^m)&0-r,p=(l[a+16>>2]^g)&0-r,A=(l[a+20>>2]^h)&0-r,d=(l[a+24>>2]^u)&0-r,c=(l[a+28>>2]^s)&0-r,o=(l[a+32>>2]^n)&0-r,t=(l[a+36>>2]^i)&0-r,l[e>>2]=(l[a>>2]^v)&0-r^v,l[e+4>>2]=w^k,l[e+8>>2]=b^y,l[e+12>>2]=f^m,l[e+16>>2]=p^g,l[e+20>>2]=A^h,l[e+24>>2]=d^u,l[e+28>>2]=c^s,l[e+32>>2]=o^n,l[e+36>>2]=t^i}function Pe(e){var a,r,i=0,n=0,o=0;a=f,r=f=f+63&-64,f=f+48|0,n=e|=0,o=(i=r)+32|0;do{t[i>>0]=0|t[n>>0],i=i+1|0,n=n+1|0}while((0|i)<(0|o));i=u[e+36+4>>0]|u[e+36+4+1>>0]<<8|u[e+36+4+2>>0]<<16|u[e+36+4+3>>0]<<24,l[r+32>>2]=u[e+36>>0]|u[e+36+1>>0]<<8|u[e+36+2>>0]<<16|u[e+36+3>>0]<<24,l[r+32+4>>2]=i,si(r,r,40,0,e+32|0,e),n=r,o=(i=e)+32|0;do{t[i>>0]=0|t[n>>0],i=i+1|0,n=n+1|0}while((0|i)<(0|o));n=0|l[r+32>>2],o=0|l[r+32+4>>2],t[e+36>>0]=n,t[e+36+1>>0]=n>>8,t[e+36+2>>0]=n>>16,t[e+36+3>>0]=n>>24,t[e+36+4>>0]=o,t[e+36+4+1>>0]=o>>8,t[e+36+4+2>>0]=o>>16,t[e+36+4+3>>0]=o>>24,gt(e),f=a}function Le(e,a){var r,i,t,n,o;return t=f,o=f=f+63&-64,f=f+384|0,O(40+(e|=0)|0,a|=0),pt(e+80|0),Y(o+336|0,e+40|0),R(o+288|0,o+336|0,16),aa(o+336|0,o+336|0,e+80|0),ra(o+288|0,o+288|0,e+80|0),Y(o+240|0,o+288|0),R(o+240|0,o+240|0,o+288|0),Y(e,o+240|0),R(e,e,o+288|0),R(e,e,o+336|0),be(e,e),R(e,e,o+240|0),R(e,e,o+336|0),Y(o+192|0,e),R(o+192|0,o+192|0,o+288|0),aa(o+144|0,o+192|0,o+336|0),ra(o+96|0,o+192|0,o+336|0),r=0|Yi(o+144|0),i=0|Yi(o+96|0),R(o,e,64),Je(e,o,1-r|0),_a(o+48|0,e),n=0|Xi(e),Je(e,o+48|0,(0|u[a+31>>0])>>>7^n),R(e+120|0,e,e+40|0),f=t,(i|r)-1|0}function Te(e,a,r,i,t,n,o,s,l,c,u){var d;e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,l|=0,d=f,f=f+352|0,zi(d+16|0,64,0,c|=0,u|=0),Wt(d+80|0,d+16|0),Hr(d+16|0,64),wt(d+80|0,o,s,l),ii(d+336|0,s,l),wt(d+80|0,d+336|0,8,0),wt(d+80|0,r,i,t),ii(d+336|0,i,t),wt(d+80|0,d+336|0,8,0),Vt(d+80|0,d),Hr(d+80|0,256),a=0|An(d,n),Hr(d,16);do{if(e){if(a){la(0|e,0,0|i),a=-1;break}Lr(e,r,i,t,c,1,0,u),a=0;break}}while(0);return f=d,0|a}function Ke(e,a){e|=0,a|=0;var r=0,i=0,n=0,o=0,s=0;r=0;do{t[e+r>>0]=(0|u[a+(r>>>3)>>0])>>>(7&r)&1,r=r+1|0}while(256!=(0|r));o=0;do{s=e+o|0;e:do{if(0|t[s>>0]){n=1;do{if((r=n+o|0)>>>0>=256)break e;a=0|t[e+r>>0];a:do{if(a<<24>>24){if(((a=a<<24>>24<>0])|0)<16){t[s>>0]=a+i,t[e+r>>0]=0;break}if((i-a|0)<-15)break e;for(t[s>>0]=i-a;0|t[(a=e+r|0)>>0];)if(t[a>>0]=0,(r=r+1|0)>>>0>=256)break a;t[a>>0]=1}}while(0);n=n+1|0}while(n>>>0<7)}}while(0);o=o+1|0}while(256!=(0|o))}function $e(e,a,r,i,t,n,o){var s,c;e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,s=f,c=f=f+63&-64,f=f+560|0,bt(c+192|0,o|=0),Jr(c+128|0,n,32,0),ie(c+192|0,c+128+32|0,32,0),ie(c+192|0,r,i,t),Ai(c+192|0,c+64|0),Rr(e+32|0,n+32|0,32),U(c+64|0),De(c+400|0,c+64|0),gr(e,c+400|0),bt(c+192|0,o),ie(c+192|0,e,64,0),ie(c+192|0,r,i,t),Ai(c+192|0,c),U(c),Rt(c+128|0),S(e+32|0,c,c+128|0,c+64|0),Hr(c+128|0,64),Hr(c+64|0,64),0|a&&(l[a>>2]=64,l[a+4>>2]=0),f=s}function Oe(e,a,r,i,t,n){e|=0,a|=0,r|=0,i|=0,t|=0,n|=0;var o=0;do{if(a){if(o=(0|l[e+24>>2])-(0|l[e+20>>2])|0,n){o=i+-1+o|0;break}o=o+((0==(0|i))<<31>>31)|0;break}if(!(r<<24>>24)){o=i+-1|0;break}if(o=0|b(0|l[e+20>>2],255&r),n){o=i+-1+o|0;break}o=o+((0==(0|i))<<31>>31)|0;break}while(0);return ji(0|t,0,0|t,0),ji(0|_(),0,0|o,0),n=0|mt(o+-1|0,0,0|_(),0),t=0|_(),0==(0|a)|r<<24>>24==3?(o=0,i=0):(o=0|b(0|l[e+20>>2],1+(255&r)|0),i=0),e=0|_i(0|(a=0|yt(0|n,0|t,0|o,0|i)),0|(r=0|_()),0|l[e+24>>2],0),_(),0|e}function Xe(e,a,r,i,t){i|=0,t|=0;var n,o,s,c=0;if(s=f,o=f=f+63&-64,f=f+64|0,(r|=0)>>>0>0|0==(0|r)&(a|=0)>>>0>4294967295|(n=0|Ma(e|=0))>>>0>127)l[8966]=22,r=-1;else{c=(r=o)+60|0;do{l[r>>2]=0,r=r+4|0}while((0|r)<(0|c));(c=0|function(e){var a;return(a=0|F(e|=0))&&3&l[a+-4>>2]?(la(0|a,0,0|e),0|a):0|a}(n))?(l[o+16>>2]=c,l[o+8>>2]=c,l[o>>2]=c,l[o+20>>2]=n,l[o+12>>2]=n,l[o+4>>2]=n,l[o+24>>2]=0,l[o+24+4>>2]=0,l[o+24+8>>2]=0,l[o+24+12>>2]=0,0|se(o,e,t)?(l[8966]=22,r=-1):r=(0|l[o+40>>2])==(0|a)?(0|l[o+44>>2])!=(i>>>10|0)&1:1,L(c)):r=-1}return f=s,0|r}function Ve(e,a,r,i,t,n){var o,s;return a|=0,r|=0,i|=0,t|=0,n|=0,s=f,o=f=f+63&-64,f=f+592|0,0!=(0|_r(32+(e|=0)|0))&&0==(0|ta(e))&&0!=(0|mi(t))&&0==(0|ta(t))&&0==(0|Ye(o+424|0,t))?(bt(o+96|0,n),ie(o+96|0,e,32,0),ie(o+96|0,t,32,0),ie(o+96|0,a,r,i),Ai(o+96|0,o+32|0),U(o+32|0),te(o+304|0,o+32|0,o+424|0,e+32|0),gr(o,o+304|0),n=0|hn(o,e),e=0|((0|o)==(0|e)?-1:n)|Pa(e,o,32)):e=-1,f=s,0|e}function We(e,a){a|=0;var r,i,t=0,n=0,o=0;if(i=f,r=f=f+63&-64,f=f+48|0,!(t=0|Me(e|=0)))if((a+-1|0)>>>0<=1){if(n=0|l[e+44>>2],t=0|l[e+48>>2],o=0|b(n=((n>>>0>>0?t<<3:n)>>>0)/(t<<2>>>0)|0,t<<2),l[r>>2]=0,l[r+8>>2]=l[e+40>>2],l[r+12>>2]=-1,l[r+16>>2]=o,l[r+20>>2]=n,l[r+24>>2]=n<<2,l[r+28>>2]=t,l[r+32>>2]=l[e+52>>2],l[r+36>>2]=a,!(t=0|function(e,a){e|=0,a|=0;var r,i,t=0;i=f,r=f=f+63&-64,f=f+80|0;do{if(0==(0|e)|0==(0|a))t=-25;else{if(t=0|F(l[e+20>>2]<<3),l[e+4>>2]=t,t){if(t=0|pa(e,0|l[e+16>>2])){st(e,0|l[a+56>>2]);break}ue(r,a,0|l[e+36>>2]),Hr(r+64|0,8),Ba(r,e),Hr(r,72),t=0;break}t=-22}}while(0);return f=i,0|t}(r,e))){if(0|l[r+8>>2]){t=0;do{Aa(r,t),t=t+1|0}while(t>>>0<(0|l[r+8>>2])>>>0)}!function(e,a){var r,i,t=0,n=0;if(r=f,i=f=f+63&-64,f=f+2048|0,0!=(0|(e|=0))&0!=(0|(a|=0))){if(gn(i+1024|0,(0|l[4+(0|l[a>>2])>>2])+(l[a+24>>2]<<10)-1024|0),(0|l[a+28>>2])>>>0>1){t=1;do{n=(n=0|l[a+24>>2])-1+(0|b(n,t))|0,Nr(i+1024|0,(0|l[4+(0|l[a>>2])>>2])+(n<<10)|0),t=t+1|0}while(t>>>0<(0|l[a+28>>2])>>>0)}!function(e,a){e|=0,a|=0;var r=0,i=0;r=0;do{ii(e+(r<<3)|0,0|l[(i=a+(r<<3)|0)>>2],0|l[i+4>>2]),r=r+1|0}while(128!=(0|r))}(i,i+1024|0),he(0|l[e>>2],0|l[e+4>>2],i,1024),Hr(i+1024|0,1024),Hr(i,1024),st(a,0|l[e+56>>2])}f=r}(e,r),t=0}}else t=-26;return f=i,0|t}function Ze(e,a,r,i,n){e|=0,a|=0,r|=0,n|=0;var o,s,c,u=0,d=0,h=0,A=0,g=0;return c=f,s=f=f+63&-64,f=f+48|0,(o=0|vr(i|=0,s+40|0,s+36|0,s+32|0))?(h=0|Li(1,0,0|l[s+40>>2]),A=0|_(),!((45+(d=(u=(u=0|function(e){return 0|function(e,a){e|=0,a|=0;var r=0;e:do{if(a)for(r=a;;){if(36==(0|t[(a=e+(r=r+-1|0)|0)>>0]))break e;if(!r){a=0;break}}else a=0}while(0);return 0|a}(e|=0,1+(0|Ma(e))|0)}(o))?u-o|0:0|Ma(o))+(o-i)|0)|0)>>>0>102|(d+45|0)>>>0>>0||0!=(0|we(e,a,r,o,u,h,A,0|l[s+36>>2],0|l[s+32>>2],s,32)))&&(Ee(0|n,0|i,0|d),t[n+d>>0]=36,g=0|nr(n+d+1|0,n+102-(n+d+1)|0,s),Hr(s,32),0!=(0|g)&g>>>0<(n+102|0)>>>0)?t[g>>0]=0:n=0):n=0,f=c,0|n}function ea(e,a,r){e|=0,a|=0,r|=0;var i,n,o=0,s=0;i=f,n=f=f+63&-64,f=f+128|0,l[(s=n+64+32|0)>>2]=0,l[s+4>>2]=0,l[s+8>>2]=0,l[s+12>>2]=0,l[s+16>>2]=0,l[s+20>>2]=0,l[s+24>>2]=0,l[s+28>>2]=0,o=32+(s=n+64|0)|0;do{t[s>>0]=0|t[a>>0],s=s+1|0,a=a+1|0}while((0|s)<(0|o));l[n+32>>2]=0,l[n+32+4>>2]=0,l[n+32+8>>2]=0,l[n+32+12>>2]=0,l[n+32+16>>2]=0,l[n+32+20>>2]=0,l[n+32+24>>2]=0,l[n+32+28>>2]=0,a=r,o=(s=n)+32|0;do{t[s>>0]=0|t[a>>0],s=s+1|0,a=a+1|0}while((0|s)<(0|o));(function(e,a){e|=0,a|=0;var r=0,i=0,n=0;for(i=0,r=0;r=r+(0|u[(n=e+i|0)>>0])+(0|u[a+i>>0])|0,t[n>>0]=r,32!=(0|(i=i+1|0));)r>>>=8})(n+64|0,n),Ka(e,n+64|0),f=i}function aa(e,a,r){var i,t,n,o,s,c,u,d,h;e|=0,r|=0,h=(0|l[4+(a|=0)>>2])-(0|l[r+4>>2])|0,d=(0|l[a+8>>2])-(0|l[r+8>>2])|0,u=(0|l[a+12>>2])-(0|l[r+12>>2])|0,c=(0|l[a+16>>2])-(0|l[r+16>>2])|0,s=(0|l[a+20>>2])-(0|l[r+20>>2])|0,o=(0|l[a+24>>2])-(0|l[r+24>>2])|0,n=(0|l[a+28>>2])-(0|l[r+28>>2])|0,t=(0|l[a+32>>2])-(0|l[r+32>>2])|0,i=(0|l[a+36>>2])-(0|l[r+36>>2])|0,l[e>>2]=(0|l[a>>2])-(0|l[r>>2]),l[e+4>>2]=h,l[e+8>>2]=d,l[e+12>>2]=u,l[e+16>>2]=c,l[e+20>>2]=s,l[e+24>>2]=o,l[e+28>>2]=n,l[e+32>>2]=t,l[e+36>>2]=i}function ra(e,a,r){var i,t,n,o,s,c,u,d,h;e|=0,a|=0,h=(0|l[4+(r|=0)>>2])+(0|l[a+4>>2])|0,d=(0|l[r+8>>2])+(0|l[a+8>>2])|0,u=(0|l[r+12>>2])+(0|l[a+12>>2])|0,c=(0|l[r+16>>2])+(0|l[a+16>>2])|0,s=(0|l[r+20>>2])+(0|l[a+20>>2])|0,o=(0|l[r+24>>2])+(0|l[a+24>>2])|0,n=(0|l[r+28>>2])+(0|l[a+28>>2])|0,t=(0|l[r+32>>2])+(0|l[a+32>>2])|0,i=(0|l[r+36>>2])+(0|l[a+36>>2])|0,l[e>>2]=(0|l[r>>2])+(0|l[a>>2]),l[e+4>>2]=h,l[e+8>>2]=d,l[e+12>>2]=u,l[e+16>>2]=c,l[e+20>>2]=s,l[e+24>>2]=o,l[e+28>>2]=n,l[e+32>>2]=t,l[e+36>>2]=i}function ia(e,a,r,i,t,n,o,s,c,u,d,h){return e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,c|=0,u|=0,u=f,f=f+336|0,zi(u,64,0,d|=0,h|=0),Wt(u+64|0,u),Hr(u,64),wt(u+64|0,o,s,c),ii(u+320|0,s,c),wt(u+64|0,u+320|0,8,0),Lr(e,i,t,n,d,1,0,h),wt(u+64|0,e,t,n),ii(u+320|0,t,n),wt(u+64|0,u+320|0,8,0),Vt(u+64|0,a),Hr(u+64|0,256),0|r&&(l[r>>2]=16,l[r+4>>2]=0),f=u,0}function ta(e){e|=0;var a,r,i=0,n=0,o=0,s=0;a=f,r=f=f+63&-64,f=f+16|0,t[r>>0]=0,t[r+1>>0]=0,t[r+2>>0]=0,t[r+3>>0]=0,t[r+4>>0]=0,t[r+5>>0]=0,t[r+6>>0]=0,n=0;do{o=0|t[e+n>>0],i=0;do{t[(s=r+i|0)>>0]=t[s>>0]|t[32096+(i<<5)+n>>0]^o,i=i+1|0}while(7!=(0|i));n=n+1|0}while(31!=(0|n));n=127&t[e+31>>0],i=0;do{t[(s=r+i|0)>>0]=t[s>>0]|n^t[32096+(i<<5)+31>>0],i=i+1|0}while(7!=(0|i));i=0,n=0;do{i=(0|u[r+n>>0])-1|i,n=n+1|0}while(7!=(0|n));return f=a,i>>>8&1|0}function na(e,a,r,i){var n,o;e|=0,r|=0,i|=0,n=f,o=f=f+63&-64,f=f+64|0,((a|=0)-1&255)>63&&ao(),t[o>>0]=a,t[o+1>>0]=0,t[o+2>>0]=1,t[o+3>>0]=1,Tt(o+4|0),ii(o+8|0,0,0),l[o+16>>2]=0,l[o+16+4>>2]=0,l[o+16+8>>2]=0,l[o+16+12>>2]=0,r?Gi(o,r):(l[o+32>>2]=0,l[o+32+4>>2]=0,l[o+32+8>>2]=0,l[o+32+12>>2]=0),i?Ri(o,i):(l[o+48>>2]=0,l[o+48+4>>2]=0,l[o+48+8>>2]=0,l[o+48+12>>2]=0),Ia(e,o),f=n}function oa(e,a,r){var i,t,n;e|=0,a|=0,i=f,n=f=f+63&-64,f=f+160|0,r=((r|=0)<<24>>24)-((0-(255&(t=0|En(r)))&r<<24>>24)<<1)&255,function(e){pt(e|=0),pt(e+40|0),pt(e+80|0),Ft(e+120|0)}(e),Ii(e,a,0|cn(r,1)),Ii(e,a+160|0,0|cn(r,2)),Ii(e,a+320|0,0|cn(r,3)),Ii(e,a+480|0,0|cn(r,4)),Ii(e,a+640|0,0|cn(r,5)),Ii(e,a+800|0,0|cn(r,6)),Ii(e,a+960|0,0|cn(r,7)),Ii(e,a+1120|0,0|cn(r,8)),Sa(n,e+40|0),Sa(n+40|0,e),Sa(n+80|0,e+80|0),_a(n+120|0,e+120|0),Ii(e,n,t),f=i}function sa(e,a,r,i,t,n,o,s,c,u,d){r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,c|=0,u|=0,d|=0,la(0|(e|=0),0,0|(a|=0));do{if(!(r>>>0>0|0==(0|r)&a>>>0>4294967295)){if(r>>>0<0|0==(0|r)&a>>>0<16){l[8966]=22,e=-1;break}if((c|n)>>>0>0|0==(c|n|0)&(s|t)>>>0>4294967295|u>>>0>2147483648){l[8966]=27,e=-1;break}if(c>>>0<0|0==(0|c)&s>>>0<3|u>>>0<8192){l[8966]=22,e=-1;break}if(1==(0|d)){e=(0!=(0|et(s,u>>>10,i,t,o,e,a)))<<31>>31;break}l[8966]=22,e=-1;break}l[8966]=27,e=-1}while(0);return 0|e}function la(e,a,r){a|=0;var i,n=0;if(i=(e|=0)+(r|=0)|0,a&=255,(0|r)>=67){for(;3&e;)t[e>>0]=a,e=e+1|0;for(n=a|a<<8|a<<16|a<<24;(0|e)<=((-4&i)-64|0);)l[e>>2]=n,l[e+4>>2]=n,l[e+8>>2]=n,l[e+12>>2]=n,l[e+16>>2]=n,l[e+20>>2]=n,l[e+24>>2]=n,l[e+28>>2]=n,l[e+32>>2]=n,l[e+36>>2]=n,l[e+40>>2]=n,l[e+44>>2]=n,l[e+48>>2]=n,l[e+52>>2]=n,l[e+56>>2]=n,l[e+60>>2]=n,e=e+64|0;for(;(0|e)<(-4&i|0);)l[e>>2]=n,e=e+4|0}for(;(0|e)<(0|i);)t[e>>0]=a,e=e+1|0;return i-r|0}function ca(e,a,r,i,t,n,o,s,c,u,d){r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,c|=0,u|=0,d|=0,la(0|(e|=0),0,0|(a|=0));do{if(!(r>>>0>0|0==(0|r)&a>>>0>4294967295)){if(r>>>0<0|0==(0|r)&a>>>0<16){l[8966]=22,e=-1;break}if((c|n)>>>0>0|0==(c|n|0)&(s|t)>>>0>4294967295|u>>>0>2147483648){l[8966]=27,e=-1;break}if(0==(0|s)&0==(0|c)|u>>>0<8192){l[8966]=22,e=-1;break}if(2==(0|d)){e=(0!=(0|Zi(s,u>>>10,i,t,o,e,a)))<<31>>31;break}l[8966]=22,e=-1;break}l[8966]=27,e=-1}while(0);return 0|e}function ua(e,a,r,i){e|=0,r|=0,i|=0;var n,o,s=0;if(n=f,o=f=f+63&-64,f=f+192|0,((a|=0)-1&255)>63&&ao(),!((i+-1&255)>63|0==(0|r))){t[o+128>>0]=a,t[o+128+1>>0]=i,t[o+128+2>>0]=1,t[o+128+3>>0]=1,Tt(o+128+4|0),ii(o+128+8|0,0,0),s=48+(a=o+128+16|0)|0;do{l[a>>2]=0,a=a+4|0}while((0|a)<(0|s));return Ia(e,o+128|0),la(o+(255&i)|0,0,128-(255&i)|0),Ee(0|o,0|r,255&i|0),ke(e,o,128,0),Hr(o,128),void(f=n)}ao()}function da(e,a){e|=0;var r=0;r=67108863&(0|Pt(a|=0)),l[e>>2]=r,r=(0|Pt(a+3|0))>>>2&67108611,l[e+4>>2]=r,r=(0|Pt(a+6|0))>>>4&67092735,l[e+8>>2]=r,r=(0|Pt(a+9|0))>>>6&66076671,l[e+12>>2]=r,r=(0|Pt(a+12|0))>>>8&1048575,l[e+16>>2]=r,l[e+20>>2]=0,l[e+20+4>>2]=0,l[e+20+8>>2]=0,l[e+20+12>>2]=0,l[e+20+16>>2]=0,r=0|Pt(a+16|0),l[e+40>>2]=r,r=0|Pt(a+20|0),l[e+44>>2]=r,r=0|Pt(a+24|0),l[e+48>>2]=r,a=0|Pt(a+28|0),l[e+52>>2]=a,l[e+56>>2]=0,l[e+56+4>>2]=0,t[e+80>>0]=0}function ha(e,a,r,i,t,n){e|=0,a|=0,r|=0,i|=0,t|=0,n|=0;var o=0,s=0,c=0;do{if(t>>>0<0|0==(0|t)&i>>>0<64||(o=0|yt(0|i,0|t,-64,-1),(s=0|_())>>>0>0|0==(0|s)&o>>>0>4294967231))c=10;else{if(0|dt(r,r+64|0,o,s,n)){if(!e){c=10;break}la(0|e,0,0|o),c=10;break}0|a&&(l[a>>2]=o,l[a+4>>2]=s),e?(Rr(0|e,r+64|0,0|o),e=0):e=0}}while(0);return 10==(0|c)&&(a?(l[a>>2]=0,l[a+4>>2]=0,e=-1):e=-1),0|e}function Aa(e,a){a|=0;var r,i,n=0,o=0;if(r=f,i=f=f+63&-64,f=f+32|0,0|(e|=0)&&0|(n=0|l[e+28>>2])){l[i>>2]=a,o=0,a=n;do{if(t[i+8>>0]=o,a){n=0;do{l[i+4>>2]=n,l[i+12>>2]=0,l[i+16>>2]=l[i>>2],l[i+16+4>>2]=l[i+4>>2],l[i+16+8>>2]=l[i+8>>2],l[i+16+12>>2]=l[i+12>>2],de(e,i+16|0),n=n+1|0,a=0|l[e+28>>2]}while(n>>>0>>0)}else a=0;o=o+1|0}while(4!=(0|o))}f=r}function ga(e,a,r,i,t,n){var o,s,c;return e|=0,a|=0,r|=0,i|=0,n|=0,s=f,o=f=f+63&-64,f=f+32|0,c=u[4+(t|=0)>>0]|u[t+4+1>>0]<<8|u[t+4+2>>0]<<16|u[t+4+3>>0]<<24,l[o+16>>2]=u[t>>0]|u[t+1>>0]<<8|u[t+2>>0]<<16|u[t+3>>0]<<24,l[o+16+4>>2]=c,l[o+16+8>>2]=0,l[o+16+8+4>>2]=0,ii(o,r,i),l[o+8>>2]=0,l[o+8+4>>2]=0,(a+-16|0)>>>0>48?(l[8966]=22,e=-1):e=0|xr(e,a,0,0,0,n,32,o,o+16|0),f=s,0|e}function pa(e,a){e|=0,a|=0;var r,i,t=0;i=f,r=f=f+63&-64,f=f+16|0;do{if(0!=(0|e)&&0!=(0|a)&&1024==(0|(a<<10>>>0)/(a>>>0))&&(t=0|F(12),l[e>>2]=t,0!=(0|t))){if(l[t+4>>2]=0,l[t>>2]=0,t=0|$i(r,a<<10),l[8966]=t,t)l[r>>2]=0;else if(0|(t=0|l[r>>2])){l[l[e>>2]>>2]=t,l[4+(0|l[e>>2])>>2]=t,l[8+(0|l[e>>2])>>2]=a<<10,t=0;break}L(0|l[e>>2]),l[e>>2]=0,t=-22}else t=-22}while(0);return f=i,0|t}function ma(e,a,r,i){var n,o;if(e|=0,a|=0,i|=0,o=f,n=f=f+63&-64,f=f+320|0,0!=(0|mi(r|=0))&&0==(0|ta(r))&&0==(0|Le(n,r))&&0!=(0|Fi(n))){r=0;do{t[e+r>>0]=0|t[a+r>>0],r=r+1|0}while(32!=(0|r));0|i&&Rt(e),function(e,a,r){e|=0,a|=0;var i,n,o=0,s=0;i=f,n=f=f+63&-64,f=f+4032|0,Hi(n,r|=0),Ni(n+3584|0,r),Di(n+2464|0,n+3584|0),Hi(n+160|0,n+2464|0),Ra(n+3424|0,r,n+160|0),Di(n+2304|0,n+3424|0),Hi(n+320|0,n+2304|0),Ni(n+3264|0,n+2464|0),Di(n+2144|0,n+3264|0),Hi(n+480|0,n+2144|0),Ra(n+3104|0,r,n+480|0),Di(n+1984|0,n+3104|0),Hi(n+640|0,n+1984|0),Ni(n+2944|0,n+2304|0),Di(n+1824|0,n+2944|0),Hi(n+800|0,n+1824|0),Ra(n+2784|0,r,n+800|0),Di(n+1664|0,n+2784|0),Hi(n+960|0,n+1664|0),Ni(n+2624|0,n+2144|0),Di(n+1504|0,n+2624|0),Hi(n+1120|0,n+1504|0),r=0;do{s=0|t[a+r>>0],t[n+1280+(o=r<<1)>>0]=15&s,t[n+1280+(1|o)>>0]=(255&s)>>>4,r=r+1|0}while(32!=(0|r));r=0,a=0;do{r=134217728+((o=r+(0|u[(s=n+1280+a|0)>>0])|0)<<24)>>28,t[s>>0]=o-(r<<4),a=a+1|0}while(63!=(0|a));r=r+(0|u[n+1280+63>>0])&255,t[n+1280+63>>0]=r,$t(e),oa(n+1344|0,n,r),Ra(n+3864|0,e,n+1344|0),r=63;do{it(n+3744|0,n+3864|0),ar(n+3864|0,n+3744|0),it(n+3744|0,n+3864|0),ar(n+3864|0,n+3744|0),it(n+3744|0,n+3864|0),ar(n+3864|0,n+3744|0),it(n+3744|0,n+3864|0),ar(n+3864|0,n+3744|0),Di(e,n+3864|0),oa(n+1344|0,n,0|t[n+1280+(r=r+-1|0)>>0]),Ra(n+3864|0,e,n+1344|0)}while(0!=(0|r));Di(e,n+3864|0),f=i}(n+160|0,e,n),gr(e,n+160|0),r=0|yi(e)?-1:(0!=(0|Qr(a,32)))<<31>>31}else r=-1;return f=o,0|r}function fa(e,a,r,i,n,o,s){a|=0,r|=0,i|=0,n|=0,o|=0,s|=0;var c,u,d,h=0;d=f,c=f=f+63&-64,f=f+16|0,u=128+(h=e|=0)|0;do{t[h>>0]=0,h=h+1|0}while((0|h)<(0|u));do{if(!((o|i)>>>0>0|0==(o|i|0)&(n|r)>>>0>4294967295|s>>>0>2147483648)){if(o>>>0<0|0==(0|o)&n>>>0<3|s>>>0<8192){l[8966]=22,e=-1;break}xi(c,16),e=(0!=(0|ct(n,s>>>10,a,r,c,e)))<<31>>31;break}l[8966]=27,e=-1}while(0);return f=d,0|e}function ya(e,a,r,i,t,n,o,s,c,d,h,A){return e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,c|=0,d|=0,h|=0,A|=0,d=f,f=f+48|0,l[d+32>>2]=0,re(d,h,A,0),A=u[h+16+4>>0]|u[h+16+4+1>>0]<<8|u[h+16+4+2>>0]<<16|u[h+16+4+3>>0]<<24,l[d+32+4>>2]=u[h+16>>0]|u[h+16+1>>0]<<8|u[h+16+2>>0]<<16|u[h+16+3>>0]<<24,l[d+32+4+4>>2]=A,function(e,a,r,i,t,n,o,s,c,u,d){var h;e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,c|=0,h=f,f=f+336|0,bi(h,64,0,u|=0,d|=0),Wt(h+64|0,h),Hr(h,64),wt(h+64|0,o,s,c),o=0|mt(0,0,0|s,0|c),_(),wt(h+64|0,35280,15&o,0),Or(e,i,t,n,u,1,d),wt(h+64|0,e,t,n),u=0|mt(0,0,0|t,0|n),_(),wt(h+64|0,35280,15&u,0),ii(h+320|0,s,c),wt(h+64|0,h+320|0,8,0),ii(h+320|0,t,n),wt(h+64|0,h+320|0,8,0),Vt(h+64|0,a),Hr(h+64|0,256),0|r&&(l[r>>2]=16,l[r+4>>2]=0),f=h}(e,a,r,i,t,n,o,s,c,d+32|0,d),Hr(d,32),f=d,0}function ba(e,a,r,i,n){e|=0,a|=0,r|=0,i|=0,n|=0;var o=0,s=0;e:do{if(n){for(s=0|l[r>>2];;){if(s>>>0>=a>>>0){o=4;break}if((o=0|t[e+s>>0])<<24>>24!=61){if(!i){o=9;break}if(!(0|Ht(i,o<<24>>24))){o=9;break}}else n=n+-1|0;if(s=s+1|0,l[r>>2]=s,!n){n=0;break e}}if(4==(0|o)){l[8966]=34,n=-1;break}if(9==(0|o)){l[8966]=22,n=-1;break}}else n=0}while(0);return 0|n}function ka(e,a,r,i,n,o,s){a|=0,r|=0,i|=0,n|=0,o|=0,s|=0;var c,u,d,h=0;d=f,c=f=f+63&-64,f=f+16|0,u=128+(h=e|=0)|0;do{t[h>>0]=0,h=h+1|0}while((0|h)<(0|u));do{if(!((o|i)>>>0>0|0==(o|i|0)&(n|r)>>>0>4294967295|s>>>0>2147483648)){if(0==(0|n)&0==(0|o)|s>>>0<8192){l[8966]=22,e=-1;break}xi(c,16),e=(0!=(0|lt(n,s>>>10,a,r,c,e)))<<31>>31;break}l[8966]=27,e=-1}while(0);return f=d,0|e}function wa(e,a,r,i,t,n,o,s,c,d,h){return e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,c|=0,d|=0,h|=0,a=f,f=f+48|0,l[a+32>>2]=0,re(a,d,h,0),h=u[d+16+4>>0]|u[d+16+4+1>>0]<<8|u[d+16+4+2>>0]<<16|u[d+16+4+3>>0]<<24,l[a+32+4>>2]=u[d+16>>0]|u[d+16+1>>0]<<8|u[d+16+2>>0]<<16|u[d+16+3>>0]<<24,l[a+32+4+4>>2]=h,d=0|function(e,a,r,i,t,n,o,s,l,c){var u;e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,u=f,f=f+352|0,bi(u+16|0,64,0,l|=0,c|=0),Wt(u+80|0,u+16|0),Hr(u+16|0,64),wt(u+80|0,n,o,s),n=0|mt(0,0,0|o,0|s),_(),wt(u+80|0,35280,15&n,0),wt(u+80|0,a,r,i),n=0|mt(0,0,0|r,0|i),_(),wt(u+80|0,35280,15&n,0),ii(u+336|0,o,s),wt(u+80|0,u+336|0,8,0),ii(u+336|0,r,i),wt(u+80|0,u+336|0,8,0),Vt(u+80|0,u),Hr(u+80|0,256),t=0|An(u,t),Hr(u,16);do{if(e){if(t){la(0|e,0,0|r),t=-1;break}Or(e,a,r,i,l,1,c),t=0;break}}while(0);return f=u,0|t}(e,r,i,t,n,o,s,c,a+32|0,a),Hr(a,32),f=a,0|d}function va(e,a,r,i,t,n){var o,s;if(r|=0,i|=0,t|=0,n|=0,o=f,s=f=f+63&-64,f=f+464|0,Ue(s+240|0,e|=0,a|=0),xt(s+240|0,r,i,0),0|n){e=0,a=0;do{vt(s+448|0,e=e+1|0),Ee(s+32|0,s+240|0,208),xt(s+32|0,s+448|0,4,0),ri(s+32|0,s),Ee(t+a|0,0|s,0|((i=n-a|0)>>>0<32?i:32)),a=e<<5}while(a>>>0>>0)}Hr(s+240|0,208),f=o}function Ia(e,a){a|=0;var r=0,i=0,n=0,o=0;!function(e){var a,r=0,i=0;i=32720,a=64+(r=e|=0)|0;do{t[r>>0]=0|t[i>>0],r=r+1|0,i=i+1|0}while((0|r)<(0|a));la(e+64|0,0,293)}(e|=0),r=0;do{o=0|gi(a+(r<<3)|0),n=0|_(),o=(u[(i=e+(r<<3)|0)>>0]|u[i+1>>0]<<8|u[i+2>>0]<<16|u[i+3>>0]<<24)^o,n=(u[i+4>>0]|u[i+4+1>>0]<<8|u[i+4+2>>0]<<16|u[i+4+3>>0]<<24)^n,t[i>>0]=o,t[i+1>>0]=o>>8,t[i+2>>0]=o>>16,t[i+3>>0]=o>>24,t[i+4>>0]=n,t[i+4+1>>0]=n>>8,t[i+4+2>>0]=n>>16,t[i+4+3>>0]=n>>24,r=r+1|0}while(8!=(0|r))}function _a(e,a){var r,i,t,n,o,s,c,u,d;e|=0,d=0-(0|l[4+(a|=0)>>2])|0,u=0-(0|l[a+8>>2])|0,c=0-(0|l[a+12>>2])|0,s=0-(0|l[a+16>>2])|0,o=0-(0|l[a+20>>2])|0,n=0-(0|l[a+24>>2])|0,t=0-(0|l[a+28>>2])|0,i=0-(0|l[a+32>>2])|0,r=0-(0|l[a+36>>2])|0,l[e>>2]=0-(0|l[a>>2]),l[e+4>>2]=d,l[e+8>>2]=u,l[e+12>>2]=c,l[e+16>>2]=s,l[e+20>>2]=o,l[e+24>>2]=n,l[e+28>>2]=t,l[e+32>>2]=i,l[e+36>>2]=r}function Ba(e,a){e|=0;var r,i,t=0;if(r=f,i=f=f+63&-64,f=f+1024|0,0|l[28+(a|=0)>>2]){t=0;do{_t(e+64|0,0),_t(e+68|0,t),he(i,1024,e,72),ti((0|l[4+(0|l[a>>2])>>2])+((0|b(0|l[a+24>>2],t))<<10)|0,i),_t(e+64|0,1),he(i,1024,e,72),ti((0|l[4+(0|l[a>>2])>>2])+(1+(0|b(0|l[a+24>>2],t))<<10)|0,i),t=t+1|0}while(t>>>0<(0|l[a+28>>2])>>>0)}Hr(i,1024),f=r}function Ca(e){var a,r,i,t,n,o,s=0;return n=0|u[7+(e|=0)>>0],o=0|Li(0|u[e+6>>0],0,8),s=0|_(),t=0|Li(0|u[e+5>>0],0,16),s=0|s|_(),i=0|Li(0|u[e+4>>0],0,24),s=0|(s=0|s|_())|u[e+3>>0],r=0|Li(0|u[e+2>>0],0,40),s=0|s|_(),a=0|Li(0|u[e+1>>0],0,48),s=0|s|_(),e=0|Li(0|u[e>>0],0,56),I(0|s|_()|0),o|n|t|i|r|a|e|0}function Ea(e,a,r,i,t,n){a|=0,t|=0,n|=0;var o,s=0;return o=f,s=f=f+63&-64,f=f+16|0,Rr(64+(e|=0)|0,0|(r|=0),0|(i|=0)),nt(e,s,e+64|0,i,t,n),64==(0|l[s>>2])&0==(0|l[s+4>>2])?0|a?(s=0|yt(0|i,0|t,64,0),e=0|_(),l[a>>2]=s,l[a+4>>2]=e,e=0):e=0:(0|a&&(l[a>>2]=0,l[a+4>>2]=0),la(0|e,0,i+64|0),e=-1),f=o,0|e}function Qa(e,a,r,i,n){a|=0,r|=0,i|=0,n|=0;var o=0,s=0,l=0,c=0,u=0;return(e|=0)>>>0<=63&&(c=0|ji(0|r,0,0|a,0),!((u=0|_())>>>0>0|0==(0|u)&c>>>0>1073741823))&&(t[n>>0]=36,t[n+1>>0]=55,t[n+2>>0]=36,t[n+3>>0]=0|t[35189+e>>0],0!=(0|(o=0|sr(n+4|0,54,a,30))))&&0!=(0|(s=0|sr(o,n+58-o|0,r,30)))&&0!=(0|(l=0|nr(s,n+58-s|0,i)))&l>>>0<(n+58|0)>>>0?t[l>>0]=0:n=0,0|n}function xa(e,a){a|=0;var r,i=0,n=0,o=0,s=0;r=0|t[(e|=0)>>0];e:do{if((r+-48&255)<=9){for(o=0,s=e,n=r;;){if(!(o>>>0<429496730&((i=(n<<24>>24)-48|0)>>>0>~(n=10*o|0)>>>0^1))){i=0;break e}if(o=(i>>>0>~n>>>0?0:i)+n|0,((n=0|t[(i=s+1|0)>>0])-48&255)>9)break;s=i}(0|i)!=(0|e)&&(0|s)==(0|e)|r<<24>>24!=48?l[a>>2]=o:i=0}else i=0}while(0);return 0|i}function ja(e,a,r,i,n,o){var s,l;if(e|=0,a|=0,n|=0,o|=0,l=f,s=f=f+63&-64,f=f+32|0,(i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<32||(Dr(s,32,0,n,o),0!=(0|ht(a+16|0,a+32|0,0|yt(0|r,0|i,-32,-1),0|_(),s))))e=-1;else{tt(e,a,r,i,n,o),a=e+32|0;do{t[e>>0]=0,e=e+1|0}while((0|e)<(0|a));e=0}return f=l,0|e}function za(e){return((0-((0-(95^(e|=0))|0)>>>8&63^63|(0-(45^e)|0)>>>8&62^62|((e+65439|0)>>>8^255)&e+185&((122-e|0)>>>8&255^255)|((e+-65|0)>>>8^255)&e+-65&((90-e|0)>>>8&255^255)|((e+65488|0)>>>8^255)&e+4&((57-e|0)>>>8&255^255))|0)>>>8&255^255)&(0-(65^e)|0)>>>8|(0-(95^e)|0)>>>8&63^63|(0-(45^e)|0)>>>8&62^62|((e+65439|0)>>>8^255)&e+185&((122-e|0)>>>8&255^255)|((e+-65|0)>>>8^255)&e+-65&((90-e|0)>>>8&255^255)|((e+65488|0)>>>8^255)&e+4&((57-e|0)>>>8&255^255)|0}function Da(e){return((0-((0-(47^(e|=0))|0)>>>8&63^63|(0-(43^e)|0)>>>8&62^62|((e+65439|0)>>>8^255)&e+185&((122-e|0)>>>8&255^255)|((e+-65|0)>>>8^255)&e+-65&((90-e|0)>>>8&255^255)|((e+65488|0)>>>8^255)&e+4&((57-e|0)>>>8&255^255))|0)>>>8&255^255)&(0-(65^e)|0)>>>8|(0-(47^e)|0)>>>8&63^63|(0-(43^e)|0)>>>8&62^62|((e+65439|0)>>>8^255)&e+185&((122-e|0)>>>8&255^255)|((e+-65|0)>>>8^255)&e+-65&((90-e|0)>>>8&255^255)|((e+65488|0)>>>8^255)&e+4&((57-e|0)>>>8&255^255)|0}function Sa(e,a){var r,i,t,n,o,s,c,u,d;e|=0,d=0|l[4+(a|=0)>>2],u=0|l[a+8>>2],c=0|l[a+12>>2],s=0|l[a+16>>2],o=0|l[a+20>>2],n=0|l[a+24>>2],t=0|l[a+28>>2],i=0|l[a+32>>2],r=0|l[a+36>>2],l[e>>2]=l[a>>2],l[e+4>>2]=d,l[e+8>>2]=u,l[e+12>>2]=c,l[e+16>>2]=s,l[e+20>>2]=o,l[e+24>>2]=n,l[e+28>>2]=t,l[e+32>>2]=i,l[e+36>>2]=r}function Ma(e){e|=0;var a=0,r=0,i=0;e:do{if(3&e)for(a=e,r=e;;){if(!(0|t[a>>0])){a=r;break e}if(!(3&(r=a=a+1|0))){i=5;break}}else a=e,i=5}while(0);if(5==(0|i)){for(;!((-2139062144&(r=0|l[a>>2])^-2139062144)&r+-16843009);)a=a+4|0;if((255&r)<<24>>24)do{a=a+1|0}while(0!=(0|t[a>>0]))}return a-e|0}function qa(e,a){a|=0;var r=0;l[(e|=0)>>2]=1634760805,l[e+4>>2]=857760878,l[e+8>>2]=2036477234,l[e+12>>2]=1797285236,r=0|Pt(a),l[e+16>>2]=r,r=0|Pt(a+4|0),l[e+20>>2]=r,r=0|Pt(a+8|0),l[e+24>>2]=r,r=0|Pt(a+12|0),l[e+28>>2]=r,r=0|Pt(a+16|0),l[e+32>>2]=r,r=0|Pt(a+20|0),l[e+36>>2]=r,r=0|Pt(a+24|0),l[e+40>>2]=r,a=0|Pt(a+28|0),l[e+44>>2]=a}function Fa(e,a,r){a|=0,r|=0;var i=0;t[7+(e|=0)>>0]=a,i=0|Oi(0|a,0|r,8),_(),t[e+6>>0]=i,i=0|Oi(0|a,0|r,16),_(),t[e+5>>0]=i,i=0|Oi(0|a,0|r,24),_(),t[e+4>>0]=i,t[e+3>>0]=r,i=0|Oi(0|a,0|r,40),_(),t[e+2>>0]=i,i=0|Oi(0|a,0|r,48),_(),t[e+1>>0]=i,r=0|Oi(0|a,0|r,56),_(),t[e>>0]=r}function Ua(e,a,r){var i,t;r|=0,i=f,t=f=f+63&-64,f=f+48|0,ra(e|=0,40+(a|=0)|0,a),aa(e+40|0,a+40|0,a),R(e+80|0,e,r+40|0),R(e+40|0,e+40|0,r),R(e+120|0,r+120|0,a+120|0),R(e,a+80|0,r+80|0),ra(t,e,e),aa(e,e+80|0,e+40|0),ra(e+40|0,e+80|0,e+40|0),aa(e+80|0,t,e+120|0),ra(e+120|0,t,e+120|0),f=i}function Ra(e,a,r){var i,t;r|=0,i=f,t=f=f+63&-64,f=f+48|0,ra(e|=0,40+(a|=0)|0,a),aa(e+40|0,a+40|0,a),R(e+80|0,e,r),R(e+40|0,e+40|0,r+40|0),R(e+120|0,r+120|0,a+120|0),R(e,a+80|0,r+80|0),ra(t,e,e),aa(e,e+80|0,e+40|0),ra(e+40|0,e+80|0,e+40|0),ra(e+80|0,t,e+120|0),aa(e+120|0,t,e+120|0),f=i}function Ha(e,a,r){var i,t;r|=0,i=f,t=f=f+63&-64,f=f+48|0,ra(e|=0,40+(a|=0)|0,a),aa(e+40|0,a+40|0,a),R(e+80|0,e,r+40|0),R(e+40|0,e+40|0,r),R(e+120|0,r+80|0,a+120|0),ra(t,a+80|0,a+80|0),aa(e,e+80|0,e+40|0),ra(e+40|0,e+80|0,e+40|0),aa(e+80|0,t,e+120|0),ra(e+120|0,t,e+120|0),f=i}function Na(e,a,r){var i,t;r|=0,i=f,t=f=f+63&-64,f=f+48|0,ra(e|=0,40+(a|=0)|0,a),aa(e+40|0,a+40|0,a),R(e+80|0,e,r),R(e+40|0,e+40|0,r+40|0),R(e+120|0,r+80|0,a+120|0),ra(t,a+80|0,a+80|0),aa(e,e+80|0,e+40|0),ra(e+40|0,e+80|0,e+40|0),ra(e+80|0,t,e+120|0),aa(e+120|0,t,e+120|0),f=i}function Ga(e){var a,r;return a=f,r=f=f+63&-64,f=f+288|0,Y(r+240|0,e|=0),Y(r+192|0,e+40|0),Y(r+144|0,e+80|0),aa(r+48|0,r+192|0,r+240|0),R(r+48|0,r+48|0,r+144|0),R(r,r+240|0,r+192|0),R(r,r,16),Y(r+96|0,r+144|0),ra(r,r,r+96|0),aa(r+48|0,r+48|0,r),e=0|Yi(r+48|0),f=a,0|e}function Ya(e,a,r){e|=0,a|=0,r|=0;var i,n,o=0;n=f,i=f=f+63&-64,f=f+160|0,o=0;do{t[e+o>>0]=0|t[a+o>>0],o=o+1|0}while(32!=(0|o));return 0|r&&Rt(e),De(i,e),gr(e,i),o=0|yi(e)?-1:(0!=(0|Qr(a,32)))<<31>>31,f=n,0|o}function Ja(e,a){e|=0;var r,i,n=0;if(r=f,i=f=f+63&-64,f=f+64|0,!(((a|=0)-1&255)>63)){t[i>>0]=a,t[i+1>>0]=0,t[i+2>>0]=1,t[i+3>>0]=1,Tt(i+4|0),ii(i+8|0,0,0),n=48+(a=i+16|0)|0;do{l[a>>2]=0,a=a+4|0}while((0|a)<(0|n));return Ia(e,i),void(f=r)}ao()}function Pa(e,a,r){var i,n;if(e|=0,a|=0,r|=0,i=f,n=f=f+63&-64,f=f+16|0,l[n+4>>2]=e,l[n>>2]=a,t[n+8>>0]=0,0|r){e=0;do{t[n+8>>0]=t[n+8>>0]|t[(0|l[n>>2])+e>>0]^t[(0|l[n+4>>2])+e>>0],e=e+1|0}while((0|e)!=(0|r))}return f=i,((511+(0|u[n+8>>0])|0)>>>8&1)-1|0}function La(e,a,r,i,t,n,o,s){var l,c;return e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,c=f,l=f=f+63&-64,f=f+32|0,0|Sr(l,o|=0,s|=0)?e=-1:(e=0|ki(e,a,r,i,t,n,l),Hr(l,32)),f=c,0|e}function Ta(e,a,r,i,t,n,o,s){var l,c;return e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,c=f,l=f=f+63&-64,f=f+32|0,0|Sr(l,o|=0,s|=0)?e=-1:(Ci(e,a,r,i,t,n,l),Hr(l,32),e=0),f=c,0|e}function Ka(e,a){e|=0,a|=0;var r,i,n=0,o=0;r=f,i=f=f+63&-64,f=f+64|0,n=(o=i)+64|0;do{t[o>>0]=0|t[a>>0],o=o+1|0,a=a+1|0}while((0|o)<(0|n));U(i),a=i,n=(o=e)+32|0;do{t[o>>0]=0|t[a>>0],o=o+1|0,a=a+1|0}while((0|o)<(0|n));Hr(i,64),f=r}function $a(e,a,r,i,t,n,o,s){var l,c;return e|=0,a|=0,t|=0,o|=0,s|=0,l=f,c=f=f+63&-64,f=f+80|0,0==(0|(r|=0))&0==(0|(i|=0))||(_t(c+64|0,n|=0),_t(c+64+4|0,o),qa(c,s),jr(c,t,c+64|0),K(c,a,e,r,i),Hr(c,64)),f=l,0}function Oa(e,a,r){var i,n;e|=0,a|=0,r|=0,i=f,n=f=f+63&-64,f=f+16|0,l[n+8>>2]=e,l[n+4>>2]=a,l[n>>2]=0,e=0;do{l[n>>2]=l[n>>2]|255&(t[(0|l[n+4>>2])+e>>0]^t[(0|l[n+8>>2])+e>>0]),e=e+1|0}while((0|e)!=(0|r));return f=i,((511+(0|l[n>>2])|0)>>>8&1)-1|0}function Xa(e,a,r){a|=0,r|=0;var i=0,n=0;i=0|t[(e|=0)>>0];e:do{if(i<<24>>24)for(;;){if(r=r+-1|0,!(i<<24>>24==(n=0|t[a>>0])<<24>>24&0!=(0|r)&n<<24>>24!=0))break e;if(a=a+1|0,!((i=0|t[(e=e+1|0)>>0])<<24>>24)){i=0;break}}else i=0}while(0);return(255&i)-(0|u[a>>0])|0}function Va(e,a){e|=0,a|=0;var r,i,n=0,o=0;for(i=f,r=f=f+63&-64,f=f+16|0,o=0,n=0;;){if(0|It(r,0|t[a>>0])){n=3;break}if(a=a+1|0,o=l[r>>2]<>>0>=30){n=5;break}}return 3==(0|n)?(l[e>>2]=0,a=0):5==(0|n)&&(l[e>>2]=o),f=i,0|a}function Wa(e,a,r,i,t,n,o){e|=0,a|=0,t|=0,n|=0,o|=0;var s,l=0;return l=0|mt(0,1,0|(l=0|Oi(0|(l=0|yt(0|(r|=0),0|(i|=0),63,0)),0|_(),6)),0|_()),(s=0|_())>>>0<0|0==(0|s)&l>>>0>>0?(ao(),0):0|Or(e,a,r,i,t,n,o)}function Za(e,a,r,i){a|=0;var t=0,n=0,o=0;if(rt(r|=0,(e|=0)+(((i|=0)<<5)-16<<2)|0),i<<1|0){t=0;do{Si(r,e+((o=t<<4)<<2)|0),Z(r),rt(a+((n=t<<3)<<2)|0,r),Si(r,e+((16|o)<<2)|0),Z(r),rt(a+(n+(i<<4)<<2)|0,r),t=t+2|0}while(t>>>0>>0)}}function er(e,a){e|=0,a|=0;var r,i,n=0,o=0,s=0,l=0;for(r=f,i=f=f+63&-64,f=f+16|0,o=10;l=255&((s=a)+(0|b(a=(a>>>0)/10|0,-10))|48),t[i+(n=o+-1|0)>>0]=l,s>>>0>9&0!=(0|n);)o=n;Ee(0|e,i+n|0,0|(l=11-o|0)),t[e+l>>0]=0,f=r}function ar(e,a){var r,i;r=f,i=f=f+63&-64,f=f+48|0,Y(e|=0,a|=0),Y(e+80|0,a+40|0),G(e+120|0,a+80|0),ra(e+40|0,a,a+40|0),Y(i,e+40|0),ra(e+40|0,e+80|0,e),aa(e+80|0,e+80|0,e),aa(e,i,e+40|0),aa(e+120|0,e+120|0,e+80|0),f=r}function rr(e,a,r){var i,n;if(e|=0,a|=0,r|=0,n=f,i=f=f+63&-64,f=f+16|0,t[i>>0]=0,0|function(e,a,r){e|=0,a|=0;var i,n,o=0;if(n=f,i=f=f+63&-64,f=f+336|0,0|function(e){e|=0;var a,r,i=0,n=0,o=0,s=0;a=f,r=f=f+63&-64,f=f+16|0,t[r>>0]=0,t[r+1>>0]=0,t[r+2>>0]=0,t[r+3>>0]=0,t[r+4>>0]=0,t[r+5>>0]=0,t[r+6>>0]=0,n=0;do{o=0|t[e+n>>0],i=0;do{t[(s=r+i|0)>>0]=t[s>>0]|t[33552+(i<<5)+n>>0]^o,i=i+1|0}while(7!=(0|i));n=n+1|0}while(31!=(0|n));n=127&t[e+31>>0],i=0;do{t[(s=r+i|0)>>0]=t[s>>0]|n^t[33552+(i<<5)+31>>0],i=i+1|0}while(7!=(0|i));i=0,n=0;do{i=(0|u[r+n>>0])-1|i,n=n+1|0}while(7!=(0|n));return f=a,i>>>8&1|0}(r|=0))o=-1;else{o=0;do{t[e+o>>0]=0|t[a+o>>0],o=o+1|0}while(32!=(0|o));for(t[e>>0]=-8&t[e>>0],t[e+31>>0]=63&t[e+31>>0]|64,O(i+288|0,r),pt(i+240|0),Ft(i+192|0),Sa(i+144|0,i+288|0),pt(i+96|0),o=0,a=254;r=o,Ie(i+240|0,i+144|0,r^=o=(0|u[e+(a>>>3)>>0])>>>(7&a)&1),Ie(i+192|0,i+96|0,r),aa(i+48|0,i+144|0,i+96|0),aa(i,i+240|0,i+192|0),ra(i+240|0,i+240|0,i+192|0),ra(i+192|0,i+144|0,i+96|0),R(i+96|0,i+48|0,i+240|0),R(i+192|0,i+192|0,i),Y(i+48|0,i),Y(i,i+240|0),ra(i+144|0,i+96|0,i+192|0),aa(i+192|0,i+96|0,i+192|0),R(i+240|0,i,i+48|0),aa(i,i,i+48|0),Y(i+192|0,i+192|0),X(i+96|0,i),Y(i+144|0,i+144|0),ra(i+48|0,i+48|0,i+96|0),R(i+96|0,i+288|0,i+192|0),R(i+192|0,i,i+48|0),a;)a=a+-1|0;Ie(i+240|0,i+144|0,o),Ie(i+192|0,i+96|0,o),me(i+192|0,i+192|0),R(i+240|0,i+240|0,i+192|0),Qe(e,i+240|0),o=0}return f=n,0|o}(e,a,r))a=-1;else{a=0;do{t[i>>0]=t[i>>0]|t[e+a>>0],a=a+1|0}while(32!=(0|a));a=0-((511+(0|u[i>>0])|0)>>>8&1)|0}return f=n,0|a}function ir(e,a,r,i,n,o){if(e|=0,a|=0,(i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<32)e=-1;else{tt(e,a,r,i,n|=0,o|=0),ft(e+16|0,e+32|0,a=0|yt(0|r,0|i,-32,-1),0|_(),e),a=e+16|0;do{t[e>>0]=0,e=e+1|0}while((0|e)<(0|a));e=0}return 0|e}function tr(e,a,r){e|=0,a|=0;var i,n,o=0,s=0;n=f,s=f=f+63&-64,f=f+64|0,Jr(s,r|=0,32,0),o=s,i=(r=a)+32|0;do{t[r>>0]=0|t[o>>0],r=r+1|0,o=o+1|0}while((0|r)<(0|i));return Hr(s,64),s=0|Xt(e,a),f=n,0|s}function nr(e,a,r){a|=0,r|=0;var i=0,t=0,n=0,o=0;for(t=0,o=e|=0;;){e=0,i=0;do{n=t,t=t+1|0,i=(0|u[r+n>>0])<>>0<32}while(n&e>>>0<24);if(!(e=0|sr(o,a,i,e))){e=0;break}if(a=a+o-e|0,!n)break;o=e}return 0|e}function or(e,a,r,i,t,n,o){var s,l;return e|=0,a|=0,t|=0,o|=0,s=f,l=f=f+63&-64,f=f+80|0,0==(0|(r|=0))&0==(0|(i|=0))||(_t(l+64|0,n|=0),qa(l,o),Gr(l,t,l+64|0),K(l,a,e,r,i),Hr(l,64)),f=s,0}function sr(e,a,r,i){e|=0,a|=0,r|=0,i|=0;var n=0,o=0;e:do{if(i)for(n=0;;){if(!a){e=0;break e}if(o=e+1|0,t[e>>0]=0|t[35189+(63&r)>>0],(n=n+6|0)>>>0>=i>>>0){e=o;break}r>>>=6,a=a+-1|0,e=o}}while(0);return 0|e}function lr(e,a,r,i,t,n,o,s,l,c){var u,d;return e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,l|=0,c|=0,u=f,d=f=f+63&-64,f=f+16|0,vn(d),c=0|we(d,e,a,r,i,t,n,o,s,l,c),In(d),f=u,0|c}function cr(e,a,r,i,t,n,o){var s,l;return e|=0,a|=0,r|=0,i|=0,t|=0,l=f,s=f=f+63&-64,f=f+32|0,0|Mr(s,n|=0,o|=0)?e=-1:(e=0|ot(e,a,r,i,t,s),Hr(s,32)),f=l,0|e}function ur(e,a,r){var i,n;return e|=0,i=f,n=f=f+63&-64,f=f+160|0,Jr(a|=0,r|=0,32,0),t[a>>0]=-8&t[a>>0],t[a+31>>0]=63&t[a+31>>0]|64,De(n,a),gr(e,n),Rr(0|a,0|r,32),Rr(a+32|0,0|e,32),f=i,0}function dr(e,a,r,i,t,n,o){var s,l;return e|=0,a|=0,r|=0,i|=0,t|=0,l=f,s=f=f+63&-64,f=f+32|0,0|Mr(s,n|=0,o|=0)?e=-1:(e=0|At(e,a,r,i,t,s),Hr(s,32)),f=l,0|e}function hr(e,a,r,i,t,n,o,s){var l,c;return e|=0,a|=0,r|=0,i|=0,n|=0,o|=0,l=f,c=f=f+63&-64,f=f+32|0,oe(c,t|=0,s|=0,0),s=0|Ui(e,a,r,i,t+16|0,n,o,c),Hr(c,32),f=l,0|s}function Ar(e,a,r,i){e|=0,a|=0,r|=0,i|=0;e:do{if(i>>>0>0|0==(0|i)&r>>>0>4294967295)l[8966]=27,e=-1;else{switch(0|sn(e,a,r)){case 0:e=0;break e;case-35:l[8966]=22}e=-1}}while(0);return 0|e}function gr(e,a){var r,i;e|=0,r=f,i=f=f+63&-64,f=f+144|0,me(i+96|0,80+(a|=0)|0),R(i+48|0,a,i+96|0),R(i,a+40|0,i+96|0),Qe(e,i),a=(0|Xi(i+48|0))<<7,t[e+31>>0]=a^(0|u[e+31>>0]),f=r}function pr(e,a,r,i){e|=0,a|=0,r|=0,i|=0;e:do{if(i>>>0>0|0==(0|i)&r>>>0>4294967295)l[8966]=27,e=-1;else{switch(0|ln(e,a,r)){case 0:e=0;break e;case-35:l[8966]=22}e=-1}}while(0);return 0|e}function mr(e,a,r,i){e|=0,a|=0,r|=0,i|=0;do{if(!(r>>>0>64|(i+-1|0)>>>0>63)){if(0==(0|a)|0==(0|r)){Ja(e,255&i),e=0;break}ua(e,255&i,a,255&r),e=0;break}e=-1}while(0);return 0|e}function fr(e,a,r,i,t,n,o,s){var l,c;return e|=0,a|=0,r|=0,i|=0,n|=0,o|=0,l=f,c=f=f+63&-64,f=f+32|0,re(c,t|=0,s|=0,0),s=0|Lr(e,a,r,i,t+16|0,n,o,c),f=l,0|s}function yr(e,a){e|=0;var r,i,t=0;return r=f,t=f=f+63&-64,f=f+16|0,i=0|$i(t,a|=0),l[8966]=i,i?(l[t>>2]=0,t=0):t=0|l[t>>2],l[e>>2]=t,l[e+4>>2]=t,l[e+8>>2]=0==(0|t)?0:a,f=r,0|t}function br(e,a,r,i,t,n,o,s){var l;return e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,l=f,f=f+32|0,0|Ut(l,o|=0,s|=0)?e=-1:(e=0|Pi(e,a,r,i,t,n,l),Hr(l,32)),f=l,0|e}function kr(e,a,r,i,t,n,o){return a|=0,t|=0,n|=0,o|=0,0|((i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<16?-1:0|La(e|=0,a+16|0,a,i=0|yt(0|r,0|i,-16,-1),0|_(),t,n,o))}function wr(e,a,r,i,t,n,o,s){var l;return e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,l=f,f=f+32|0,0|Ut(l,o|=0,s|=0)?e=-1:(Ki(e,a,r,i,t,n,l),Hr(l,32),e=0),f=l,0|e}function vr(e,a,r,i){a|=0,r|=0,i|=0;var n=0;return 0|(36==(0|t[(e|=0)>>0])&&55==(0|t[e+1>>0])&&36==(0|t[e+2>>0])&&0==(0|It(a,0|t[e+3>>0]))&&0!=(0|(n=0|Va(r,e+4|0)))?0|Va(i,n):0)}function Ir(e){var a;return(0|(e|=0))>0&((a=0|l[m>>2])+e|0)<(0|a)|(a+e|0)<0?(B(),E(12),-1):(l[m>>2]=a+e,(a+e|0)>(0|v())&&0==(0|w())?(l[m>>2]=a,E(12),-1):0|a)}function _r(e){e|=0;var a=0,r=0,i=0,n=0,o=0;for(r=32,a=1,i=0;i=(255&(n=0|t[e+(r=r+-1|0)>>0]))-(255&(o=0|t[33824+r>>0]))>>8&(a&=255)|255&i,r;)a&=(65535+(255&(o^n))|0)>>>8;return 0!=(0|i)|0}function Br(e){return l[32+(e|=0)>>2]=0,l[e+32+4>>2]=0,l[e>>2]=l[8092],l[e+4>>2]=l[8093],l[e+8>>2]=l[8094],l[e+12>>2]=l[8095],l[e+16>>2]=l[8096],l[e+20>>2]=l[8097],l[e+24>>2]=l[8098],l[e+28>>2]=l[8099],0}function Cr(e,a,r,i){return i=0|yt(0|yt(0|(r|=0),0|(i|=0),0|(e|=0),0|(a|=0)),0|_(),0|(i=0|ji(-2&(i=0|Li(0|e,0|a,1))|0,1&(0|_())|0,0|r,0)),0|_()),I(0|_()),0|i}function Er(e){var a,r,i,t=0;return r=0|u[(e|=0)>>0],i=0|Li(0|u[e+1>>0],0,8),t=0|_(),a=0|Li(0|u[e+2>>0],0,16),t=0|t|_(),e=0|Li(0|u[e+3>>0],0,24),I(0|t|_()|0),i|r|a|e|0}function Qr(e,a){e|=0,a|=0;var r,i,n=0;r=f,i=f=f+63&-64,f=f+16|0,t[i>>0]=0,n=0;do{t[i>>0]=t[i>>0]|t[e+n>>0],n=n+1|0}while((0|n)!=(0|a));return f=r,(511+(0|u[i>>0])|0)>>>8&1|0}function xr(e,a,r,i,t,n,o,s,l){return e|=0,((a|=0)-1|0)>>>0>63|(o|=0)>>>0>64?e=-1:(function(e,a,r,i,t,n,o,s,l){var c,u;e|=0,r|=0,i|=0,o|=0,s|=0,l|=0,c=f,u=f=f+63&-64,f=f+368|0,0==(0|(a|=0))&(0!=(0|(t|=0))|0!=(0|(n|=0)))&&ao(),e||ao(),(i+-1&255)>63&&ao(),0!=(0|r)|o<<24>>24==0||ao(),(255&o)>64&&ao(),o<<24>>24?qe(u,i,r,o,s,l):na(u,i,s,l),ke(u,a,t,n),W(u,e,i),f=c}(e,r|=0,n|=0,255&a,i|=0,t|=0,255&o,s|=0,l|=0),e=0),0|e}function jr(e,a,r){e|=0,a|=0;var i=0;(r|=0)?(i=0|Pt(r),l[e+48>>2]=i,r=0|Pt(r+4|0)):(l[e+48>>2]=0,r=0),l[e+52>>2]=r,i=0|Pt(a),l[e+56>>2]=i,i=0|Pt(a+4|0),l[e+60>>2]=i}function zr(e,a,r){var i,t;e|=0,a|=0,r|=0,i=f,t=f=f+63&-64,f=f+384|0,Mt(t,0,0,24),Ct(t,a,32,0),Ct(t,r,32,0),Lt(t,e,24),f=i}function Dr(e,a,r,i,t){var n,o;return e|=0,a|=0,r|=0,n=f,o=f=f+63&-64,f=f+32|0,oe(o,i|=0,t|=0,0),t=0|jt(e,a,r,i+16|0,o),Hr(o,32),f=n,0|t}function Sr(e,a,r){var i,t;return e|=0,t=f,i=f=f+63&-64,f=f+32|0,0|rr(i,r|=0,a|=0)?e=-1:(re(e,35344,i,0),e=0),f=t,0|e}function Mr(e,a,r){var i,t;return e|=0,t=f,i=f=f+63&-64,f=f+32|0,0|rr(i,r|=0,a|=0)?e=-1:(oe(e,35296,i,0),e=0),f=t,0|e}function qr(e,a,r,i,t){var n;return e|=0,n=f,f=f+32|0,$r(n,a|=0,r|=0,i|=0,t|=0),t=0|hn(e,n),t=0|((0|n)==(0|e)?-1:t)|Pa(n,e,32),f=n,0|t}function Fr(e,a,r,i,t,n,o){return a|=0,t|=0,n|=0,o|=0,0|((i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<16?-1:0|br(e|=0,a+16|0,a,i=0|yt(0|r,0|i,-16,-1),0|_(),t,n,o))}function Ur(e,a,r,i,t,n,o){return e|=0,a|=0,t|=0,n|=0,o|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967279?(ao(),0):0|Ta(e+16|0,e,a,r,i,t,n,o)}function Rr(e,a,r){var i=0;if((0|(a|=0))<(0|(e|=0))&(0|e)<(a+(r|=0)|0)){for(i=e,a=a+r|0,e=e+r|0;(0|r)>0;)a=a-1|0,r=r-1|0,t[(e=e-1|0)>>0]=0|t[a>>0];e=i}else Ee(e,a,r);return 0|e}function Hr(e,a){var r,i;if(e|=0,a|=0,r=f,i=f=f+63&-64,f=f+16|0,l[i>>2]=e,0|a){e=0;do{t[(0|l[i>>2])+e>>0]=0,e=e+1|0}while((0|e)!=(0|a))}f=r}function Nr(e,a){e|=0,a|=0;var r=0,i=0,t=0,n=0;r=0;do{n=a+(r<<3)|0,t=l[4+(i=e+(r<<3)|0)>>2]^l[n+4>>2],l[i>>2]=l[i>>2]^l[n>>2],l[i+4>>2]=t,r=r+1|0}while(128!=(0|r))}function Gr(e,a,r){e|=0,a|=0,r=(r|=0)?0|Pt(r):0,l[e+48>>2]=r,r=0|Pt(a),l[e+52>>2]=r,r=0|Pt(a+4|0),l[e+56>>2]=r,a=0|Pt(a+8|0),l[e+60>>2]=a}function Yr(e,a){var r,i;a|=0,i=f,f=f+64|0,ai(e|=0,i),e=i,r=a+32|0;do{t[a>>0]=0|t[e>>0],a=a+1|0,e=e+1|0}while((0|a)<(0|r));return f=i,0}function Jr(e,a,r,i){var t,n;return e|=0,a|=0,r|=0,i|=0,t=f,n=f=f+63&-64,f=f+208|0,Xr(n),ie(n,a,r,i),Ai(n,e),f=t,0}function Pr(e,a,r,i,t){var n;return e|=0,a|=0,r|=0,i|=0,n=f,f=f+208|0,Ue(n,t|=0,32),xt(n,a,r,i),ri(n,e),f=n,0}function Lr(e,a,r,i,t,n,o,s){return e|=0,a|=0,t|=0,n|=0,o|=0,s|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967295?(ao(),0):0|$a(e,a,r,i,t,n,o,s)}function Tr(e,a,r,i,t){var n,o;return e|=0,a|=0,r|=0,i|=0,n=f,o=f=f+63&-64,f=f+96|0,da(o,t|=0),ce(o,a,r,i),pe(o,e),f=n,0}function Kr(e,a,r,i,t){var n;return e|=0,a|=0,r|=0,i|=0,n=f,f=f+416|0,Fe(n,t|=0,32),zt(n,a,r,i),ai(n,e),f=n,0}function $r(e,a,r,i,t){var n;return e|=0,a|=0,r|=0,i|=0,n=f,f=f+416|0,Jt(n,t|=0,32),qt(n,a,r,i),Yr(n,e),f=n,0}function Or(e,a,r,i,t,n,o){return e|=0,a|=0,t|=0,n|=0,o|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967295?(ao(),0):0|or(e,a,r,i,t,n,o)}function Xr(e){var a,r=0;l[64+(e|=0)>>2]=0,l[e+64+4>>2]=0,l[e+64+8>>2]=0,l[e+64+12>>2]=0,r=32720,a=e+64|0;do{l[e>>2]=l[r>>2],e=e+4|0,r=r+4|0}while((0|e)<(0|a));return 0}function Vr(e,a,r,i){var t,n;return a|=0,r|=0,i|=0,t=f,n=f=f+63&-64,f=f+64|0,Ai(e|=0,n),$e(a,r,n,64,0,i,1),f=t,0}function Wr(e,a,r){var i,t;return a|=0,r|=0,i=f,t=f=f+63&-64,f=f+64|0,Ai(e|=0,t),r=0|Ve(a,t,64,0,r,1),f=i,0|r}function Zr(e,a,r,i,t,n,o){return e|=0,((a|=0)-1|0)>>>0>63|(o|=0)>>>0>64?e=-1:(function(e,a,r,i,t,n,o){var s,l;e|=0,r|=0,i|=0,o|=0,s=f,l=f=f+63&-64,f=f+368|0,0==(0|(a|=0))&(0!=(0|(t|=0))|0!=(0|(n|=0)))&&ao(),e||ao(),(i+-1&255)>63&&ao(),0!=(0|r)|o<<24>>24==0||ao(),(255&o)>64&&ao(),o<<24>>24?ua(l,i,r,o):Ja(l,i),ke(l,a,t,n),W(l,e,i),f=s}(e,r|=0,n|=0,255&a,i|=0,t|=0,255&o),e=0),0|e}function ei(e,a,r){e|=0,a|=0;var i=0,t=0;if((r|=0)>>>3|0){i=0;do{Fa(e+(i<<3)|0,0|l[(t=a+(i<<3)|0)>>2],0|l[t+4>>2]),i=i+1|0}while((0|i)!=(r>>>3|0))}}function ai(e,a){var r;return a|=0,r=f,f=f+64|0,Ai(e|=0,r),ie(e+208|0,r,64,0),Ai(e+208|0,a),Hr(r,64),f=r,0}function ri(e,a){var r;return a|=0,r=f,f=f+32|0,pi(e|=0,r),le(e+104|0,r,32,0),pi(e+104|0,a),Hr(r,32),f=r,0}function ii(e,a,r){a|=0,r|=0,t[(e|=0)>>0]=a,t[e+1>>0]=a>>8,t[e+2>>0]=a>>16,t[e+3>>0]=a>>24,t[e+4>>0]=r,t[e+4+1>>0]=r>>8,t[e+4+2>>0]=r>>16,t[e+4+3>>0]=r>>24}function ti(e,a){e|=0,a|=0;var r=0,i=0,t=0,n=0;r=0;do{n=0|gi(a+(r<<3)|0),t=0|_(),l[(i=e+(r<<3)|0)>>2]=n,l[i+4>>2]=t,r=r+1|0}while(128!=(0|r))}function ni(e,a,r,i,t,n,o){return e|=0,a|=0,t|=0,n|=0,o|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967279?(ao(),0):0|wr(e+16|0,e,a,r,i,t,n,o)}function oi(e,a){e|=0,a|=0;var r=0,i=0,n=0;for(r=0,i=0;r=(0|u[(n=e+i|0)>>0])-(0|u[a+i>>0])-r|0,t[n>>0]=r,64!=(0|(i=i+1|0));)r=r>>>8&1}function si(e,a,r,i,t,n){return e|=0,a|=0,t|=0,n|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967295?(ao(),0):0|function(e,a,r,i,t,n){return e|=0,a|=0,t|=0,n|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967295?(ao(),0):0|or(e,a,r,i,t,0,n)}(e,a,r,i,t,n)}function li(e){return(0-(62^(e|=0))|0)>>>8&45^45|(e+65510|0)>>>8&255&e+65|(0-(63^e)|0)>>>8&95^95|(e+65484|0)>>>8&e+71&((e+65510|0)>>>8&255^255)|(e+65474|0)>>>8&e+252&((e+65484|0)>>>8&255^255)|0}function ci(e,a,r){e|=0,a|=0;var i=0,t=0;if((r|=0)>>>2|0){i=0;do{l[(t=e+(i<<2)|0)>>2]=l[t>>2]^l[a+(i<<2)>>2],i=i+1|0}while((0|i)!=(r>>>2|0))}}function ui(e){return(0-(62^(e|=0))|0)>>>8&43^43|(e+65510|0)>>>8&255&e+65|(0-(63^e)|0)>>>8&47^47|(e+65484|0)>>>8&e+71&((e+65510|0)>>>8&255^255)|(e+65474|0)>>>8&e+252&((e+65484|0)>>>8&255^255)|0}function di(e,a,r,i,t,n){return e|=0,a|=0,t|=0,n|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967295?(ao(),0):0|$a(e,a,r,i,t,0,0,n)}function hi(e,a){var r,i;return e|=0,a|=0,r=f,i=f=f+63&-64,f=f+32|0,xi(i,32),ur(e,a,i),Hr(i,32),f=r,0}function Ai(e,a){var r,i;return a|=0,r=f,i=f=f+63&-64,f=f+704|0,function(e,a){a|=0;var r=0,i=0;if(r=0|Oi(0|l[72+(e|=0)>>2],0|l[e+72+4>>2],3),_(),(127&r)>>>0<112)112-(127&r)|0&&Ee(e+80+(127&r)|0,33424,112-(127&r)|0);else{128-(127&r)|0&&Ee(e+80+(127&r)|0,33424,128-(127&r)|0),q(e,e+80|0,a,a+640|0),i=112+(r=e+80|0)|0;do{l[r>>2]=0,r=r+4|0}while((0|r)<(0|i))}ei(e+192|0,e+64|0,16),q(e,e+80|0,a,a+640|0)}(e|=0,i),ei(a,e,64),Hr(i,704),Hr(e,208),f=r,0}function gi(e){var a;return a=u[(e|=0)>>0]|u[e+1>>0]<<8|u[e+2>>0]<<16|u[e+3>>0]<<24,I(u[e+4>>0]|u[e+4+1>>0]<<8|u[e+4+2>>0]<<16|u[e+4+3>>0]<<24|0),0|a}function pi(e,a){var r,i;return a|=0,r=f,i=f=f+63&-64,f=f+288|0,function(e,a){a|=0;var r,i=0,t=0;if(r=0|Oi(0|(t=0|l[32+(e|=0)>>2]),0|(i=0|l[e+32+4>>2]),3),_(),(63&r)>>>0<56)56-(63&r)|0&&Ee(e+40+(63&r)|0,32656,56-(63&r)|0);else{64-(63&r)|0&&Ee(e+40+(63&r)|0,32656,64-(63&r)|0),J(e,e+40|0,a,a+256|0),t=56+(i=e+40|0)|0;do{l[i>>2]=0,i=i+4|0}while((0|i)<(0|t));t=0|l[e+32>>2],i=0|l[e+32+4>>2]}Fa(e+96|0,t,i),J(e,e+40|0,a,a+256|0)}(e|=0,i),function(e,a){e|=0,a|=0;var r=0;r=0;do{vt(e+(r<<2)|0,0|l[a+(r<<2)>>2]),r=r+1|0}while(8!=(0|r))}(a,e),Hr(i,288),Hr(e,104),f=r,0}function mi(e){var a=0,r=0;a=127&t[31+(e|=0)>>0]^127,r=30;do{a|=~t[e+r>>0],r=r+-1|0}while(0!=(0|r));return(236-(0|u[e>>0])&511+(255&a))>>>8&1^1|0}function fi(e,a,r,i,t){return e|=0,i|=0,t|=0,(r|=0)>>>0>0|0==(0|r)&(a|=0)>>>0>4294967295?(ao(),0):0|bi(e,a,r,i,t)}function yi(e){var a=0,r=0;a=1,r=1^t[(e|=0)>>0];do{r=t[e+a>>0]|r,a=a+1|0}while(31!=(0|a));return(511+(255&(127&t[e+31>>0]|r))|0)>>>8&1|0}function bi(e,a,r,i,t){return e|=0,i|=0,t|=0,(r|=0)>>>0>0|0==(0|r)&(a|=0)>>>0>4294967295?(ao(),0):0|function(e,a,r,i,t){var n,o;return e|=0,i|=0,n=f,o=f=f+63&-64,f=f+64|0,0==(0|(a|=0))&0==(0|(r|=0))||(qa(o,t|=0),Gr(o,i,0),la(0|e,0,0|a),K(o,e,e,a,r),Hr(o,64)),f=n,0}(e,a,r,i,t)}function ki(e,a,r,i,t,n,o){return 0|_e(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0)}function wi(e,a,r){var i,t;return i=0|Oi(0|(e|=0),0|(a|=0),0|(r|=0)),t=0|_(),r=0|Li(0|e,0|a,64-r|0),I(0|_()|t|0),r|i|0}function vi(e,a,r){var i,t;return i=0|Li(0|(e|=0),0|(a|=0),0|(r|=0)),t=0|_(),r=0|Oi(0|e,0|a,64-r|0),I(0|_()|t|0),r|i|0}function Ii(e,a,r){Je(e|=0,a|=0,255&(r|=0)),Je(e+40|0,a+40|0,255&r),Je(e+80|0,a+80|0,255&r),Je(e+120|0,a+120|0,255&r)}function _i(e,a,r,i){var t;return t=f,f=f+16|0,V(e|=0,a|=0,r|=0,i|=0,0|t),f=t,0|(I(0|l[t+4>>2]),0|l[t>>2])}function Bi(e){e|=0;var a=0,r=0,i=0;for(r=0,a=1;a=a+(0|u[(i=e+r|0)>>0])|0,t[i>>0]=a,4!=(0|(r=r+1|0));)a>>>=8}function Ci(e,a,r,i,t,n,o){return fe(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0),0}function Ei(e,a,r){e|=0,a|=0;var i=0;if((r|=0)>>>2|0){i=0;do{l[e+(i<<2)>>2]=l[a+(i<<2)>>2],i=i+1|0}while((0|i)!=(r>>>2|0))}}function Qi(e,a,r){var i;return e|=0,r|=0,a=0|Li(255&(a|=0)|0,0,8),i=0|_(),r=0|Li(255&r|0,0,16),I(0|i|_()|0),a|255&e|r|0}function xi(e,a){e|=0;var r=0,i=0;if(0|(a|=0)){r=0;do{i=255&(0|Cn()),t[e+r>>0]=i,r=r+1|0}while((0|r)!=(0|a))}}function ji(e,a,r,i){var t,n;return a|=0,i|=0,t=0|function(e,a){var r,i,t;return t=((r=0|b(65535&(a|=0),65535&(e|=0)))>>>16)+(0|b(65535&a,e>>>16))|0,i=0|b(a>>>16,65535&e),0|(I((t>>>16)+(0|b(a>>>16,e>>>16))+(((65535&t)+i|0)>>>16)|0),t+i<<16|65535&r|0)}(e|=0,r|=0),n=0|_(),0|(I((0|b(a,r))+(0|b(i,e))+n|0&n|0),0|t)}function zi(e,a,r,i,t){return e|=0,i|=0,t|=0,(r|=0)>>>0>0|0==(0|r)&(a|=0)>>>0>4294967295?(ao(),0):0|function(e,a,r,i,t){var n,o;return e|=0,i|=0,n=f,o=f=f+63&-64,f=f+64|0,0==(0|(a|=0))&0==(0|(r|=0))||(qa(o,t|=0),jr(o,i,0),la(0|e,0,0|a),K(o,e,e,a,r),Hr(o,64)),f=n,0}(e,a,r,i,t)}function Di(e,a){R(e|=0,a|=0,a+120|0),R(e+40|0,a+40|0,a+80|0),R(e+80|0,a+80|0,a+120|0),R(e+120|0,a,a+40|0)}function Si(e,a){e|=0,a|=0;var r=0,i=0;r=0;do{l[(i=e+(r<<2)|0)>>2]=l[i>>2]^l[a+(r<<2)>>2],r=r+1|0}while(16!=(0|r))}function Mi(e,a,r){return e|=0,a|=0,(0|(r|=0))<32?(I(a>>r|0),e>>>r|(a&(1<>r-32|0)}function qi(e,a,r){return(r|=0)>>>0<256?0|W(e|=0,a|=0,255&r):(C(34008,34028,107,34081),0)}function Fi(e){var a,r;return a=f,r=f=f+63&-64,f=f+160|0,function(e,a){e|=0;var r,i,n=0;for(r=f,i=f=f+63&-64,f=f+1760|0,Hi(i,a|=0),Ni(i+1600|0,a),Di(i+1280|0,i+1600|0),Ra(i+1600|0,i+1280|0,i),Di(i+1440|0,i+1600|0),Hi(i+160|0,i+1440|0),Ra(i+1600|0,i+1280|0,i+160|0),Di(i+1440|0,i+1600|0),Hi(i+320|0,i+1440|0),Ra(i+1600|0,i+1280|0,i+320|0),Di(i+1440|0,i+1600|0),Hi(i+480|0,i+1440|0),Ra(i+1600|0,i+1280|0,i+480|0),Di(i+1440|0,i+1600|0),Hi(i+640|0,i+1440|0),Ra(i+1600|0,i+1280|0,i+640|0),Di(i+1440|0,i+1600|0),Hi(i+800|0,i+1440|0),Ra(i+1600|0,i+1280|0,i+800|0),Di(i+1440|0,i+1600|0),Hi(i+960|0,i+1440|0),Ra(i+1600|0,i+1280|0,i+960|0),Di(i+1440|0,i+1600|0),Hi(i+1120|0,i+1440|0),$t(e),a=252;Ni(i+1600|0,e),(n=0|t[31840+a>>0])<<24>>24<=0?n<<24>>24<0&&(Di(i+1440|0,i+1600|0),Ua(i+1600|0,i+1440|0,i+(160*(((n<<24>>24)/-2|0)<<24>>24)|0)|0)):(Di(i+1440|0,i+1600|0),Ra(i+1600|0,i+1440|0,i+(160*((255&n)>>>1&255)|0)|0)),Di(e,i+1600|0),a;)a=a+-1|0;f=r}(r,e|=0),e=0|Yi(r),f=a,0|e}function Ui(e,a,r,i,t,n,o,s){return 0|ge(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0)}function Ri(e,a){a|=0;var r=0;e=16+(r=48+(e|=0)|0)|0;do{t[r>>0]=0|t[a>>0],r=r+1|0,a=a+1|0}while((0|r)<(0|e))}function Hi(e,a){ra(e|=0,40+(a|=0)|0,a),aa(e+40|0,a+40|0,a),Sa(e+80|0,a+80|0),R(e+120|0,a+120|0,112)}function Ni(e,a){var r,i;e|=0,r=f,i=f=f+63&-64,f=f+128|0,function(e,a){Sa(e|=0,a|=0),Sa(e+40|0,a+40|0),Sa(e+80|0,a+80|0)}(i,a|=0),ar(e,i),f=r}function Gi(e,a){a|=0;var r=0;e=16+(r=32+(e|=0)|0)|0;do{t[r>>0]=0|t[a>>0],r=r+1|0,a=a+1|0}while((0|r)<(0|e))}function Yi(e){var a,r;return a=f,r=f=f+63&-64,f=f+32|0,Qe(r,e|=0),e=0|Qr(r,32),f=a,0|e}function Ji(e,a){e|=0,a|=0;var r=0,i=0;r=0;do{t[(i=e+r|0)>>0]=t[i>>0]^t[a+r>>0],r=r+1|0}while(8!=(0|r))}function Pi(e,a,r,i,t,n,o){return 0|Ce(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0)}function Li(e,a,r){return e|=0,(0|(r|=0))<32?(I((a|=0)<>>32-r|0),e<>>0<=4294967168&&0!=(0|(r=0|function(e){var a,r=0,i=0,t=0;if((e|=0)>>>0>=4294967168)return l[8966]=12,0;if(!(t=0|F(76+(a=e>>>0<11?16:e+11&-8)|0)))return 0;do{if(63&t){if(e=(i=((t+63&-64)-8-(t+-8)|0)>>>0>15?(t+63&-64)-8|0:56+(t+63&-64)|0)-(t+-8)|0,3&(r=0|l[t+-4>>2])){l[i+4>>2]=(-8&r)-e|1&l[i+4>>2]|2,l[i+((-8&r)-e)+4>>2]=1|l[i+((-8&r)-e)+4>>2],l[t+-4>>2]=e|1&l[t+-4>>2]|2,l[i+4>>2]=1|l[i+4>>2],T(t+-8|0,e),e=i;break}l[i>>2]=(0|l[t+-8>>2])+e,l[i+4>>2]=(-8&r)-e,e=i;break}e=t+-8|0,i=t+-8|0}while(0);return 3&(r=0|l[(e=e+4|0)>>2])|0&&(-8&r)>>>0>(a+16|0)>>>0&&(t=i+a|0,l[e>>2]=a|1&r|2,l[t+4>>2]=(-8&r)-a|3,l[(e=i+(-8&r)+4|0)>>2]=1|l[e>>2],T(t,(-8&r)-a|0)),0|i+8}(a)))?(l[e>>2]=r,e=0):e=12,0|e}function Oi(e,a,r){return e|=0,a|=0,(0|(r|=0))<32?(I(a>>>r|0),e>>>r|(a&(1<>>r-32|0)}function Xi(e){var a,r;return r=f,a=f=f+63&-64,f=f+32|0,Qe(a,e|=0),f=r,1&t[a>>0]|0}function Vi(e,a,r){Je(e|=0,a|=0,255&(r|=0)),Je(e+40|0,a+40|0,255&r),Je(e+80|0,a+80|0,255&r)}function Wi(e,a,r,i,t,n,o){return 0|Zr(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0)}function Zi(e,a,r,i,t,n,o){return 0|Ne(e|=0,a|=0,1,r|=0,i|=0,t|=0,16,n|=0,o|=0,0,0,2)}function et(e,a,r,i,t,n,o){return 0|Ne(e|=0,a|=0,1,r|=0,i|=0,t|=0,16,n|=0,o|=0,0,0,1)}function at(e){e|=0;var a=0;for(a=0;0|t[e+a>>0];)if((a=a+1|0)>>>0>=102){a=102;break}return 0|a}function rt(e,a){e|=0,a|=0;var r=0;r=0;do{l[e+(r<<2)>>2]=l[a+(r<<2)>>2],r=r+1|0}while(16!=(0|r))}function it(e,a){R(e|=0,a|=0,a+120|0),R(e+40|0,a+40|0,a+80|0),R(e+80|0,a+80|0,a+120|0)}function tt(e,a,r,i,t,n){return 0|hr(e|=0,a|=0,r|=0,i|=0,t|=0,0,0,n|=0)}function nt(e,a,r,i,t,n){return $e(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,0),0}function ot(e,a,r,i,t,n){return 0|ja(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0)}function st(e,a){(function(e,a){e|=0,0|(a|=0)&&(0|(a=0|l[e>>2])&&Hr(0|l[a+4>>2],l[e+16>>2]<<10),0|(a=0|l[e+4>>2])&&Hr(a,l[e+20>>2]<<3))})(e|=0,4&(a|=0)),L(0|l[e+4>>2]),l[e+4>>2]=0,function(e){var a=0;0|(e|=0)&&0|(a=0|l[e>>2])&&L(a),L(e)}(0|l[e>>2]),l[e>>2]=0}function lt(e,a,r,i,t,n){return 0|Ne(e|=0,a|=0,1,r|=0,i|=0,t|=0,16,0,32,n|=0,128,2)}function ct(e,a,r,i,t,n){return 0|Ne(e|=0,a|=0,1,r|=0,i|=0,t|=0,16,0,32,n|=0,128,1)}function ut(e,a,r,i,t,n){return 0|ge(e|=0,a|=0,r|=0,i|=0,t|=0,0,0,n|=0)}function dt(e,a,r,i,t){return 0|Ve(e|=0,a|=0,r|=0,i|=0,t|=0,0)}function ht(e,a,r,i,t){return 0|function(e,a,r,i,t){var n,o;return e|=0,n=f,o=f=f+63&-64,f=f+16|0,Tr(o,a|=0,r|=0,i|=0,t|=0),t=0|An(e,o),f=n,0|t}(e|=0,a|=0,r|=0,i|=0,t|=0)}function At(e,a,r,i,t,n){return 0|ir(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0)}function gt(e){t[32+(e|=0)>>0]=1,t[e+32+1>>0]=0,t[e+32+2>>0]=0,t[e+32+3>>0]=0}function pt(e){var a;l[(e|=0)>>2]=1,a=36+(e=e+4|0)|0;do{l[e>>2]=0,e=e+4|0}while((0|e)<(0|a))}function mt(e,a,r,i){return 0|(I(0|(i=(a|=0)-(i|=0)-((r|=0)>>>0>(e|=0)>>>0|0)>>>0)),e-r>>>0|0)}function ft(e,a,r,i,t){return 0|Tr(e|=0,a|=0,r|=0,i|=0,t|=0)}function yt(e,a,r,i){return 0|(I((a|=0)+(i|=0)+((e|=0)+(r|=0)>>>0>>>0>>0|0)>>>0|0),e+r>>>0|0)}function bt(e,a){a|=0,Xr(e|=0),0|a&&ie(e,33776,34,0)}function kt(e,a){var r;return r=0|l[(e|=0)-64+((a|=0)<<7)>>2],I(0|l[e+-64+(a<<7)+4>>2]),0|r}function wt(e,a,r,i){return 0|function(e,a,r,i){return ce(e|=0,a|=0,r|=0,i|=0),0}(e|=0,a|=0,r|=0,i|=0)}function vt(e,a){a|=0,t[3+(e|=0)>>0]=a,t[e+2>>0]=a>>>8,t[e+1>>0]=a>>>16,t[e>>0]=a>>>24}function It(e,a){return e|=0,a=0|function(e){e|=0;var a=0,r=0,i=0,n=0;e:do{a=35189,r=65;do{if((0|t[a>>0])==(255&e)<<24>>24){n=6;break e}a=a+1|0,i=0!=(0|(r=r+-1|0))}while(i&0!=(3&a|0));i?n=6:a=0}while(0);e:do{if(6==(0|n)&&(0|t[a>>0])!=(255&e)<<24>>24){i=0|b(255&e,16843009);a:do{if(r>>>0>3){do{if((-2139062144&(n=l[a>>2]^i)^-2139062144)&n+-16843009|0)break a;a=a+4|0,r=r+-4|0}while(r>>>0>3);if(!r){a=0;break e}}}while(0);for(;;){if((0|t[a>>0])==(255&e)<<24>>24)break e;if(!(r=r+-1|0)){a=0;break}a=a+1|0}}}while(0);return 0|a}(255&(a|=0)),l[e>>2]=0==(0|a)?0:a-35189|0,(0==(0|a))<<31>>31|0}function _t(e,a){a|=0,t[(e|=0)>>0]=a,t[e+1>>0]=a>>8,t[e+2>>0]=a>>16,t[e+3>>0]=a>>24}function Bt(e,a,r,i){return ke(e|=0,a|=0,r|=0,i|=0),0}function Ct(e,a,r,i){return Bt(e|=0,a|=0,r|=0,i|=0),0}function Et(e,a){return e|=0,xi(a|=0,32),0|Xt(e,a)}function Qt(e){return(0|u[2+(e|=0)>>0])<<8|0|u[e+3>>0]|(0|u[e+1>>0])<<16|(0|u[e>>0])<<24|0}function xt(e,a,r,i){return le(e|=0,a|=0,r|=0,i|=0),0}function jt(e,a,r,i,t){return 0|Be(e|=0,a|=0,r|=0,i|=0,t|=0)}function zt(e,a,r,i){return ie(e|=0,a|=0,r|=0,i|=0),0}function Dt(e,a,r,i){return 0|Xe(e|=0,a|=0,r|=0,i|=0,2)}function St(e,a,r,i){return 0|Xe(e|=0,a|=0,r|=0,i|=0,1)}function Mt(e,a,r,i){return 0|mr(e|=0,a|=0,r|=0,i|=0)}function qt(e,a,r,i){return zt(e|=0,a|=0,r|=0,i|=0),0}function Ft(e){var a;a=40+(e|=0)|0;do{l[e>>2]=0,e=e+4|0}while((0|e)<(0|a))}function Ut(e,a,r){return 0|Mr(e|=0,a|=0,r|=0)}function Rt(e){t[(e|=0)>>0]=-8&t[e>>0],t[e+31>>0]=63&t[e+31>>0]|64}function Ht(e,a){return e=0|function(e,a){e|=0,a|=0;var r=0,i=0;e:do{if(255&a){if(3&e)do{if((i=0|t[e>>0])<<24>>24==0||i<<24>>24==(255&a)<<24>>24)break e;e=e+1|0}while(0!=(3&e|0));i=0|b(255&a,16843009),r=0|l[e>>2];a:do{if(!((-2139062144&r^-2139062144)&r+-16843009))do{if((-2139062144&(r^=i)^-2139062144)&r+-16843009|0)break a;r=0|l[(e=e+4|0)>>2]}while(!((-2139062144&r^-2139062144)&r+-16843009|0))}while(0);for(;(i=0|t[e>>0])<<24>>24!=0&&i<<24>>24!=(255&a)<<24>>24;)e=e+1|0}else e=e+(0|Ma(e))|0}while(0);return 0|e}(e|=0,a|=0),0|((0|t[e>>0])==(255&a)<<24>>24?e:0)}function Nt(e,a,r,i){return ee(e|=0,a|=0,r|=0,i|=0,12),0}function Gt(e,a,r,i){return ee(e|=0,a|=0,r|=0,i|=0,8),0}function Yt(e,a,r,i){return ee(e|=0,a|=0,r|=0,i|=0,20),0}function Jt(e,a,r){return Fe(e|=0,a|=0,r|=0),0}function Pt(e){return u[(e|=0)>>0]|u[e+1>>0]<<8|u[e+2>>0]<<16|u[e+3>>0]<<24|0}function Lt(e,a,r){return 0|qi(e|=0,a|=0,r|=0)}function Tt(e){t[(e|=0)>>0]=0,t[e+1>>0]=0,t[e+2>>0]=0,t[e+3>>0]=0}function Kt(e,a,r){!function(e,a,r){var i,t,n;e|=0,a|=0,i=f,n=f=f+63&-64,f=f+128|0,r=((r|=0)<<24>>24)-((0-(255&(t=0|En(r)))&r<<24>>24)<<1)&255,function(e){pt(e|=0),pt(e+40|0),Ft(e+80|0)}(e),Vi(e,a,0|cn(r,1)),Vi(e,a+120|0,0|cn(r,2)),Vi(e,a+240|0,0|cn(r,3)),Vi(e,a+360|0,0|cn(r,4)),Vi(e,a+480|0,0|cn(r,5)),Vi(e,a+600|0,0|cn(r,6)),Vi(e,a+720|0,0|cn(r,7)),Vi(e,a+840|0,0|cn(r,8)),Sa(n,e+40|0),Sa(n+40|0,e),_a(n+80|0,e+80|0),Vi(e,n,t),f=i}(e|=0,1120+(960*(a|=0)|0)|0,r|=0)}function $t(e){Ft(e|=0),pt(e+40|0),pt(e+80|0),Ft(e+120|0)}function Ot(e){l[(e|=0)>>2]=0,l[e+4>>2]=0,l[e+8>>2]=0,l[e+12>>2]=0}function Xt(e,a){return 0|function(e,a){e|=0,a|=0;var r,i,n=0;r=f,i=f=f+63&-64,f=f+208|0,n=0;do{t[e+n>>0]=0|t[a+n>>0],n=n+1|0}while(32!=(0|n));return t[e>>0]=-8&t[e>>0],t[e+31>>0]=63&t[e+31>>0]|64,De(i+40|0,e),function(e,a,r){var i,t;e|=0,i=f,t=f=f+63&-64,f=f+96|0,ra(t+48|0,r|=0,a|=0),aa(t,r,a),me(t,t),R(e,t+48|0,t),f=i}(i,i+40+40|0,i+40+80|0),Qe(e,i),f=r,0}(e|=0,a|=0)}function Vt(e,a){return 0|function(e,a){return pe(e|=0,a|=0),0}(e|=0,a|=0)}function Wt(e,a){return 0|function(e,a){return da(e|=0,a|=0),0}(e|=0,a|=0)}function Zt(e){var a;0|(a=0|l[(e|=0)>>2])&&L(a),on(e)}function en(e,a,r,i){return 0|V(e|=0,a|=0,r|=0,i|=0,0)}function an(e,a,r){return 0|rr(e|=0,a|=0,r|=0)}function rn(e,a){return 0|Et(e|=0,a|=0)}function tn(e){1!=(-7&(e|=0)|0)&&ao()}function nn(e,a){return 0|Xt(e|=0,a|=0)}function on(e){l[4+(e|=0)>>2]=0,l[e>>2]=0,l[e+8>>2]=0}function sn(e,a,r){return 0|je(e|=0,a|=0,r|=0,2)}function ln(e,a,r){return 0|je(e|=0,a|=0,r|=0,1)}function cn(e,a){return((255&((a|=0)^(e|=0)))-1|0)>>>31&255|0}function un(e){return 0|((e|=0)?31-(0|k(e^e-1))|0:32)}function dn(e,a){return 0|Oa(e|=0,a|=0,64)}function hn(e,a){return 0|Oa(e|=0,a|=0,32)}function An(e,a){return 0|Oa(e|=0,a|=0,16)}function gn(e,a){Ee(0|(e|=0),0|(a|=0),1024)}function pn(e){return Xr(e|=0),0}function mn(e,a){return(e|=0)>>>(32-(a|=0)|0)|e<>>a|0}function bn(e){la(0|(e|=0),0,1024)}function kn(e){xi(e|=0,32)}function wn(){return 16777216}function vn(e){on(e|=0)}function In(e){Zt(e|=0)}function _n(){return 33554432}function Bn(){x(1)}function Cn(){return 0|x(0)}function En(e){return(255&(e|=0))>>>7|0}function Qn(){return 1073741824}function xn(){return 67108864}function jn(){return 12}function zn(){return 268435456}function Dn(){return-2147483648}function Sn(){return 416}function Mn(){return 4}function qn(){return 3}function Fn(){return 256}function Un(){return 384}function Rn(){return-65}function Hn(){return 8192}function Nn(){return-17}function Gn(){return 34212}function Yn(){return 1}function Jn(){return 2}function Pn(){return 208}function Ln(){return 128}function Tn(){return-1}function Kn(){return 34121}function $n(){return 8}function On(){return 24}function Xn(){return 48}function Vn(){return 16}function Wn(){return 64}function Zn(){return 32}function eo(){return 0}function ao(){Q()}return{___errno_location:function(){return 35864},___muldi3:ji,___udivdi3:en,___uremdi3:_i,_bitshift64Ashr:Mi,_bitshift64Lshr:Oi,_bitshift64Shl:Li,_crypto_aead_chacha20poly1305_abytes:Vn,_crypto_aead_chacha20poly1305_decrypt:function(e,a,r,i,t,n,o,s,c,u,d){e|=0,a|=0,r|=0,i|=0,o|=0,s|=0,c|=0,u|=0,d|=0;var h=0,A=0,g=0;return(n|=0)>>>0>0|0==(0|n)&(t|=0)>>>0>15?(n=0|Te(e,0,i,h=0|yt(0|t,0|n,-16,-1),A=0|_(),i+t+-16|0,o,s,c,u,d),a?(r=n,e=0==(0|n)?h:0,n=0==(0|n)?A:0,g=4):r=n):a?(r=-1,e=0,n=0,g=4):r=-1,4==(0|g)&&(l[a>>2]=e,l[a+4>>2]=n),0|r},_crypto_aead_chacha20poly1305_decrypt_detached:Te,_crypto_aead_chacha20poly1305_encrypt:function(e,a,r,i,t,n,o,s,c,u,d){return e|=0,a|=0,r|=0,n|=0,o|=0,s|=0,c|=0,u|=0,d|=0,(t|=0)>>>0>0|0==(0|t)&(i|=0)>>>0>4294967279&&ao(),ia(e,e+i|0,0,r,i,t,n,o,s,0,u,d),0|a&&(c=0|yt(0|i,0|t,16,0),u=0|_(),l[a>>2]=c,l[a+4>>2]=u),0},_crypto_aead_chacha20poly1305_encrypt_detached:ia,_crypto_aead_chacha20poly1305_ietf_abytes:Vn,_crypto_aead_chacha20poly1305_ietf_decrypt:function(e,a,r,i,t,n,o,s,c,u,d){e|=0,a|=0,r|=0,i|=0,o|=0,s|=0,c|=0,u|=0,d|=0;var h=0,A=0,g=0;return(n|=0)>>>0>0|0==(0|n)&(t|=0)>>>0>15?(n=0|ze(e,0,i,h=0|yt(0|t,0|n,-16,-1),A=0|_(),i+t+-16|0,o,s,c,u,d),a?(r=n,e=0==(0|n)?h:0,n=0==(0|n)?A:0,g=4):r=n):a?(r=-1,e=0,n=0,g=4):r=-1,4==(0|g)&&(l[a>>2]=e,l[a+4>>2]=n),0|r},_crypto_aead_chacha20poly1305_ietf_decrypt_detached:ze,_crypto_aead_chacha20poly1305_ietf_encrypt:function(e,a,r,i,t,n,o,s,c,u,d){return e|=0,a|=0,r|=0,n|=0,o|=0,s|=0,c|=0,u|=0,d|=0,(t|=0)>>>0>0|0==(0|t)&(i|=0)>>>0>4294967279&&ao(),Ge(e,e+i|0,0,r,i,t,n,o,s,0,u,d),0|a&&(c=0|yt(0|i,0|t,16,0),u=0|_(),l[a>>2]=c,l[a+4>>2]=u),0},_crypto_aead_chacha20poly1305_ietf_encrypt_detached:Ge,_crypto_aead_chacha20poly1305_ietf_keybytes:Zn,_crypto_aead_chacha20poly1305_ietf_keygen:kn,_crypto_aead_chacha20poly1305_ietf_messagebytes_max:Nn,_crypto_aead_chacha20poly1305_ietf_npubbytes:jn,_crypto_aead_chacha20poly1305_ietf_nsecbytes:eo,_crypto_aead_chacha20poly1305_keybytes:Zn,_crypto_aead_chacha20poly1305_keygen:kn,_crypto_aead_chacha20poly1305_messagebytes_max:Nn,_crypto_aead_chacha20poly1305_npubbytes:$n,_crypto_aead_chacha20poly1305_nsecbytes:eo,_crypto_aead_xchacha20poly1305_ietf_abytes:Vn,_crypto_aead_xchacha20poly1305_ietf_decrypt:function(e,a,r,i,t,n,o,s,c,u,d){e|=0,a|=0,r|=0,i|=0,o|=0,s|=0,c|=0,u|=0,d|=0;var h=0,A=0,g=0;return(n|=0)>>>0>0|0==(0|n)&(t|=0)>>>0>15?(n=0|wa(e,0,i,h=0|yt(0|t,0|n,-16,-1),A=0|_(),i+t+-16|0,o,s,c,u,d),a?(r=n,e=0==(0|n)?h:0,n=0==(0|n)?A:0,g=4):r=n):a?(r=-1,e=0,n=0,g=4):r=-1,4==(0|g)&&(l[a>>2]=e,l[a+4>>2]=n),0|r},_crypto_aead_xchacha20poly1305_ietf_decrypt_detached:wa,_crypto_aead_xchacha20poly1305_ietf_encrypt:function(e,a,r,i,t,n,o,s,c,u,d){return e|=0,a|=0,r|=0,n|=0,o|=0,s|=0,c|=0,u|=0,d|=0,(t|=0)>>>0>0|0==(0|t)&(i|=0)>>>0>4294967279&&ao(),ya(e,e+i|0,0,r,i,t,n,o,s,0,u,d),0|a&&(c=0|yt(0|i,0|t,16,0),u=0|_(),l[a>>2]=c,l[a+4>>2]=u),0},_crypto_aead_xchacha20poly1305_ietf_encrypt_detached:ya,_crypto_aead_xchacha20poly1305_ietf_keybytes:Zn,_crypto_aead_xchacha20poly1305_ietf_keygen:kn,_crypto_aead_xchacha20poly1305_ietf_messagebytes_max:Nn,_crypto_aead_xchacha20poly1305_ietf_npubbytes:On,_crypto_aead_xchacha20poly1305_ietf_nsecbytes:eo,_crypto_auth:function(e,a,r,i,t){return $r(e|=0,a|=0,r|=0,i|=0,t|=0),0},_crypto_auth_bytes:Zn,_crypto_auth_hmacsha256:Pr,_crypto_auth_hmacsha256_bytes:Zn,_crypto_auth_hmacsha256_final:ri,_crypto_auth_hmacsha256_init:Ue,_crypto_auth_hmacsha256_keybytes:Zn,_crypto_auth_hmacsha256_keygen:kn,_crypto_auth_hmacsha256_statebytes:Pn,_crypto_auth_hmacsha256_update:xt,_crypto_auth_hmacsha256_verify:function(e,a,r,i,t){var n;return e|=0,n=f,f=f+32|0,Pr(n,a|=0,r|=0,i|=0,t|=0),t=0|hn(e,n),t=0|((0|n)==(0|e)?-1:t)|Pa(n,e,32),f=n,0|t},_crypto_auth_hmacsha512:Kr,_crypto_auth_hmacsha512256:$r,_crypto_auth_hmacsha512256_bytes:Zn,_crypto_auth_hmacsha512256_final:Yr,_crypto_auth_hmacsha512256_init:Jt,_crypto_auth_hmacsha512256_keybytes:Zn,_crypto_auth_hmacsha512256_keygen:kn,_crypto_auth_hmacsha512256_statebytes:Sn,_crypto_auth_hmacsha512256_update:qt,_crypto_auth_hmacsha512256_verify:qr,_crypto_auth_hmacsha512_bytes:Wn,_crypto_auth_hmacsha512_final:ai,_crypto_auth_hmacsha512_init:Fe,_crypto_auth_hmacsha512_keybytes:Zn,_crypto_auth_hmacsha512_keygen:kn,_crypto_auth_hmacsha512_statebytes:Sn,_crypto_auth_hmacsha512_update:zt,_crypto_auth_hmacsha512_verify:function(e,a,r,i,t){var n;return e|=0,n=f,f=f+64|0,Kr(n,a|=0,r|=0,i|=0,t|=0),t=0|dn(e,n),t=0|((0|n)==(0|e)?-1:t)|Pa(n,e,64),f=n,0|t},_crypto_auth_keybytes:Zn,_crypto_auth_keygen:kn,_crypto_auth_primitive:function(){return 33856},_crypto_auth_verify:function(e,a,r,i,t){return 0|qr(e|=0,a|=0,r|=0,i|=0,t|=0)},_crypto_box:function(e,a,r,i,t,n,o){return 0|dr(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0)},_crypto_box_afternm:function(e,a,r,i,t,n){return 0|At(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0)},_crypto_box_beforenm:Ut,_crypto_box_beforenmbytes:Zn,_crypto_box_boxzerobytes:Vn,_crypto_box_curve25519xchacha20poly1305_beforenm:Sr,_crypto_box_curve25519xchacha20poly1305_beforenmbytes:Zn,_crypto_box_curve25519xchacha20poly1305_detached:Ta,_crypto_box_curve25519xchacha20poly1305_detached_afternm:Ci,_crypto_box_curve25519xchacha20poly1305_easy:Ur,_crypto_box_curve25519xchacha20poly1305_easy_afternm:function(e,a,r,i,t,n){return e|=0,a|=0,t|=0,n|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967279?(ao(),0):(Ci(e+16|0,e,a,r,i,t,n),0)},_crypto_box_curve25519xchacha20poly1305_keypair:Et,_crypto_box_curve25519xchacha20poly1305_macbytes:Vn,_crypto_box_curve25519xchacha20poly1305_messagebytes_max:Nn,_crypto_box_curve25519xchacha20poly1305_noncebytes:On,_crypto_box_curve25519xchacha20poly1305_open_detached:La,_crypto_box_curve25519xchacha20poly1305_open_detached_afternm:ki,_crypto_box_curve25519xchacha20poly1305_open_easy:kr,_crypto_box_curve25519xchacha20poly1305_open_easy_afternm:function(e,a,r,i,t,n){return a|=0,t|=0,n|=0,0|((i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<16?-1:0|ki(e|=0,a+16|0,a,i=0|yt(0|r,0|i,-16,-1),0|_(),t,n))},_crypto_box_curve25519xchacha20poly1305_publickeybytes:Zn,_crypto_box_curve25519xchacha20poly1305_seal:function(e,a,r,i,n){e|=0,a|=0,r|=0,i|=0,n|=0;var o,s,l=0,c=0,u=0;if(s=f,o=f=f+63&-64,f=f+96|0,0|Et(o+32|0,o))e=-1;else{c=o+32|0,u=(l=e)+32|0;do{t[l>>0]=0|t[c>>0],l=l+1|0,c=c+1|0}while((0|l)<(0|u));zr(o+64|0,o+32|0,n),e=0|Ur(e+32|0,a,r,i,o+64|0,n,o),Hr(o,32),Hr(o+32|0,32),Hr(o+64|0,24)}return f=s,0|e},_crypto_box_curve25519xchacha20poly1305_seal_open:function(e,a,r,i,t,n){var o,s;return e|=0,a|=0,t|=0,n|=0,s=f,o=f=f+63&-64,f=f+32|0,(i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<48?e=-1:(r=0|yt(0|r,0|i,-32,-1),i=0|_(),zr(o,a,t),e=0|kr(e,a+32|0,r,i,o,a,n)),f=s,0|e},_crypto_box_curve25519xchacha20poly1305_sealbytes:Xn,_crypto_box_curve25519xchacha20poly1305_secretkeybytes:Zn,_crypto_box_curve25519xchacha20poly1305_seed_keypair:tr,_crypto_box_curve25519xchacha20poly1305_seedbytes:Zn,_crypto_box_curve25519xsalsa20poly1305:dr,_crypto_box_curve25519xsalsa20poly1305_afternm:At,_crypto_box_curve25519xsalsa20poly1305_beforenm:Mr,_crypto_box_curve25519xsalsa20poly1305_beforenmbytes:Zn,_crypto_box_curve25519xsalsa20poly1305_boxzerobytes:Vn,_crypto_box_curve25519xsalsa20poly1305_keypair:Et,_crypto_box_curve25519xsalsa20poly1305_macbytes:Vn,_crypto_box_curve25519xsalsa20poly1305_messagebytes_max:Nn,_crypto_box_curve25519xsalsa20poly1305_noncebytes:On,_crypto_box_curve25519xsalsa20poly1305_open:cr,_crypto_box_curve25519xsalsa20poly1305_open_afternm:ot,_crypto_box_curve25519xsalsa20poly1305_publickeybytes:Zn,_crypto_box_curve25519xsalsa20poly1305_secretkeybytes:Zn,_crypto_box_curve25519xsalsa20poly1305_seed_keypair:tr,_crypto_box_curve25519xsalsa20poly1305_seedbytes:Zn,_crypto_box_curve25519xsalsa20poly1305_zerobytes:Zn,_crypto_box_detached:wr,_crypto_box_detached_afternm:Ki,_crypto_box_easy:ni,_crypto_box_easy_afternm:function(e,a,r,i,t,n){return e|=0,a|=0,t|=0,n|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967279?(ao(),0):(Ki(e+16|0,e,a,r,i,t,n),0)},_crypto_box_keypair:rn,_crypto_box_macbytes:Vn,_crypto_box_messagebytes_max:Nn,_crypto_box_noncebytes:On,_crypto_box_open:function(e,a,r,i,t,n,o){return 0|cr(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0)},_crypto_box_open_afternm:function(e,a,r,i,t,n){return 0|ot(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0)},_crypto_box_open_detached:br,_crypto_box_open_detached_afternm:Pi,_crypto_box_open_easy:Fr,_crypto_box_open_easy_afternm:function(e,a,r,i,t,n){return a|=0,t|=0,n|=0,0|((i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<16?-1:0|Pi(e|=0,a+16|0,a,i=0|yt(0|r,0|i,-16,-1),0|_(),t,n))},_crypto_box_primitive:function(){return 33870},_crypto_box_publickeybytes:Zn,_crypto_box_seal:function(e,a,r,i,n){e|=0,a|=0,r|=0,i|=0,n|=0;var o,s=0,l=0,c=0;if(o=f,f=f+96|0,0|rn(o+32|0,o))e=-1;else{l=o+32|0,c=(s=e)+32|0;do{t[s>>0]=0|t[l>>0],s=s+1|0,l=l+1|0}while((0|s)<(0|c));zr(o+64|0,o+32|0,n),e=0|ni(e+32|0,a,r,i,o+64|0,n,o),Hr(o,32),Hr(o+32|0,32),Hr(o+64|0,24)}return f=o,0|e},_crypto_box_seal_open:function(e,a,r,i,t,n){var o,s;return e|=0,a|=0,t|=0,n|=0,s=f,o=f=f+63&-64,f=f+32|0,(i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<48?e=-1:(r=0|yt(0|r,0|i,-32,-1),i=0|_(),zr(o,a,t),e=0|Fr(e,a+32|0,r,i,o,a,n)),f=s,0|e},_crypto_box_sealbytes:Xn,_crypto_box_secretkeybytes:Zn,_crypto_box_seed_keypair:function(e,a,r){return 0|tr(e|=0,a|=0,r|=0)},_crypto_box_seedbytes:Zn,_crypto_box_zerobytes:Zn,_crypto_core_ed25519_add:function(e,a,r){var i,t;return e|=0,r|=0,t=f,i=f=f+63&-64,f=f+800|0,0==(0|Le(i+640|0,a|=0))&&0!=(0|Ga(i+640|0))&&0==(0|Le(i+480|0,r))&&0!=(0|Ga(i+480|0))?(Hi(i,i+480|0),Ra(i+160|0,i+640|0,i),Di(i+320|0,i+160|0),gr(e,i+320|0),e=0):e=-1,f=t,0|e},_crypto_core_ed25519_bytes:Zn,_crypto_core_ed25519_from_uniform:function(e,a){return function(e,a){a|=0;var r,i,n=0,o=0;r=f,i=f=f+63&-64,f=f+960|0,n=32+(o=e|=0)|0;do{t[o>>0]=0|t[a>>0],o=o+1|0,a=a+1|0}while((0|o)<(0|n));if(o=0|u[e+31>>0],t[e+31>>0]=127&o,O(i+384|0,e),G(i+384|0,i+384|0),l[i+384>>2]=1+(0|l[i+384>>2]),me(i+384|0,i+384|0),R(i+336|0,32320,i+384|0),_a(i+336|0,i+336|0),Y(i+288|0,i+336|0),R(i+240|0,i+336|0,i+288|0),ra(i+480|0,i+240|0,i+336|0),R(i+288|0,i+288|0,32320),ra(i+480|0,i+288|0,i+480|0),function(e,a){var r,i;e|=0,r=f,i=f=f+63&-64,f=f+192|0,Y(i+144|0,a|=0),R(i+96|0,i+144|0,a),Y(i+144|0,i+96|0),Y(i+48|0,i+144|0),Y(i+48|0,i+48|0),R(i+48|0,i+48|0,i+144|0),R(i+96|0,i+48|0,a),Y(i+48|0,i+96|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(5!=(0|a));R(i+96|0,i+48|0,i+96|0),Y(i+48|0,i+96|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(10!=(0|a));R(i+48|0,i+48|0,i+96|0),Y(i,i+48|0),a=1;do{Y(i,i),a=a+1|0}while(20!=(0|a));R(i+48|0,i,i+48|0),Y(i+48|0,i+48|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(10!=(0|a));R(i+96|0,i+48|0,i+96|0),Y(i+48|0,i+96|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(50!=(0|a));R(i+48|0,i+48|0,i+96|0),Y(i,i+48|0),a=1;do{Y(i,i),a=a+1|0}while(100!=(0|a));R(i+48|0,i,i+48|0),Y(i+48|0,i+48|0),a=1;do{Y(i+48|0,i+48|0),a=a+1|0}while(50!=(0|a));R(i+96|0,i+48|0,i+96|0),Y(i+96|0,i+96|0),a=1;do{Y(i+96|0,i+96|0),a=a+1|0}while(4!=(0|a));R(e,i+96|0,i+144|0),f=r}(i+480|0,i+480|0),Qe(e,i+480|0),n=1&t[e+1>>0],_a(i+432|0,i+336|0),Je(i+336|0,i+432|0,n),Ft(i+288|0),Je(i+288|0,32320,n),aa(i+336|0,i+336|0,i+288|0),pt(i+192|0),ra(i+144|0,i+336|0,i+192|0),aa(i+48|0,i+336|0,i+192|0),me(i+96|0,i+144|0),R(i,i+48|0,i+96|0),Qe(e,i),t[e+31>>0]=128&o|0|u[e+31>>0],!(0|Le(i+800|0,e)))return Ni(i+640|0,i+800|0),it(i+520|0,i+640|0),ar(i+640|0,i+520|0),it(i+520|0,i+640|0),ar(i+640|0,i+520|0),Di(i+800|0,i+640|0),gr(e,i+800|0),void(f=r);Q()}(e|=0,a|=0),0-(0|ta(e))|0},_crypto_core_ed25519_is_valid_point:function(e){var a,r;return r=f,a=f=f+63&-64,f=f+160|0,e=0!=(0|mi(e|=0))&&0==(0|ta(e))&&0==(0|Le(a,e))&&0!=(0|Ga(a))?0!=(0|Fi(a))&1:0,f=r,0|e},_crypto_core_ed25519_nonreducedscalarbytes:Wn,_crypto_core_ed25519_scalar_add:ea,_crypto_core_ed25519_scalar_complement:function(e,a){e|=0,a|=0;var r,i,n=0,o=0;r=f,i=f=f+63&-64,f=f+128|0,l[i+64>>2]=0,l[i+64+4>>2]=0,l[i+64+8>>2]=0,l[i+64+12>>2]=0,l[i+64+16>>2]=0,l[i+64+20>>2]=0,l[i+64+24>>2]=0,l[i+64+28>>2]=0,t[i+64>>0]=1,l[(o=i+64+32|0)>>2]=l[8456],l[o+4>>2]=l[8457],l[o+8>>2]=l[8458],l[o+12>>2]=l[8459],l[o+16>>2]=l[8460],l[o+20>>2]=l[8461],l[o+24>>2]=l[8462],l[o+28>>2]=l[8463],l[i+32>>2]=0,l[i+32+4>>2]=0,l[i+32+8>>2]=0,l[i+32+12>>2]=0,l[i+32+16>>2]=0,l[i+32+20>>2]=0,l[i+32+24>>2]=0,l[i+32+28>>2]=0,n=(o=i)+32|0;do{t[o>>0]=0|t[a>>0],o=o+1|0,a=a+1|0}while((0|o)<(0|n));oi(i+64|0,i),U(i+64|0),a=i+64|0,n=(o=e)+32|0;do{t[o>>0]=0|t[a>>0],o=o+1|0,a=a+1|0}while((0|o)<(0|n));f=r},_crypto_core_ed25519_scalar_invert:function(e,a){return function(e,a){var r,i;e|=0,r=f,i=f=f+63&-64,f=f+256|0,fn(i+224|0,a|=0),fn(i+192|0,i+224|0),M(i+160|0,i+224|0,a),M(i+128|0,i+224|0,i+160|0),M(i+96|0,i+224|0,i+128|0),M(i+64|0,i+224|0,i+96|0),M(i+32|0,i+224|0,i+64|0),M(i,i+192|0,i+32|0),M(e,i,a),Ti(e,126,i+128|0),Ti(e,4,i+160|0),Ti(e,5,i),Ti(e,5,i),Ti(e,4,i+64|0),Ti(e,2,i+160|0),Ti(e,5,i),Ti(e,4,i+128|0),Ti(e,6,i+128|0),Ti(e,3,i+96|0),Ti(e,5,i),Ti(e,5,i+96|0),Ti(e,4,i+160|0),Ti(e,5,i+32|0),Ti(e,6,i+32|0),Ti(e,10,i+64|0),Ti(e,4,i+160|0),Ti(e,5,i+160|0),Ti(e,5,i+160|0),Ti(e,5,i+64|0),Ti(e,4,i+96|0),Ti(e,6,i),Ti(e,5,i+32|0),Ti(e,3,i+128|0),Ti(e,6,i),Ti(e,3,i+128|0),Ti(e,3,i+160|0),f=r}(e|=0,a|=0),0-(0|Qr(a,32))|0},_crypto_core_ed25519_scalar_negate:Re,_crypto_core_ed25519_scalar_random:function(e){e|=0;do{xi(e,32),t[e+31>>0]=31&t[e+31>>0]}while(!(0|_r(e)&&0==(0|Qr(e,32))))},_crypto_core_ed25519_scalar_reduce:Ka,_crypto_core_ed25519_scalar_sub:function(e,a,r){var i,t;e|=0,a|=0,i=f,t=f=f+63&-64,f=f+32|0,Re(t,r|=0),ea(e,a,t),f=i},_crypto_core_ed25519_scalarbytes:Zn,_crypto_core_ed25519_sub:function(e,a,r){var i,t;return e|=0,r|=0,t=f,i=f=f+63&-64,f=f+800|0,0==(0|Le(i+640|0,a|=0))&&0!=(0|Ga(i+640|0))&&0==(0|Le(i+480|0,r))&&0!=(0|Ga(i+480|0))?(Hi(i,i+480|0),Ua(i+160|0,i+640|0,i),Di(i+320|0,i+160|0),gr(e,i+320|0),e=0):e=-1,f=t,0|e},_crypto_core_ed25519_uniformbytes:Zn,_crypto_core_hchacha20:re,_crypto_core_hchacha20_constbytes:Vn,_crypto_core_hchacha20_inputbytes:Vn,_crypto_core_hchacha20_keybytes:Zn,_crypto_core_hchacha20_outputbytes:Zn,_crypto_core_hsalsa20:oe,_crypto_core_hsalsa20_constbytes:Vn,_crypto_core_hsalsa20_inputbytes:Vn,_crypto_core_hsalsa20_keybytes:Zn,_crypto_core_hsalsa20_outputbytes:Zn,_crypto_core_salsa20:Yt,_crypto_core_salsa2012:Nt,_crypto_core_salsa2012_constbytes:Vn,_crypto_core_salsa2012_inputbytes:Vn,_crypto_core_salsa2012_keybytes:Zn,_crypto_core_salsa2012_outputbytes:Wn,_crypto_core_salsa208:Gt,_crypto_core_salsa208_constbytes:Vn,_crypto_core_salsa208_inputbytes:Vn,_crypto_core_salsa208_keybytes:Zn,_crypto_core_salsa208_outputbytes:Wn,_crypto_core_salsa20_constbytes:Vn,_crypto_core_salsa20_inputbytes:Vn,_crypto_core_salsa20_keybytes:Zn,_crypto_core_salsa20_outputbytes:Wn,_crypto_generichash:Wi,_crypto_generichash_blake2b:Zr,_crypto_generichash_blake2b_bytes:Zn,_crypto_generichash_blake2b_bytes_max:Wn,_crypto_generichash_blake2b_bytes_min:Vn,_crypto_generichash_blake2b_final:qi,_crypto_generichash_blake2b_init:mr,_crypto_generichash_blake2b_init_salt_personal:function(e,a,r,i,t,n){e|=0,a|=0,r|=0,i|=0,t|=0,n|=0;do{if(!(r>>>0>64|(i+-1|0)>>>0>63)){if(0==(0|a)|0==(0|r)){na(e,255&i,t,n),e=0;break}qe(e,255&i,a,255&r,t,n),e=0;break}e=-1}while(0);return 0|e},_crypto_generichash_blake2b_keybytes:Zn,_crypto_generichash_blake2b_keybytes_max:Wn,_crypto_generichash_blake2b_keybytes_min:Vn,_crypto_generichash_blake2b_keygen:kn,_crypto_generichash_blake2b_personalbytes:Vn,_crypto_generichash_blake2b_salt_personal:xr,_crypto_generichash_blake2b_saltbytes:Vn,_crypto_generichash_blake2b_statebytes:Un,_crypto_generichash_blake2b_update:Bt,_crypto_generichash_bytes:Zn,_crypto_generichash_bytes_max:Wn,_crypto_generichash_bytes_min:Vn,_crypto_generichash_final:Lt,_crypto_generichash_init:Mt,_crypto_generichash_keybytes:Zn,_crypto_generichash_keybytes_max:Wn,_crypto_generichash_keybytes_min:Vn,_crypto_generichash_keygen:kn,_crypto_generichash_primitive:Kn,_crypto_generichash_statebytes:Un,_crypto_generichash_update:Ct,_crypto_hash:function(e,a,r,i){return Jr(e|=0,a|=0,r|=0,i|=0),0},_crypto_hash_bytes:Wn,_crypto_hash_primitive:function(){return 34114},_crypto_hash_sha256:function(e,a,r,i){var t,n;return e|=0,a|=0,r|=0,i|=0,t=f,n=f=f+63&-64,f=f+112|0,Br(n),le(n,a,r,i),pi(n,e),f=t,0},_crypto_hash_sha256_bytes:Zn,_crypto_hash_sha256_final:pi,_crypto_hash_sha256_init:Br,_crypto_hash_sha256_statebytes:function(){return 104},_crypto_hash_sha256_update:le,_crypto_hash_sha512:Jr,_crypto_hash_sha512_bytes:Wn,_crypto_hash_sha512_final:Ai,_crypto_hash_sha512_init:Xr,_crypto_hash_sha512_statebytes:Pn,_crypto_hash_sha512_update:ie,_crypto_kdf_blake2b_bytes_max:Wn,_crypto_kdf_blake2b_bytes_min:Vn,_crypto_kdf_blake2b_contextbytes:$n,_crypto_kdf_blake2b_derive_from_key:ga,_crypto_kdf_blake2b_keybytes:Zn,_crypto_kdf_bytes_max:Wn,_crypto_kdf_bytes_min:Vn,_crypto_kdf_contextbytes:$n,_crypto_kdf_derive_from_key:function(e,a,r,i,t,n){return 0|ga(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0)},_crypto_kdf_keybytes:Zn,_crypto_kdf_keygen:kn,_crypto_kdf_primitive:Kn,_crypto_kx_client_session_keys:function(e,a,r,i,n){var o,s,l;if(a|=0,r|=0,i|=0,n|=0,l=f,s=f=f+63&-64,f=f+480|0,o=0==(0|(e|=0))?a:e,a=0==(0|a)?o:a,o||ao(),0|an(s+448|0,i,n))e=-1;else{Mt(s,0,0,64),Ct(s,s+448|0,32,0),Hr(s+448|0,32),Ct(s,r,32,0),Ct(s,n,32,0),Lt(s,s+384|0,64),Hr(s,384),e=0;do{t[o+e>>0]=0|t[s+384+e>>0],t[a+e>>0]=0|t[s+384+(e+32)>>0],e=e+1|0}while(32!=(0|e));Hr(s+384|0,64),e=0}return f=l,0|e},_crypto_kx_keypair:function(e,a){return e|=0,xi(a|=0,32),0|nn(e,a)},_crypto_kx_primitive:function(){return 34129},_crypto_kx_publickeybytes:Zn,_crypto_kx_secretkeybytes:Zn,_crypto_kx_seed_keypair:function(e,a,r){return e|=0,Wi(a|=0,32,r|=0,32,0,0,0),0|nn(e,a)},_crypto_kx_seedbytes:Zn,_crypto_kx_server_session_keys:function(e,a,r,i,n){var o,s,l;if(a|=0,r|=0,i|=0,n|=0,l=f,s=f=f+63&-64,f=f+480|0,o=0==(0|(e|=0))?a:e,a=0==(0|a)?o:a,o||ao(),0|an(s+448|0,i,n))e=-1;else{Mt(s,0,0,64),Ct(s,s+448|0,32,0),Hr(s+448|0,32),Ct(s,n,32,0),Ct(s,r,32,0),Lt(s,s+384|0,64),Hr(s,384),e=0;do{t[a+e>>0]=0|t[s+384+e>>0],t[o+e>>0]=0|t[s+384+(e+32)>>0],e=e+1|0}while(32!=(0|e));Hr(s+384|0,64),e=0}return f=l,0|e},_crypto_kx_sessionkeybytes:Zn,_crypto_onetimeauth:function(e,a,r,i,t){return 0|ft(e|=0,a|=0,r|=0,i|=0,t|=0)},_crypto_onetimeauth_bytes:Vn,_crypto_onetimeauth_final:function(e,a){return 0|Vt(e|=0,a|=0)},_crypto_onetimeauth_init:function(e,a){return 0|Wt(e|=0,a|=0)},_crypto_onetimeauth_keybytes:Zn,_crypto_onetimeauth_keygen:kn,_crypto_onetimeauth_poly1305:ft,_crypto_onetimeauth_poly1305_bytes:Vn,_crypto_onetimeauth_poly1305_final:Vt,_crypto_onetimeauth_poly1305_init:Wt,_crypto_onetimeauth_poly1305_keybytes:Zn,_crypto_onetimeauth_poly1305_keygen:kn,_crypto_onetimeauth_poly1305_statebytes:Fn,_crypto_onetimeauth_poly1305_update:wt,_crypto_onetimeauth_poly1305_verify:ht,_crypto_onetimeauth_primitive:function(){return 34143},_crypto_onetimeauth_statebytes:Fn,_crypto_onetimeauth_update:function(e,a,r,i){return 0|wt(e|=0,a|=0,r|=0,i|=0)},_crypto_onetimeauth_verify:function(e,a,r,i,t){return 0|ht(e|=0,a|=0,r|=0,i|=0,t|=0)},_crypto_pwhash:function(e,a,r,i,t,n,o,s,c,u,d){switch(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,c|=0,u|=0,0|(d|=0)){case 1:e=0|sa(e,a,r,i,t,n,o,s,c,u,1);break;case 2:e=0|ca(e,a,r,i,t,n,o,s,c,u,2);break;default:l[8966]=22,e=-1}return 0|e},_crypto_pwhash_alg_argon2i13:Yn,_crypto_pwhash_alg_argon2id13:Jn,_crypto_pwhash_alg_default:Jn,_crypto_pwhash_argon2i:sa,_crypto_pwhash_argon2i_alg_argon2i13:Yn,_crypto_pwhash_argon2i_bytes_max:Tn,_crypto_pwhash_argon2i_bytes_min:Vn,_crypto_pwhash_argon2i_memlimit_interactive:_n,_crypto_pwhash_argon2i_memlimit_max:Dn,_crypto_pwhash_argon2i_memlimit_min:Hn,_crypto_pwhash_argon2i_memlimit_moderate:function(){return 134217728},_crypto_pwhash_argon2i_memlimit_sensitive:function(){return 536870912},_crypto_pwhash_argon2i_opslimit_interactive:Mn,_crypto_pwhash_argon2i_opslimit_max:Tn,_crypto_pwhash_argon2i_opslimit_min:qn,_crypto_pwhash_argon2i_opslimit_moderate:function(){return 6},_crypto_pwhash_argon2i_opslimit_sensitive:$n,_crypto_pwhash_argon2i_passwd_max:Tn,_crypto_pwhash_argon2i_passwd_min:eo,_crypto_pwhash_argon2i_saltbytes:Vn,_crypto_pwhash_argon2i_str:fa,_crypto_pwhash_argon2i_str_needs_rehash:St,_crypto_pwhash_argon2i_str_verify:pr,_crypto_pwhash_argon2i_strbytes:Ln,_crypto_pwhash_argon2i_strprefix:function(){return 34223},_crypto_pwhash_argon2id:ca,_crypto_pwhash_argon2id_alg_argon2id13:Jn,_crypto_pwhash_argon2id_bytes_max:Tn,_crypto_pwhash_argon2id_bytes_min:Vn,_crypto_pwhash_argon2id_memlimit_interactive:xn,_crypto_pwhash_argon2id_memlimit_max:Dn,_crypto_pwhash_argon2id_memlimit_min:Hn,_crypto_pwhash_argon2id_memlimit_moderate:zn,_crypto_pwhash_argon2id_memlimit_sensitive:Qn,_crypto_pwhash_argon2id_opslimit_interactive:Jn,_crypto_pwhash_argon2id_opslimit_max:Tn,_crypto_pwhash_argon2id_opslimit_min:Yn,_crypto_pwhash_argon2id_opslimit_moderate:qn,_crypto_pwhash_argon2id_opslimit_sensitive:Mn,_crypto_pwhash_argon2id_passwd_max:Tn,_crypto_pwhash_argon2id_passwd_min:eo,_crypto_pwhash_argon2id_saltbytes:Vn,_crypto_pwhash_argon2id_str:ka,_crypto_pwhash_argon2id_str_needs_rehash:Dt,_crypto_pwhash_argon2id_str_verify:Ar,_crypto_pwhash_argon2id_strbytes:Ln,_crypto_pwhash_argon2id_strprefix:Gn,_crypto_pwhash_bytes_max:Tn,_crypto_pwhash_bytes_min:Vn,_crypto_pwhash_memlimit_interactive:xn,_crypto_pwhash_memlimit_max:Dn,_crypto_pwhash_memlimit_min:Hn,_crypto_pwhash_memlimit_moderate:zn,_crypto_pwhash_memlimit_sensitive:Qn,_crypto_pwhash_opslimit_interactive:Jn,_crypto_pwhash_opslimit_max:Tn,_crypto_pwhash_opslimit_min:Yn,_crypto_pwhash_opslimit_moderate:qn,_crypto_pwhash_opslimit_sensitive:Mn,_crypto_pwhash_passwd_max:Tn,_crypto_pwhash_passwd_min:eo,_crypto_pwhash_primitive:function(){return 34233},_crypto_pwhash_saltbytes:Vn,_crypto_pwhash_scryptsalsa208sha256:function(e,a,r,i,t,n,o,s,c,u){var d,h;r|=0,i|=0,t|=0,n|=0,o|=0,s|=0,c|=0,u|=0,h=f,d=f=f+63&-64,f=f+16|0,la(0|(e|=0),0,0|(a|=0));do{if(!((n|r)>>>0>0|0==(n|r|0)&(t|a)>>>0>4294967295)){if(r>>>0<0|0==(0|r)&a>>>0<16){l[8966]=22,e=-1;break}Se(s,c,u,d+8|0,d+4|0,d),e=0|lr(i,t,o,32,c=0|Li(1,0,0|l[d+8>>2]),u=0|_(),0|l[d>>2],0|l[d+4>>2],e,a);break}l[8966]=27,e=-1}while(0);return f=h,0|e},_crypto_pwhash_scryptsalsa208sha256_bytes_max:Tn,_crypto_pwhash_scryptsalsa208sha256_bytes_min:Vn,_crypto_pwhash_scryptsalsa208sha256_ll:lr,_crypto_pwhash_scryptsalsa208sha256_memlimit_interactive:wn,_crypto_pwhash_scryptsalsa208sha256_memlimit_max:Tn,_crypto_pwhash_scryptsalsa208sha256_memlimit_min:wn,_crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive:Qn,_crypto_pwhash_scryptsalsa208sha256_opslimit_interactive:function(){return 524288},_crypto_pwhash_scryptsalsa208sha256_opslimit_max:Tn,_crypto_pwhash_scryptsalsa208sha256_opslimit_min:function(){return 32768},_crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive:_n,_crypto_pwhash_scryptsalsa208sha256_passwd_max:Tn,_crypto_pwhash_scryptsalsa208sha256_passwd_min:eo,_crypto_pwhash_scryptsalsa208sha256_saltbytes:Zn,_crypto_pwhash_scryptsalsa208sha256_str:function(e,a,r,i,n,o,s){a|=0,r|=0,i|=0,n|=0,o|=0,s|=0;var c,u,d=0,h=0;u=f,c=f=f+63&-64,f=f+128|0,h=102+(d=e|=0)|0;do{t[d>>0]=0,d=d+1|0}while((0|d)<(0|h));do{if(i>>>0>0|0==(0|i)&r>>>0>4294967295)l[8966]=27,e=-1;else{if(Se(n,o,s,c+104|0,c+100|0,c+96|0),xi(c+64|0,32),!(0|Qa(0|l[c+104>>2],0|l[c+96>>2],0|l[c+100>>2],c+64|0,c))){l[8966]=22,e=-1;break}vn(c+108|0),h=0==(0|Ze(c+108|0,a,r,c,e)),In(c+108|0),h?(l[8966]=22,e=-1):e=0}}while(0);return f=u,0|e},_crypto_pwhash_scryptsalsa208sha256_str_needs_rehash:function(e,a,r,i){var t,n;e|=0,n=f,t=f=f+63&-64,f=f+32|0,Se(a|=0,r|=0,i|=0,t+20|0,t+12|0,t+4|0);do{if(101==(0|at(e))){if(!(0|vr(e,t+16|0,t,t+8|0))){l[8966]=22,e=-1;break}e=(0|l[t+20>>2])==(0|l[t+16>>2])&&(0|l[t+4>>2])==(0|l[t>>2])?(0|l[t+12>>2])!=(0|l[t+8>>2])&1:1}else l[8966]=22,e=-1}while(0);return f=n,0|e},_crypto_pwhash_scryptsalsa208sha256_str_verify:function(e,a,r,i){a|=0,r|=0,i|=0;var t,n,s=0;if(n=f,t=f=f+63&-64,f=f+128|0,101==(0|at(e|=0))){vn(t+104|0),s=(i=t)+100|0;do{l[i>>2]=0,i=i+4|0}while((0|i)<(0|s));o[t+100>>1]=0,r=0==(0|Ze(t+104|0,a,r,e,t)),In(t+104|0),r?i=-1:(i=0|Pa(t,e,102),Hr(t,102))}else i=-1;return f=n,0|i},_crypto_pwhash_scryptsalsa208sha256_strbytes:function(){return 102},_crypto_pwhash_scryptsalsa208sha256_strprefix:function(){return 35254},_crypto_pwhash_str:function(e,a,r,i,t,n,o){return 0|ka(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0)},_crypto_pwhash_str_alg:function(e,a,r,i,t,n,o,s){e|=0,a|=0,r|=0,i|=0,t|=0,n|=0,o|=0;var l=0;switch(0|(s|=0)){case 1:l=0|fa(e,a,r,i,t,n,o);break;case 2:l=0|ka(e,a,r,i,t,n,o);break;default:ao()}return 0|l},_crypto_pwhash_str_needs_rehash:function(e,a,r,i){e|=0,a|=0,r|=0,i|=0;do{if(0|Xa(e,34212,10)){if(0|Xa(e,34223,9)){l[8966]=22,e=-1;break}e=0|St(e,a,r,i);break}e=0|Dt(e,a,r,i)}while(0);return 0|e},_crypto_pwhash_str_verify:function(e,a,r,i){e|=0,a|=0,r|=0,i|=0;do{if(0|Xa(e,34212,10)){if(0|Xa(e,34223,9)){l[8966]=22,e=-1;break}e=0|pr(e,a,r,i);break}e=0|Ar(e,a,r,i)}while(0);return 0|e},_crypto_pwhash_strbytes:Ln,_crypto_pwhash_strprefix:Gn,_crypto_scalarmult:an,_crypto_scalarmult_base:nn,_crypto_scalarmult_bytes:Zn,_crypto_scalarmult_curve25519:rr,_crypto_scalarmult_curve25519_base:Xt,_crypto_scalarmult_curve25519_bytes:Zn,_crypto_scalarmult_curve25519_scalarbytes:Zn,_crypto_scalarmult_ed25519:function(e,a,r){return 0|ma(e|=0,a|=0,r|=0,1)},_crypto_scalarmult_ed25519_base:function(e,a){return 0|Ya(e|=0,a|=0,1)},_crypto_scalarmult_ed25519_base_noclamp:function(e,a){return 0|Ya(e|=0,a|=0,0)},_crypto_scalarmult_ed25519_bytes:Zn,_crypto_scalarmult_ed25519_noclamp:function(e,a,r){return 0|ma(e|=0,a|=0,r|=0,0)},_crypto_scalarmult_ed25519_scalarbytes:Zn,_crypto_scalarmult_primitive:function(){return 34241},_crypto_scalarmult_scalarbytes:Zn,_crypto_secretbox:At,_crypto_secretbox_boxzerobytes:Vn,_crypto_secretbox_detached:ye,_crypto_secretbox_easy:function(e,a,r,i,t,n){return e|=0,a|=0,t|=0,n|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967279?(ao(),0):(ye(e+16|0,e,a,r,i,t,n),0)},_crypto_secretbox_keybytes:Zn,_crypto_secretbox_keygen:kn,_crypto_secretbox_macbytes:Vn,_crypto_secretbox_messagebytes_max:Nn,_crypto_secretbox_noncebytes:On,_crypto_secretbox_open:ot,_crypto_secretbox_open_detached:Ce,_crypto_secretbox_open_easy:function(e,a,r,i,t,n){return a|=0,t|=0,n|=0,0|((i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<16?-1:0|Ce(e|=0,a+16|0,a,i=0|yt(0|r,0|i,-16,-1),0|_(),t,n))},_crypto_secretbox_primitive:function(){return 34252},_crypto_secretbox_xchacha20poly1305_detached:fe,_crypto_secretbox_xchacha20poly1305_easy:function(e,a,r,i,t,n){return e|=0,a|=0,t|=0,n|=0,(i|=0)>>>0>0|0==(0|i)&(r|=0)>>>0>4294967279?(ao(),0):(fe(e+16|0,e,a,r,i,t,n),0)},_crypto_secretbox_xchacha20poly1305_keybytes:Zn,_crypto_secretbox_xchacha20poly1305_macbytes:Vn,_crypto_secretbox_xchacha20poly1305_messagebytes_max:Nn,_crypto_secretbox_xchacha20poly1305_noncebytes:On,_crypto_secretbox_xchacha20poly1305_open_detached:_e,_crypto_secretbox_xchacha20poly1305_open_easy:function(e,a,r,i,t,n){return a|=0,t|=0,n|=0,0|((i|=0)>>>0<0|0==(0|i)&(r|=0)>>>0<16?-1:0|_e(e|=0,a+16|0,a,i=0|yt(0|r,0|i,-16,-1),0|_(),t,n))},_crypto_secretbox_xsalsa20poly1305:ir,_crypto_secretbox_xsalsa20poly1305_boxzerobytes:Vn,_crypto_secretbox_xsalsa20poly1305_keybytes:Zn,_crypto_secretbox_xsalsa20poly1305_keygen:kn,_crypto_secretbox_xsalsa20poly1305_macbytes:Vn,_crypto_secretbox_xsalsa20poly1305_messagebytes_max:Nn,_crypto_secretbox_xsalsa20poly1305_noncebytes:On,_crypto_secretbox_xsalsa20poly1305_open:ja,_crypto_secretbox_xsalsa20poly1305_zerobytes:Zn,_crypto_secretbox_zerobytes:Zn,_crypto_secretstream_xchacha20poly1305_abytes:function(){return 17},_crypto_secretstream_xchacha20poly1305_headerbytes:On,_crypto_secretstream_xchacha20poly1305_init_pull:function(e,a,r){var i;return re(e|=0,a|=0,r|=0,0),gt(e),i=u[a+16>>0]|u[a+16+1>>0]<<8|u[a+16+2>>0]<<16|u[a+16+3>>0]<<24,r=u[a+16+4>>0]|u[a+16+4+1>>0]<<8|u[a+16+4+2>>0]<<16|u[a+16+4+3>>0]<<24,t[e+36>>0]=i,t[e+36+1>>0]=i>>8,t[e+36+2>>0]=i>>16,t[e+36+3>>0]=i>>24,t[e+36+4>>0]=r,t[e+36+4+1>>0]=r>>8,t[e+36+4+2>>0]=r>>16,t[e+36+4+3>>0]=r>>24,t[e+44>>0]=0,t[e+44+1>>0]=0,t[e+44+2>>0]=0,t[e+44+3>>0]=0,t[e+44+4>>0]=0,t[e+44+4+1>>0]=0,t[e+44+4+2>>0]=0,t[e+44+4+3>>0]=0,0},_crypto_secretstream_xchacha20poly1305_init_push:function(e,a,r){var i;return e|=0,r|=0,xi(a|=0,24),re(e,a,r,0),gt(e),i=u[a+16>>0]|u[a+16+1>>0]<<8|u[a+16+2>>0]<<16|u[a+16+3>>0]<<24,r=u[a+16+4>>0]|u[a+16+4+1>>0]<<8|u[a+16+4+2>>0]<<16|u[a+16+4+3>>0]<<24,t[e+36>>0]=i,t[e+36+1>>0]=i>>8,t[e+36+2>>0]=i>>16,t[e+36+3>>0]=i>>24,t[e+36+4>>0]=r,t[e+36+4+1>>0]=r>>8,t[e+36+4+2>>0]=r>>16,t[e+36+4+3>>0]=r>>24,t[e+44>>0]=0,t[e+44+1>>0]=0,t[e+44+2>>0]=0,t[e+44+3>>0]=0,t[e+44+4>>0]=0,t[e+44+4+1>>0]=0,t[e+44+4+2>>0]=0,t[e+44+4+3>>0]=0,0},_crypto_secretstream_xchacha20poly1305_keybytes:Zn,_crypto_secretstream_xchacha20poly1305_keygen:kn,_crypto_secretstream_xchacha20poly1305_messagebytes_max:function(){return-18},_crypto_secretstream_xchacha20poly1305_pull:function(e,a,r,i,n,o,s,c,u,d){e|=0,a|=0,i|=0,n|=0,o|=0,s|=0,c|=0,u|=0,d|=0;var h,A,g=0,p=0,m=0;A=f,h=f=f+63&-64,f=f+352|0,0|(r|=0)&&(l[r>>2]=0,l[r+4>>2]=0),0|i&&(t[i>>0]=-1);do{if(s>>>0<0|0==(0|s)&o>>>0<17)c=-1;else{p=0|yt(0|o,0|s,-17,-1),(m=0|_())>>>0>0|0==(0|m)&p>>>0>4294967278&&ao(),fi(h+16|0,64,0,e+32|0,e),Wt(h+80|0,h+16|0),Hr(h+16|0,64),wt(h+80|0,c,u,d),c=0|mt(0,0,0|u,0|d),_(),wt(h+80|0,35312,15&c,0),g=64+(c=h+16|0)|0;do{l[c>>2]=0,c=c+4|0}while((0|c)<(0|g));if(t[h+16>>0]=0|t[n>>0],Wa(h+16|0,h+16|0,64,0,e+32|0,1,e),c=0|t[h+16>>0],t[h+16>>0]=0|t[n>>0],wt(h+80|0,h+16|0,64,0),wt(h+80|0,n+1|0,p,m),g=0|yt(0|o,0|s,15,0),_(),wt(h+80|0,35312,15&g,0),ii(h+336|0,u,d),wt(h+80|0,h+336|0,8,0),ii(h+336|0,d=0|yt(0|o,0|s,47,0),0|_()),wt(h+80|0,h+336|0,8,0),Vt(h+80|0,h),Hr(h+80|0,256),0|Pa(h,n+1+p|0,16)){Hr(h,16),c=-1;break}Wa(a,n+1|0,p,m,e+32|0,2,e),Ji(e+36|0,h),Bi(e+32|0),(0!=(2&c)||0|Qr(e+32|0,4))&&Pe(e),0|r&&(l[r>>2]=p,l[r+4>>2]=m),0|i?(t[i>>0]=c,c=0):c=0}}while(0);return f=A,0|c},_crypto_secretstream_xchacha20poly1305_push:function(e,a,r,i,n,o,s,c,u,d){e|=0,a|=0,i|=0,n|=0,o|=0,s|=0,c|=0,u|=0,d|=0;var h,A,g=0;A=f,g=f=f+63&-64,f=f+336|0,0|(r|=0)&&(l[r>>2]=0,l[r+4>>2]=0),o>>>0>0|0==(0|o)&n>>>0>4294967278&&ao(),fi(g,64,0,e+32|0,e),Wt(g+64|0,g),Hr(g,64),wt(g+64|0,s,c,u),s=0|mt(0,0,0|c,0|u),_(),wt(g+64|0,35312,15&s,0),h=(s=g)+64|0;do{l[s>>2]=0,s=s+4|0}while((0|s)<(0|h));return t[g>>0]=d,Wa(g,g,64,0,e+32|0,1,e),wt(g+64|0,g,64,0),t[a>>0]=0|t[g>>0],Wa(a+1|0,i,n,o,e+32|0,2,e),wt(g+64|0,a+1|0,n,o),wt(g+64|0,35312,15&n,0),ii(g+320|0,c,u),wt(g+64|0,g+320|0,8,0),ii(g+320|0,u=0|yt(0|n,0|o,64,0),0|_()),wt(g+64|0,g+320|0,8,0),Vt(g+64|0,a+1+n|0),Hr(g+64|0,256),Ji(e+36|0,a+1+n|0),Bi(e+32|0),(0!=(2&d)||0|Qr(e+32|0,4))&&Pe(e),0|r&&(d=0|yt(0|n,0|o,17,0),g=0|_(),l[r>>2]=d,l[r+4>>2]=g),f=A,0},_crypto_secretstream_xchacha20poly1305_rekey:Pe,_crypto_secretstream_xchacha20poly1305_statebytes:function(){return 52},_crypto_secretstream_xchacha20poly1305_tag_final:qn,_crypto_secretstream_xchacha20poly1305_tag_message:eo,_crypto_secretstream_xchacha20poly1305_tag_push:Yn,_crypto_secretstream_xchacha20poly1305_tag_rekey:Jn,_crypto_shorthash:function(e,a,r,i,t){return P(e|=0,a|=0,r|=0,i|=0,t|=0),0},_crypto_shorthash_bytes:$n,_crypto_shorthash_keybytes:Vn,_crypto_shorthash_keygen:function(e){xi(e|=0,16)},_crypto_shorthash_primitive:function(){return 34269},_crypto_shorthash_siphash24:P,_crypto_shorthash_siphash24_bytes:$n,_crypto_shorthash_siphash24_keybytes:Vn,_crypto_shorthash_siphashx24:function(e,a,r,i,t){e|=0,a|=0,r|=0,i|=0;var n=0,o=0,s=0,l=0,c=0,d=0,h=0,A=0,g=0,p=0,m=0,f=0,y=0,b=0,k=0,w=0;if(h=0|gi(t|=0),g=0|_(),n=0|gi(t+8|0),o=0|_(),i=0|Li(0|r,0|i,56),t=0|_(),(a+r+(0-(7&r))|0)==(0|a))m=2037671283^n,l=1952801890^o,A=1886610805^h,c=1936682341^g,s=1852075907^n,f=1685025377^o,o=1852142177^h,n=1819895653^g;else for(y=a,m=2037671283^n,l=1952801890^o,A=1886610805^h,d=1936682341^g,c=1852075907^n,s=1685025377^o,o=1852142177^h,n=1819895653^g;;){if(w=(p=0|gi(y))^m,l^=b=0|_(),d=0|yt(0|A,0|d,0|c,0|s),f=0|_(),A=0|vi(c,s,13),c=(0|_())^f,f=0|vi(d,f,32),m=0|_(),h=0|yt(0|w,0|l,0|o,0|n),g=0|_(),m=0|yt((l=0|vi(w,l,16))^h|0,0|(s=(0|_())^g),0|f,0|m),f=0|_(),s=0|vi(l^h,s,21),l=f^(0|_()),g=0|yt(0|h,0|g,A^d|0,0|c),h=0|_(),c=0|vi(A^d,c,17),n=(0|_())^h,h=0|vi(g,h,32),o=0|_(),f=0|yt(c^g|0,0|n,0|m,0|f),d=0|_(),n=0|vi(c^g,n,13),g=(0|_())^d,d=0|vi(f,d,32),c=0|_(),o=0|yt(0|h,0|o,m^s|0,0|l),h=0|_(),c=0|yt((l=0|vi(m^s,l,16))^o|0,0|(s=(0|_())^h),0|d,0|c),d=0|_(),s=0|vi(l^o,s,21),l=d^(0|_()),h=0|yt(n^f|0,0|g,0|o,0|h),o=0|_(),g=0|vi(n^f,g,17),f=(0|_())^o,o=0|vi(h,o,32),n=0|_(),(0|(y=y+8|0))==(a+r+(0-(7&r))|0)){a=a+r+(0-(7&r))|0,m=c^s,A=c^p,c=d^b,s=g^h;break}m=c^s,A=c^p,d^=b,c=g^h,s=f}switch(7&r){case 7:i=0|Li(0|u[a+6>>0],0,48)|i,t=0|_()|t,k=6;break;case 6:k=6;break;case 5:k=7;break;case 4:k=8;break;case 3:k=9;break;case 2:k=10;break;case 1:k=11}return 6==(0|k)&&(w=0|Li(0|u[a+5>>0],0,40),t=0|_()|t,i|=w,k=7),7==(0|k)&&(t=0|u[a+4>>0]|t,k=8),8==(0|k)&&(i|=w=0|Li(0|u[a+3>>0],0,24),t=0|_()|t,k=9),9==(0|k)&&(i|=w=0|Li(0|u[a+2>>0],0,16),t=0|_()|t,k=10),10==(0|k)&&(i|=w=0|Li(0|u[a+1>>0],0,8),t=0|_()|t,k=11),11==(0|k)&&(i=0|i|u[a>>0]),b=i^m,r=t^l,a=0|yt(0|A,0|c,0|s,0|f),w=0|_(),k=0|vi(s,f,13),g=(0|_())^w,w=0|vi(a,w,32),m=0|_(),y=0|yt(0|b,0|r,0|o,0|n),p=0|_(),m=0|yt((f=0|vi(b,r,16))^y|0,0|(r=(0|_())^p),0|w,0|m),w=0|_(),r=0|vi(f^y,r,21),f=w^(0|_()),p=0|yt(0|y,0|p,k^a|0,0|g),y=0|_(),g=0|vi(k^a,g,17),a=(0|_())^y,y=0|vi(p,y,32),k=0|_(),w=0|yt(g^p|0,0|a,0|m,0|w),b=0|_(),a=0|vi(g^p,a,13),p=(0|_())^b,b=0|vi(w,b,32),g=0|_(),k=0|yt(0|y,0|k,m^r|0,0|f),y=0|_(),g=0|yt((f=0|vi(m^r,f,16))^k|0,0|(r=(0|_())^y),0|b,0|g),b=0|_(),r=0|vi(f^k,r,21),f=b^(0|_()),y=0|yt(a^w|0,0|p,0|k,0|y),k=0|_(),p=0|vi(a^w,p,17),w=(0|_())^k,k=0|vi(y,k,32),a=0|_(),b=0|yt(g^i|0,b^t|0,p^y|0,0|w),m=0|_(),w=0|vi(p^y,w,13),y=(0|_())^m,m=0|vi(b,m,32),p=0|_(),a=0|yt(238^k|0,0|a,g^r|0,0|f),k=0|_(),p=0|yt((f=0|vi(g^r,f,16))^a|0,0|(r=(0|_())^k),0|m,0|p),m=0|_(),r=0|vi(f^a,r,21),f=m^(0|_()),k=0|yt(0|a,0|k,w^b|0,0|y),a=0|_(),y=0|vi(w^b,y,17),b=(0|_())^a,a=0|vi(k,a,32),w=0|_(),m=0|yt(y^k|0,0|b,0|p,0|m),g=0|_(),b=0|vi(y^k,b,13),k=(0|_())^g,g=0|vi(m,g,32),y=0|_(),w=0|yt(0|a,0|w,p^r|0,0|f),a=0|_(),y=0|yt((f=0|vi(p^r,f,16))^w|0,0|(r=(0|_())^a),0|g,0|y),g=0|_(),r=0|vi(f^w,r,21),f=g^(0|_()),a=0|yt(b^m|0,0|k,0|w,0|a),w=0|_(),k=0|vi(b^m,k,17),m=(0|_())^w,w=0|vi(a,w,32),b=0|_(),g=0|yt(k^a|0,0|m,0|y,0|g),p=0|_(),m=0|vi(k^a,m,13),a=(0|_())^p,p=0|vi(g,p,32),k=0|_(),b=0|yt(0|w,0|b,y^r|0,0|f),w=0|_(),k=0|yt((f=0|vi(y^r,f,16))^b|0,0|(r=(0|_())^w),0|p,0|k),p=0|_(),r=0|vi(f^b,r,21),f=p^(0|_()),w=0|yt(m^g|0,0|a,0|b,0|w),b=0|_(),a=0|vi(m^g,a,17),g=(0|_())^b,b=0|vi(w,b,32),m=0|_(),p=0|yt(a^w|0,0|g,0|k,0|p),y=0|_(),g=0|vi(a^w,g,13),w=(0|_())^y,y=0|vi(p,y,32),a=0|_(),m=0|yt(0|b,0|m,k^r|0,0|f),b=0|_(),a=0|yt((f=0|vi(k^r,f,16))^m|0,0|(r=(0|_())^b),0|y,0|a),y=0|_(),r=0|vi(f^m,r,21),f=y^(0|_()),b=0|yt(g^p|0,0|w,0|m,0|b),m=0|_(),w=0|vi(g^p,w,17),p=(0|_())^m,ii(e,w^b^a^(m=0|vi(b,m,32))^a^r,p^y^(g=0|_())^f),y=0|yt(w^b^221|0,0|p,0|a,0|y),k=0|_(),p=0|vi(w^b^221,p,13),b=(0|_())^k,k=0|vi(y,k,32),w=0|_(),g=0|yt(0|m,0|g,a^r|0,0|f),m=0|_(),w=0|yt((f=0|vi(a^r,f,16))^g|0,0|(r=(0|_())^m),0|k,0|w),k=0|_(),r=0|vi(f^g,r,21),f=k^(0|_()),m=0|yt(p^y|0,0|b,0|g,0|m),g=0|_(),b=0|vi(p^y,b,17),y=(0|_())^g,g=0|vi(m,g,32),p=0|_(),k=0|yt(b^m|0,0|y,0|w,0|k),a=0|_(),y=0|vi(b^m,y,13),m=(0|_())^a,a=0|vi(k,a,32),b=0|_(),p=0|yt(0|g,0|p,w^r|0,0|f),g=0|_(),b=0|yt((f=0|vi(w^r,f,16))^p|0,0|(r=(0|_())^g),0|a,0|b),a=0|_(),r=0|vi(f^p,r,21),f=a^(0|_()),g=0|yt(y^k|0,0|m,0|p,0|g),p=0|_(),m=0|vi(y^k,m,17),k=(0|_())^p,p=0|vi(g,p,32),y=0|_(),a=0|yt(m^g|0,0|k,0|b,0|a),w=0|_(),k=0|vi(m^g,k,13),g=(0|_())^w,w=0|vi(a,w,32),m=0|_(),y=0|yt(0|p,0|y,b^r|0,0|f),p=0|_(),m=0|yt((f=0|vi(b^r,f,16))^y|0,0|(r=(0|_())^p),0|w,0|m),w=0|_(),r=0|vi(f^y,r,21),f=w^(0|_()),p=0|yt(k^a|0,0|g,0|y,0|p),y=0|_(),g=0|vi(k^a,g,17),a=(0|_())^y,y=0|vi(p,y,32),k=0|_(),w=0|yt(g^p|0,0|a,0|m,0|w),b=0|_(),a=0|vi(g^p,a,13),b=(0|_())^b,k=0|yt(0|y,0|k,m^r|0,0|f),y=0|_(),f=0|vi((f=0|vi(m^r,f,16))^k,(0|_())^y,21),r=0|_(),y=0|yt(a^w|0,0|b,0|k,0|y),k=0|_(),b=0|vi(a^w,b,17),w=0|_(),ii(e+8|0,f^y^b^(a=0|vi(y,k,32)),r^k^w^(0|_())),0},_crypto_shorthash_siphashx24_bytes:Vn,_crypto_shorthash_siphashx24_keybytes:Vn,_crypto_sign:function(e,a,r,i,t,n){return 0|Ea(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0)},_crypto_sign_bytes:Wn,_crypto_sign_detached:function(e,a,r,i,t,n){return nt(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0),0},_crypto_sign_ed25519:Ea,_crypto_sign_ed25519_bytes:Wn,_crypto_sign_ed25519_detached:nt,_crypto_sign_ed25519_keypair:hi,_crypto_sign_ed25519_messagebytes_max:Rn,_crypto_sign_ed25519_open:ha,_crypto_sign_ed25519_pk_to_curve25519:function(e,a){var r,i;return e|=0,i=f,r=f=f+63&-64,f=f+256|0,0==(0|ta(a|=0))&&0==(0|Ye(r+88|0,a))&&0!=(0|Fi(r+88|0))?(pt(r),aa(r,r,r+88+40|0),pt(r+48|0),ra(r+48|0,r+48|0,r+88+40|0),me(r,r),R(r+48|0,r+48|0,r),Qe(e,r+48|0),e=0):e=-1,f=i,0|e},_crypto_sign_ed25519_publickeybytes:Zn,_crypto_sign_ed25519_secretkeybytes:Wn,_crypto_sign_ed25519_seed_keypair:ur,_crypto_sign_ed25519_seedbytes:Zn,_crypto_sign_ed25519_sk_to_curve25519:function(e,a){var r,i,n;e|=0,i=f,n=f=f+63&-64,f=f+64|0,Jr(n,a|=0,32,0),t[n>>0]=-8&t[n>>0],t[n+31>>0]=63&t[n+31>>0]|64,a=n,r=e+32|0;do{t[e>>0]=0|t[a>>0],e=e+1|0,a=a+1|0}while((0|e)<(0|r));return Hr(n,64),f=i,0},_crypto_sign_ed25519_sk_to_pk:function(e,a){return Rr(0|(e|=0),32+(a|=0)|0,32),0},_crypto_sign_ed25519_sk_to_seed:function(e,a){return Rr(0|(e|=0),0|(a|=0),32),0},_crypto_sign_ed25519_verify_detached:dt,_crypto_sign_ed25519ph_final_create:Vr,_crypto_sign_ed25519ph_final_verify:Wr,_crypto_sign_ed25519ph_init:pn,_crypto_sign_ed25519ph_statebytes:Pn,_crypto_sign_ed25519ph_update:zt,_crypto_sign_final_create:function(e,a,r,i){return Vr(e|=0,a|=0,r|=0,i|=0),0},_crypto_sign_final_verify:function(e,a,r){return 0|Wr(e|=0,a|=0,r|=0)},_crypto_sign_init:function(e){return pn(e|=0),0},_crypto_sign_keypair:function(e,a){return hi(e|=0,a|=0),0},_crypto_sign_messagebytes_max:Rn,_crypto_sign_open:function(e,a,r,i,t,n){return 0|ha(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0)},_crypto_sign_primitive:function(){return 34279},_crypto_sign_publickeybytes:Zn,_crypto_sign_secretkeybytes:Wn,_crypto_sign_seed_keypair:function(e,a,r){return ur(e|=0,a|=0,r|=0),0},_crypto_sign_seedbytes:Zn,_crypto_sign_statebytes:Pn,_crypto_sign_update:qt,_crypto_sign_verify_detached:function(e,a,r,i,t){return 0|dt(e|=0,a|=0,r|=0,i|=0,t|=0)},_crypto_stream:function(e,a,r,i,t){return 0|Dr(e|=0,a|=0,r|=0,i|=0,t|=0)},_crypto_stream_chacha20:zi,_crypto_stream_chacha20_ietf:fi,_crypto_stream_chacha20_ietf_keybytes:Zn,_crypto_stream_chacha20_ietf_keygen:kn,_crypto_stream_chacha20_ietf_messagebytes_max:Tn,_crypto_stream_chacha20_ietf_noncebytes:jn,_crypto_stream_chacha20_ietf_xor:si,_crypto_stream_chacha20_ietf_xor_ic:Wa,_crypto_stream_chacha20_keybytes:Zn,_crypto_stream_chacha20_keygen:kn,_crypto_stream_chacha20_messagebytes_max:Tn,_crypto_stream_chacha20_noncebytes:$n,_crypto_stream_chacha20_xor:di,_crypto_stream_chacha20_xor_ic:Lr,_crypto_stream_keybytes:Zn,_crypto_stream_keygen:kn,_crypto_stream_messagebytes_max:Tn,_crypto_stream_noncebytes:On,_crypto_stream_primitive:function(){return 34287},_crypto_stream_salsa20:jt,_crypto_stream_salsa2012:function(e,a,r,i,n){e|=0,i|=0,n|=0;var o,s,c=0,d=0,h=0,A=0,g=0;if(o=f,s=f=f+63&-64,f=f+112|0,!(0==(0|(a|=0))&0==(0|(r|=0)))){c=(d=s)+32|0;do{t[d>>0]=0|t[n>>0],d=d+1|0,n=n+1|0}while((0|d)<(0|c));if(d=u[i+4>>0]|u[i+4+1>>0]<<8|u[i+4+2>>0]<<16|u[i+4+3>>0]<<24,l[s+96>>2]=u[i>>0]|u[i+1>>0]<<8|u[i+2>>0]<<16|u[i+3>>0]<<24,l[s+96+4>>2]=d,l[s+96+8>>2]=0,l[s+96+8+4>>2]=0,r>>>0>0|0==(0|r)&a>>>0>63){do{for(Nt(e,s+96|0,s,0),n=1,c=8;n=n+(0|u[(d=s+96+c|0)>>0])|0,t[d>>0]=n,16!=(0|(c=c+1|0));)n>>>=8;a=0|yt(0|a,0|r,-64,-1),r=0|_(),e=e+64|0}while(r>>>0>0|0==(0|r)&a>>>0>63);0==(0|a)&0==(0|r)||(A=e,g=a,h=8)}else A=e,g=a,h=8;if(8==(0|h)&&(Nt(s+32|0,s+96|0,s,0),0|g)){n=0;do{t[A+n>>0]=0|t[s+32+n>>0],n=n+1|0}while((0|n)!=(0|g))}Hr(s+32|0,64),Hr(s,32)}return f=o,0},_crypto_stream_salsa2012_keybytes:Zn,_crypto_stream_salsa2012_keygen:kn,_crypto_stream_salsa2012_messagebytes_max:Tn,_crypto_stream_salsa2012_noncebytes:$n,_crypto_stream_salsa2012_xor:function(e,a,r,i,n,o){e|=0,a|=0,n|=0,o|=0;var s,c,d=0,h=0,A=0,g=0,p=0,m=0;if(s=f,c=f=f+63&-64,f=f+112|0,!(0==(0|(r|=0))&0==(0|(i|=0)))){d=(h=c)+32|0;do{t[h>>0]=0|t[o>>0],h=h+1|0,o=o+1|0}while((0|h)<(0|d));if(h=u[n+4>>0]|u[n+4+1>>0]<<8|u[n+4+2>>0]<<16|u[n+4+3>>0]<<24,l[c+96>>2]=u[n>>0]|u[n+1>>0]<<8|u[n+2>>0]<<16|u[n+3>>0]<<24,l[c+96+4>>2]=h,l[c+96+8>>2]=0,l[c+96+8+4>>2]=0,i>>>0>0|0==(0|i)&r>>>0>63){h=a,n=r;do{Nt(c+32|0,c+96|0,c,0),o=0;do{t[e+o>>0]=t[c+32+o>>0]^t[h+o>>0],o=o+1|0}while(64!=(0|o));for(o=1,d=8;o=o+(0|u[(r=c+96+d|0)>>0])|0,t[r>>0]=o,16!=(0|(d=d+1|0));)o>>>=8;n=0|yt(0|n,0|i,-64,-1),i=0|_(),e=e+64|0,h=h+64|0}while(i>>>0>0|0==(0|i)&n>>>0>63);0==(0|n)&0==(0|i)||(g=e,p=n,m=h,A=10)}else g=e,p=r,m=a,A=10;if(10==(0|A)&&(Nt(c+32|0,c+96|0,c,0),0|p)){o=0;do{t[g+o>>0]=t[c+32+o>>0]^t[m+o>>0],o=o+1|0}while((0|o)!=(0|p))}Hr(c+32|0,64),Hr(c,32)}return f=s,0},_crypto_stream_salsa208:function(e,a,r,i,n){e|=0,i|=0,n|=0;var o,s,c=0,d=0,h=0,A=0,g=0;if(o=f,s=f=f+63&-64,f=f+112|0,!(0==(0|(a|=0))&0==(0|(r|=0)))){c=(d=s)+32|0;do{t[d>>0]=0|t[n>>0],d=d+1|0,n=n+1|0}while((0|d)<(0|c));if(d=u[i+4>>0]|u[i+4+1>>0]<<8|u[i+4+2>>0]<<16|u[i+4+3>>0]<<24,l[s+96>>2]=u[i>>0]|u[i+1>>0]<<8|u[i+2>>0]<<16|u[i+3>>0]<<24,l[s+96+4>>2]=d,l[s+96+8>>2]=0,l[s+96+8+4>>2]=0,r>>>0>0|0==(0|r)&a>>>0>63){do{for(Gt(e,s+96|0,s,0),n=1,c=8;n=n+(0|u[(d=s+96+c|0)>>0])|0,t[d>>0]=n,16!=(0|(c=c+1|0));)n>>>=8;a=0|yt(0|a,0|r,-64,-1),r=0|_(),e=e+64|0}while(r>>>0>0|0==(0|r)&a>>>0>63);0==(0|a)&0==(0|r)||(A=e,g=a,h=8)}else A=e,g=a,h=8;if(8==(0|h)&&(Gt(s+32|0,s+96|0,s,0),0|g)){n=0;do{t[A+n>>0]=0|t[s+32+n>>0],n=n+1|0}while((0|n)!=(0|g))}Hr(s+32|0,64),Hr(s,32)}return f=o,0},_crypto_stream_salsa208_keybytes:Zn,_crypto_stream_salsa208_keygen:kn,_crypto_stream_salsa208_messagebytes_max:Tn,_crypto_stream_salsa208_noncebytes:$n,_crypto_stream_salsa208_xor:function(e,a,r,i,n,o){e|=0,a|=0,n|=0,o|=0;var s,c,d=0,h=0,A=0,g=0,p=0,m=0;if(s=f,c=f=f+63&-64,f=f+112|0,!(0==(0|(r|=0))&0==(0|(i|=0)))){d=(h=c)+32|0;do{t[h>>0]=0|t[o>>0],h=h+1|0,o=o+1|0}while((0|h)<(0|d));if(h=u[n+4>>0]|u[n+4+1>>0]<<8|u[n+4+2>>0]<<16|u[n+4+3>>0]<<24,l[c+96>>2]=u[n>>0]|u[n+1>>0]<<8|u[n+2>>0]<<16|u[n+3>>0]<<24,l[c+96+4>>2]=h,l[c+96+8>>2]=0,l[c+96+8+4>>2]=0,i>>>0>0|0==(0|i)&r>>>0>63){h=a,n=r;do{Gt(c+32|0,c+96|0,c,0),o=0;do{t[e+o>>0]=t[c+32+o>>0]^t[h+o>>0],o=o+1|0}while(64!=(0|o));for(o=1,d=8;o=o+(0|u[(r=c+96+d|0)>>0])|0,t[r>>0]=o,16!=(0|(d=d+1|0));)o>>>=8;n=0|yt(0|n,0|i,-64,-1),i=0|_(),e=e+64|0,h=h+64|0}while(i>>>0>0|0==(0|i)&n>>>0>63);0==(0|n)&0==(0|i)||(g=e,p=n,m=h,A=10)}else g=e,p=r,m=a,A=10;if(10==(0|A)&&(Gt(c+32|0,c+96|0,c,0),0|p)){o=0;do{t[g+o>>0]=t[c+32+o>>0]^t[m+o>>0],o=o+1|0}while((0|o)!=(0|p))}Hr(c+32|0,64),Hr(c,32)}return f=s,0},_crypto_stream_salsa20_keybytes:Zn,_crypto_stream_salsa20_keygen:kn,_crypto_stream_salsa20_messagebytes_max:Tn,_crypto_stream_salsa20_noncebytes:$n,_crypto_stream_salsa20_xor:ut,_crypto_stream_salsa20_xor_ic:Ui,_crypto_stream_xchacha20:function(e,a,r,i,t){var n,o;return e|=0,a|=0,r|=0,n=f,o=f=f+63&-64,f=f+32|0,re(o,i|=0,t|=0,0),t=0|zi(e,a,r,i+16|0,o),f=n,0|t},_crypto_stream_xchacha20_keybytes:Zn,_crypto_stream_xchacha20_keygen:kn,_crypto_stream_xchacha20_messagebytes_max:Tn,_crypto_stream_xchacha20_noncebytes:On,_crypto_stream_xchacha20_xor:function(e,a,r,i,t,n){return 0|fr(e|=0,a|=0,r|=0,i|=0,t|=0,0,0,n|=0)},_crypto_stream_xchacha20_xor_ic:fr,_crypto_stream_xor:function(e,a,r,i,t,n){return 0|tt(e|=0,a|=0,r|=0,i|=0,t|=0,n|=0)},_crypto_stream_xsalsa20:Dr,_crypto_stream_xsalsa20_keybytes:Zn,_crypto_stream_xsalsa20_keygen:kn,_crypto_stream_xsalsa20_messagebytes_max:Tn,_crypto_stream_xsalsa20_noncebytes:On,_crypto_stream_xsalsa20_xor:tt,_crypto_stream_xsalsa20_xor_ic:hr,_crypto_verify_16:An,_crypto_verify_16_bytes:Vn,_crypto_verify_32:hn,_crypto_verify_32_bytes:Zn,_crypto_verify_64:dn,_crypto_verify_64_bytes:Wn,_emscripten_replace_memory:function(e){return!(16777215&p(e)||p(e)<=16777215||p(e)>2147483648||(t=new i(e),o=new n(e),l=new s(e),u=new c(e),new d(e),new h(e),new A(e),new g(e),r=e,0))},_free:L,_i64Add:yt,_i64Subtract:mt,_malloc:F,_memcpy:Ee,_memmove:Rr,_memset:la,_randombytes:function(e,a,r){(r|=0)>>>0<1|1==(0|r)&(a|=0)>>>0<0?xi(e|=0,a):C(35071,35091,204,35117)},_randombytes_buf:xi,_randombytes_buf_deterministic:function(e,a,r){fi(e|=0,a|=0,0,35059,r|=0)},_randombytes_close:eo,_randombytes_implementation_name:function(){return 34296},_randombytes_random:Cn,_randombytes_seedbytes:Zn,_randombytes_stir:Bn,_randombytes_uniform:function(e){var a=0;if((e|=0)>>>0<2)e=0;else{do{a=0|Cn()}while(a>>>0<(((0-e|0)>>>0)%(e>>>0)|0)>>>0);e=(a>>>0)%(e>>>0)|0}return 0|e},_sbrk:Ir,_sodium_base642bin:ne,_sodium_base64_encoded_len:function(e,a){var r;return e|=0,tn(a|=0),(((e>>>0)/3|0)<<2|1)+(4-(3-(r=(0|b((e>>>0)/3|0,-3))+e|0)&0-(a>>>1&1))&0-(1&(r>>>1|r)))|0},_sodium_bin2base64:Ae,_sodium_bin2hex:function(e,a,r,i){e|=0,r|=0;var n=0,o=0;if((i|=0)>>>0<2147483647&i<<1>>>0<(a|=0)>>>0||ao(),i){a=0;do{o=0|u[r+a>>0],t[e+(n=a<<1)>>0]=87+(o>>>4)+((65526+(o>>>4)|0)>>>8&217),t[e+(1|n)>>0]=(22272+((15&o)<<8)+(65526+(15&o)&55552)|0)>>>8,a=a+1|0}while((0|a)!=(0|i));a=i<<1}else a=0;return t[e+a>>0]=0,0|e},_sodium_hex2bin:function(e,a,r,i,n,o,s){e|=0,a|=0,r|=0,i|=0,n|=0,o|=0,s|=0;var c=0,d=0,h=0,A=0,g=0,p=0,m=0;e:do{if(i){d=0,h=0,c=0,p=0;a:for(;;){for(;!(255&((g=(65526+(201+(223&(A=0|u[r+c>>0]))&255)^65520+(201+(223&A)&255))>>>8)|(65526+(48^A)|0)>>>8)|0);){if(!(0!=(0|n)&d<<24>>24==0)){A=0;break a}if(!(0|Ht(n,A))){m=17;break e}if(!((c=c+1|0)>>>0>>0)){m=17;break e}d=0}if(A=g&201+(223&A)|(65526+(48^A)|0)>>>8&(48^A),h>>>0>=a>>>0){m=9;break}if(d<<24>>24?(t[e+h>>0]=A|255&p,h=h+1|0,A=p):A=A<<4&255,d=~d,!((c=c+1|0)>>>0>>0)){A=0;break}p=A}if(9==(0|m)&&(l[8966]=34,A=-1),d<<24>>24){l[8966]=22,d=c+-1|0,c=-1,h=0;break}if(A){d=c,c=-1,h=0;break}m=17;break}h=0,c=0,m=17}while(0);return 17==(0|m)&&(d=c,c=0),s?l[s>>2]=r+d:(0|d)!=(0|i)&&(l[8966]=22,c=-1),0|o&&(l[o>>2]=h),0|c},_sodium_init:function(){var e=0;return 0|l[8840]?e=1:(function(){return e=f,a=f=f+63&-64,f=f+16|0,Ot(a),0|l[a>>2]&&Ot(a),void(f=e);var e,a}(),Bn(),function(){var e=0;(0|(e=0|z(30)))>0?l[8841]=e:e=0|l[8841],e>>>0<16?ao():xi(35328,16)}(),l[8840]=1,e=0),0|e},_sodium_library_minimal:eo,_sodium_library_version_major:function(){return 10},_sodium_library_version_minor:Jn,_sodium_pad:function(e,a,r,i,n){e|=0,a|=0,r|=0,n|=0;var o,s,c=0,d=0;if(s=f,o=f=f+63&-64,f=f+16|0,i|=0)if((d=i+-1-(c=i+-1&i?(r>>>0)%(i>>>0)|0:i+-1&r)|0)>>>0>=~r>>>0&&ao(),(d+r|0)>>>0>>0){0|e&&(l[e>>2]=d+r+1),t[o>>0]=0,c=0;do{n=((c^d)-1|0)>>>24,t[(e=a+(d+r)+(0-c)|0)>>0]=128&n|t[o>>0]&t[e>>0]&255,t[o>>0]=0|n|u[o>>0],c=c+1|0}while((0|c)!=(0|i));c=0}else c=-1;else c=-1;return f=s,0|c},_sodium_unpad:function(e,a,r,i){e|=0,a|=0,r|=0,i|=0;var t,n,o=0,s=0,c=0,d=0,h=0;if(n=f,t=f=f+63&-64,f=f+16|0,l[t>>2]=0,(i+-1|0)>>>0>>0){for(c=0,d=0,o=0;o&=255,s=0|u[a+(r+-1)+(0-c)>>0],h=(511+(0|l[t>>2])&o+511&511+(128^s))>>>8&1,l[t>>2]=c&0-h|l[t>>2],d=h|255&d,(0|(c=c+1|0))!=(0|i);)o|=s;l[e>>2]=r+-1-(0|l[t>>2]),o=d+-1|0}else o=-1;return f=n,0|o},_sodium_version_string:function(){return 35182},establishStackSpace:function(e,a){f=e|=0},setThrew:function(e,a){y||(y=e|=0)},stackAlloc:function(e){var a;return a=f,f=15+(f=f+(e|=0)|0)&-16,0|a},stackRestore:function(e){f=e|=0},stackSave:function(){return 0|f}}}(a.asmGlobalArg,a.asmLibraryArg,_),Ae=(a.___errno_location=he.___errno_location,a.___muldi3=he.___muldi3,a.___udivdi3=he.___udivdi3,a.___uremdi3=he.___uremdi3,a._bitshift64Ashr=he._bitshift64Ashr,a._bitshift64Lshr=he._bitshift64Lshr,a._bitshift64Shl=he._bitshift64Shl,a._crypto_aead_chacha20poly1305_abytes=he._crypto_aead_chacha20poly1305_abytes,a._crypto_aead_chacha20poly1305_decrypt=he._crypto_aead_chacha20poly1305_decrypt,a._crypto_aead_chacha20poly1305_decrypt_detached=he._crypto_aead_chacha20poly1305_decrypt_detached,a._crypto_aead_chacha20poly1305_encrypt=he._crypto_aead_chacha20poly1305_encrypt,a._crypto_aead_chacha20poly1305_encrypt_detached=he._crypto_aead_chacha20poly1305_encrypt_detached,a._crypto_aead_chacha20poly1305_ietf_abytes=he._crypto_aead_chacha20poly1305_ietf_abytes,a._crypto_aead_chacha20poly1305_ietf_decrypt=he._crypto_aead_chacha20poly1305_ietf_decrypt,a._crypto_aead_chacha20poly1305_ietf_decrypt_detached=he._crypto_aead_chacha20poly1305_ietf_decrypt_detached,a._crypto_aead_chacha20poly1305_ietf_encrypt=he._crypto_aead_chacha20poly1305_ietf_encrypt,a._crypto_aead_chacha20poly1305_ietf_encrypt_detached=he._crypto_aead_chacha20poly1305_ietf_encrypt_detached,a._crypto_aead_chacha20poly1305_ietf_keybytes=he._crypto_aead_chacha20poly1305_ietf_keybytes,a._crypto_aead_chacha20poly1305_ietf_keygen=he._crypto_aead_chacha20poly1305_ietf_keygen,a._crypto_aead_chacha20poly1305_ietf_messagebytes_max=he._crypto_aead_chacha20poly1305_ietf_messagebytes_max,a._crypto_aead_chacha20poly1305_ietf_npubbytes=he._crypto_aead_chacha20poly1305_ietf_npubbytes,a._crypto_aead_chacha20poly1305_ietf_nsecbytes=he._crypto_aead_chacha20poly1305_ietf_nsecbytes,a._crypto_aead_chacha20poly1305_keybytes=he._crypto_aead_chacha20poly1305_keybytes,a._crypto_aead_chacha20poly1305_keygen=he._crypto_aead_chacha20poly1305_keygen,a._crypto_aead_chacha20poly1305_messagebytes_max=he._crypto_aead_chacha20poly1305_messagebytes_max,a._crypto_aead_chacha20poly1305_npubbytes=he._crypto_aead_chacha20poly1305_npubbytes,a._crypto_aead_chacha20poly1305_nsecbytes=he._crypto_aead_chacha20poly1305_nsecbytes,a._crypto_aead_xchacha20poly1305_ietf_abytes=he._crypto_aead_xchacha20poly1305_ietf_abytes,a._crypto_aead_xchacha20poly1305_ietf_decrypt=he._crypto_aead_xchacha20poly1305_ietf_decrypt,a._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=he._crypto_aead_xchacha20poly1305_ietf_decrypt_detached,a._crypto_aead_xchacha20poly1305_ietf_encrypt=he._crypto_aead_xchacha20poly1305_ietf_encrypt,a._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=he._crypto_aead_xchacha20poly1305_ietf_encrypt_detached,a._crypto_aead_xchacha20poly1305_ietf_keybytes=he._crypto_aead_xchacha20poly1305_ietf_keybytes,a._crypto_aead_xchacha20poly1305_ietf_keygen=he._crypto_aead_xchacha20poly1305_ietf_keygen,a._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=he._crypto_aead_xchacha20poly1305_ietf_messagebytes_max,a._crypto_aead_xchacha20poly1305_ietf_npubbytes=he._crypto_aead_xchacha20poly1305_ietf_npubbytes,a._crypto_aead_xchacha20poly1305_ietf_nsecbytes=he._crypto_aead_xchacha20poly1305_ietf_nsecbytes,a._crypto_auth=he._crypto_auth,a._crypto_auth_bytes=he._crypto_auth_bytes,a._crypto_auth_hmacsha256=he._crypto_auth_hmacsha256,a._crypto_auth_hmacsha256_bytes=he._crypto_auth_hmacsha256_bytes,a._crypto_auth_hmacsha256_final=he._crypto_auth_hmacsha256_final,a._crypto_auth_hmacsha256_init=he._crypto_auth_hmacsha256_init,a._crypto_auth_hmacsha256_keybytes=he._crypto_auth_hmacsha256_keybytes,a._crypto_auth_hmacsha256_keygen=he._crypto_auth_hmacsha256_keygen,a._crypto_auth_hmacsha256_statebytes=he._crypto_auth_hmacsha256_statebytes,a._crypto_auth_hmacsha256_update=he._crypto_auth_hmacsha256_update,a._crypto_auth_hmacsha256_verify=he._crypto_auth_hmacsha256_verify,a._crypto_auth_hmacsha512=he._crypto_auth_hmacsha512,a._crypto_auth_hmacsha512256=he._crypto_auth_hmacsha512256,a._crypto_auth_hmacsha512256_bytes=he._crypto_auth_hmacsha512256_bytes,a._crypto_auth_hmacsha512256_final=he._crypto_auth_hmacsha512256_final,a._crypto_auth_hmacsha512256_init=he._crypto_auth_hmacsha512256_init,a._crypto_auth_hmacsha512256_keybytes=he._crypto_auth_hmacsha512256_keybytes,a._crypto_auth_hmacsha512256_keygen=he._crypto_auth_hmacsha512256_keygen,a._crypto_auth_hmacsha512256_statebytes=he._crypto_auth_hmacsha512256_statebytes,a._crypto_auth_hmacsha512256_update=he._crypto_auth_hmacsha512256_update,a._crypto_auth_hmacsha512256_verify=he._crypto_auth_hmacsha512256_verify,a._crypto_auth_hmacsha512_bytes=he._crypto_auth_hmacsha512_bytes,a._crypto_auth_hmacsha512_final=he._crypto_auth_hmacsha512_final,a._crypto_auth_hmacsha512_init=he._crypto_auth_hmacsha512_init,a._crypto_auth_hmacsha512_keybytes=he._crypto_auth_hmacsha512_keybytes,a._crypto_auth_hmacsha512_keygen=he._crypto_auth_hmacsha512_keygen,a._crypto_auth_hmacsha512_statebytes=he._crypto_auth_hmacsha512_statebytes,a._crypto_auth_hmacsha512_update=he._crypto_auth_hmacsha512_update,a._crypto_auth_hmacsha512_verify=he._crypto_auth_hmacsha512_verify,a._crypto_auth_keybytes=he._crypto_auth_keybytes,a._crypto_auth_keygen=he._crypto_auth_keygen,a._crypto_auth_primitive=he._crypto_auth_primitive,a._crypto_auth_verify=he._crypto_auth_verify,a._crypto_box=he._crypto_box,a._crypto_box_afternm=he._crypto_box_afternm,a._crypto_box_beforenm=he._crypto_box_beforenm,a._crypto_box_beforenmbytes=he._crypto_box_beforenmbytes,a._crypto_box_boxzerobytes=he._crypto_box_boxzerobytes,a._crypto_box_curve25519xchacha20poly1305_beforenm=he._crypto_box_curve25519xchacha20poly1305_beforenm,a._crypto_box_curve25519xchacha20poly1305_beforenmbytes=he._crypto_box_curve25519xchacha20poly1305_beforenmbytes,a._crypto_box_curve25519xchacha20poly1305_detached=he._crypto_box_curve25519xchacha20poly1305_detached,a._crypto_box_curve25519xchacha20poly1305_detached_afternm=he._crypto_box_curve25519xchacha20poly1305_detached_afternm,a._crypto_box_curve25519xchacha20poly1305_easy=he._crypto_box_curve25519xchacha20poly1305_easy,a._crypto_box_curve25519xchacha20poly1305_easy_afternm=he._crypto_box_curve25519xchacha20poly1305_easy_afternm,a._crypto_box_curve25519xchacha20poly1305_keypair=he._crypto_box_curve25519xchacha20poly1305_keypair,a._crypto_box_curve25519xchacha20poly1305_macbytes=he._crypto_box_curve25519xchacha20poly1305_macbytes,a._crypto_box_curve25519xchacha20poly1305_messagebytes_max=he._crypto_box_curve25519xchacha20poly1305_messagebytes_max,a._crypto_box_curve25519xchacha20poly1305_noncebytes=he._crypto_box_curve25519xchacha20poly1305_noncebytes,a._crypto_box_curve25519xchacha20poly1305_open_detached=he._crypto_box_curve25519xchacha20poly1305_open_detached,a._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=he._crypto_box_curve25519xchacha20poly1305_open_detached_afternm,a._crypto_box_curve25519xchacha20poly1305_open_easy=he._crypto_box_curve25519xchacha20poly1305_open_easy,a._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=he._crypto_box_curve25519xchacha20poly1305_open_easy_afternm,a._crypto_box_curve25519xchacha20poly1305_publickeybytes=he._crypto_box_curve25519xchacha20poly1305_publickeybytes,a._crypto_box_curve25519xchacha20poly1305_seal=he._crypto_box_curve25519xchacha20poly1305_seal,a._crypto_box_curve25519xchacha20poly1305_seal_open=he._crypto_box_curve25519xchacha20poly1305_seal_open,a._crypto_box_curve25519xchacha20poly1305_sealbytes=he._crypto_box_curve25519xchacha20poly1305_sealbytes,a._crypto_box_curve25519xchacha20poly1305_secretkeybytes=he._crypto_box_curve25519xchacha20poly1305_secretkeybytes,a._crypto_box_curve25519xchacha20poly1305_seed_keypair=he._crypto_box_curve25519xchacha20poly1305_seed_keypair,a._crypto_box_curve25519xchacha20poly1305_seedbytes=he._crypto_box_curve25519xchacha20poly1305_seedbytes,a._crypto_box_curve25519xsalsa20poly1305=he._crypto_box_curve25519xsalsa20poly1305,a._crypto_box_curve25519xsalsa20poly1305_afternm=he._crypto_box_curve25519xsalsa20poly1305_afternm,a._crypto_box_curve25519xsalsa20poly1305_beforenm=he._crypto_box_curve25519xsalsa20poly1305_beforenm,a._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=he._crypto_box_curve25519xsalsa20poly1305_beforenmbytes,a._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=he._crypto_box_curve25519xsalsa20poly1305_boxzerobytes,a._crypto_box_curve25519xsalsa20poly1305_keypair=he._crypto_box_curve25519xsalsa20poly1305_keypair,a._crypto_box_curve25519xsalsa20poly1305_macbytes=he._crypto_box_curve25519xsalsa20poly1305_macbytes,a._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=he._crypto_box_curve25519xsalsa20poly1305_messagebytes_max,a._crypto_box_curve25519xsalsa20poly1305_noncebytes=he._crypto_box_curve25519xsalsa20poly1305_noncebytes,a._crypto_box_curve25519xsalsa20poly1305_open=he._crypto_box_curve25519xsalsa20poly1305_open,a._crypto_box_curve25519xsalsa20poly1305_open_afternm=he._crypto_box_curve25519xsalsa20poly1305_open_afternm,a._crypto_box_curve25519xsalsa20poly1305_publickeybytes=he._crypto_box_curve25519xsalsa20poly1305_publickeybytes,a._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=he._crypto_box_curve25519xsalsa20poly1305_secretkeybytes,a._crypto_box_curve25519xsalsa20poly1305_seed_keypair=he._crypto_box_curve25519xsalsa20poly1305_seed_keypair,a._crypto_box_curve25519xsalsa20poly1305_seedbytes=he._crypto_box_curve25519xsalsa20poly1305_seedbytes,a._crypto_box_curve25519xsalsa20poly1305_zerobytes=he._crypto_box_curve25519xsalsa20poly1305_zerobytes,a._crypto_box_detached=he._crypto_box_detached,a._crypto_box_detached_afternm=he._crypto_box_detached_afternm,a._crypto_box_easy=he._crypto_box_easy,a._crypto_box_easy_afternm=he._crypto_box_easy_afternm,a._crypto_box_keypair=he._crypto_box_keypair,a._crypto_box_macbytes=he._crypto_box_macbytes,a._crypto_box_messagebytes_max=he._crypto_box_messagebytes_max,a._crypto_box_noncebytes=he._crypto_box_noncebytes,a._crypto_box_open=he._crypto_box_open,a._crypto_box_open_afternm=he._crypto_box_open_afternm,a._crypto_box_open_detached=he._crypto_box_open_detached,a._crypto_box_open_detached_afternm=he._crypto_box_open_detached_afternm,a._crypto_box_open_easy=he._crypto_box_open_easy,a._crypto_box_open_easy_afternm=he._crypto_box_open_easy_afternm,a._crypto_box_primitive=he._crypto_box_primitive,a._crypto_box_publickeybytes=he._crypto_box_publickeybytes,a._crypto_box_seal=he._crypto_box_seal,a._crypto_box_seal_open=he._crypto_box_seal_open,a._crypto_box_sealbytes=he._crypto_box_sealbytes,a._crypto_box_secretkeybytes=he._crypto_box_secretkeybytes,a._crypto_box_seed_keypair=he._crypto_box_seed_keypair,a._crypto_box_seedbytes=he._crypto_box_seedbytes,a._crypto_box_zerobytes=he._crypto_box_zerobytes,a._crypto_core_ed25519_add=he._crypto_core_ed25519_add,a._crypto_core_ed25519_bytes=he._crypto_core_ed25519_bytes,a._crypto_core_ed25519_from_uniform=he._crypto_core_ed25519_from_uniform,a._crypto_core_ed25519_is_valid_point=he._crypto_core_ed25519_is_valid_point,a._crypto_core_ed25519_nonreducedscalarbytes=he._crypto_core_ed25519_nonreducedscalarbytes,a._crypto_core_ed25519_scalar_add=he._crypto_core_ed25519_scalar_add,a._crypto_core_ed25519_scalar_complement=he._crypto_core_ed25519_scalar_complement,a._crypto_core_ed25519_scalar_invert=he._crypto_core_ed25519_scalar_invert,a._crypto_core_ed25519_scalar_negate=he._crypto_core_ed25519_scalar_negate,a._crypto_core_ed25519_scalar_random=he._crypto_core_ed25519_scalar_random,a._crypto_core_ed25519_scalar_reduce=he._crypto_core_ed25519_scalar_reduce,a._crypto_core_ed25519_scalar_sub=he._crypto_core_ed25519_scalar_sub,a._crypto_core_ed25519_scalarbytes=he._crypto_core_ed25519_scalarbytes,a._crypto_core_ed25519_sub=he._crypto_core_ed25519_sub,a._crypto_core_ed25519_uniformbytes=he._crypto_core_ed25519_uniformbytes,a._crypto_core_hchacha20=he._crypto_core_hchacha20,a._crypto_core_hchacha20_constbytes=he._crypto_core_hchacha20_constbytes,a._crypto_core_hchacha20_inputbytes=he._crypto_core_hchacha20_inputbytes,a._crypto_core_hchacha20_keybytes=he._crypto_core_hchacha20_keybytes,a._crypto_core_hchacha20_outputbytes=he._crypto_core_hchacha20_outputbytes,a._crypto_core_hsalsa20=he._crypto_core_hsalsa20,a._crypto_core_hsalsa20_constbytes=he._crypto_core_hsalsa20_constbytes,a._crypto_core_hsalsa20_inputbytes=he._crypto_core_hsalsa20_inputbytes,a._crypto_core_hsalsa20_keybytes=he._crypto_core_hsalsa20_keybytes,a._crypto_core_hsalsa20_outputbytes=he._crypto_core_hsalsa20_outputbytes,a._crypto_core_salsa20=he._crypto_core_salsa20,a._crypto_core_salsa2012=he._crypto_core_salsa2012,a._crypto_core_salsa2012_constbytes=he._crypto_core_salsa2012_constbytes,a._crypto_core_salsa2012_inputbytes=he._crypto_core_salsa2012_inputbytes,a._crypto_core_salsa2012_keybytes=he._crypto_core_salsa2012_keybytes,a._crypto_core_salsa2012_outputbytes=he._crypto_core_salsa2012_outputbytes,a._crypto_core_salsa208=he._crypto_core_salsa208,a._crypto_core_salsa208_constbytes=he._crypto_core_salsa208_constbytes,a._crypto_core_salsa208_inputbytes=he._crypto_core_salsa208_inputbytes,a._crypto_core_salsa208_keybytes=he._crypto_core_salsa208_keybytes,a._crypto_core_salsa208_outputbytes=he._crypto_core_salsa208_outputbytes,a._crypto_core_salsa20_constbytes=he._crypto_core_salsa20_constbytes,a._crypto_core_salsa20_inputbytes=he._crypto_core_salsa20_inputbytes,a._crypto_core_salsa20_keybytes=he._crypto_core_salsa20_keybytes,a._crypto_core_salsa20_outputbytes=he._crypto_core_salsa20_outputbytes,a._crypto_generichash=he._crypto_generichash,a._crypto_generichash_blake2b=he._crypto_generichash_blake2b,a._crypto_generichash_blake2b_bytes=he._crypto_generichash_blake2b_bytes,a._crypto_generichash_blake2b_bytes_max=he._crypto_generichash_blake2b_bytes_max,a._crypto_generichash_blake2b_bytes_min=he._crypto_generichash_blake2b_bytes_min,a._crypto_generichash_blake2b_final=he._crypto_generichash_blake2b_final,a._crypto_generichash_blake2b_init=he._crypto_generichash_blake2b_init,a._crypto_generichash_blake2b_init_salt_personal=he._crypto_generichash_blake2b_init_salt_personal,a._crypto_generichash_blake2b_keybytes=he._crypto_generichash_blake2b_keybytes,a._crypto_generichash_blake2b_keybytes_max=he._crypto_generichash_blake2b_keybytes_max,a._crypto_generichash_blake2b_keybytes_min=he._crypto_generichash_blake2b_keybytes_min,a._crypto_generichash_blake2b_keygen=he._crypto_generichash_blake2b_keygen,a._crypto_generichash_blake2b_personalbytes=he._crypto_generichash_blake2b_personalbytes,a._crypto_generichash_blake2b_salt_personal=he._crypto_generichash_blake2b_salt_personal,a._crypto_generichash_blake2b_saltbytes=he._crypto_generichash_blake2b_saltbytes,a._crypto_generichash_blake2b_statebytes=he._crypto_generichash_blake2b_statebytes,a._crypto_generichash_blake2b_update=he._crypto_generichash_blake2b_update,a._crypto_generichash_bytes=he._crypto_generichash_bytes,a._crypto_generichash_bytes_max=he._crypto_generichash_bytes_max,a._crypto_generichash_bytes_min=he._crypto_generichash_bytes_min,a._crypto_generichash_final=he._crypto_generichash_final,a._crypto_generichash_init=he._crypto_generichash_init,a._crypto_generichash_keybytes=he._crypto_generichash_keybytes,a._crypto_generichash_keybytes_max=he._crypto_generichash_keybytes_max,a._crypto_generichash_keybytes_min=he._crypto_generichash_keybytes_min,a._crypto_generichash_keygen=he._crypto_generichash_keygen,a._crypto_generichash_primitive=he._crypto_generichash_primitive,a._crypto_generichash_statebytes=he._crypto_generichash_statebytes,a._crypto_generichash_update=he._crypto_generichash_update,a._crypto_hash=he._crypto_hash,a._crypto_hash_bytes=he._crypto_hash_bytes,a._crypto_hash_primitive=he._crypto_hash_primitive,a._crypto_hash_sha256=he._crypto_hash_sha256,a._crypto_hash_sha256_bytes=he._crypto_hash_sha256_bytes,a._crypto_hash_sha256_final=he._crypto_hash_sha256_final,a._crypto_hash_sha256_init=he._crypto_hash_sha256_init,a._crypto_hash_sha256_statebytes=he._crypto_hash_sha256_statebytes,a._crypto_hash_sha256_update=he._crypto_hash_sha256_update,a._crypto_hash_sha512=he._crypto_hash_sha512,a._crypto_hash_sha512_bytes=he._crypto_hash_sha512_bytes,a._crypto_hash_sha512_final=he._crypto_hash_sha512_final,a._crypto_hash_sha512_init=he._crypto_hash_sha512_init,a._crypto_hash_sha512_statebytes=he._crypto_hash_sha512_statebytes,a._crypto_hash_sha512_update=he._crypto_hash_sha512_update,a._crypto_kdf_blake2b_bytes_max=he._crypto_kdf_blake2b_bytes_max,a._crypto_kdf_blake2b_bytes_min=he._crypto_kdf_blake2b_bytes_min,a._crypto_kdf_blake2b_contextbytes=he._crypto_kdf_blake2b_contextbytes,a._crypto_kdf_blake2b_derive_from_key=he._crypto_kdf_blake2b_derive_from_key,a._crypto_kdf_blake2b_keybytes=he._crypto_kdf_blake2b_keybytes,a._crypto_kdf_bytes_max=he._crypto_kdf_bytes_max,a._crypto_kdf_bytes_min=he._crypto_kdf_bytes_min,a._crypto_kdf_contextbytes=he._crypto_kdf_contextbytes,a._crypto_kdf_derive_from_key=he._crypto_kdf_derive_from_key,a._crypto_kdf_keybytes=he._crypto_kdf_keybytes,a._crypto_kdf_keygen=he._crypto_kdf_keygen,a._crypto_kdf_primitive=he._crypto_kdf_primitive,a._crypto_kx_client_session_keys=he._crypto_kx_client_session_keys,a._crypto_kx_keypair=he._crypto_kx_keypair,a._crypto_kx_primitive=he._crypto_kx_primitive,a._crypto_kx_publickeybytes=he._crypto_kx_publickeybytes,a._crypto_kx_secretkeybytes=he._crypto_kx_secretkeybytes,a._crypto_kx_seed_keypair=he._crypto_kx_seed_keypair,a._crypto_kx_seedbytes=he._crypto_kx_seedbytes,a._crypto_kx_server_session_keys=he._crypto_kx_server_session_keys,a._crypto_kx_sessionkeybytes=he._crypto_kx_sessionkeybytes,a._crypto_onetimeauth=he._crypto_onetimeauth,a._crypto_onetimeauth_bytes=he._crypto_onetimeauth_bytes,a._crypto_onetimeauth_final=he._crypto_onetimeauth_final,a._crypto_onetimeauth_init=he._crypto_onetimeauth_init,a._crypto_onetimeauth_keybytes=he._crypto_onetimeauth_keybytes,a._crypto_onetimeauth_keygen=he._crypto_onetimeauth_keygen,a._crypto_onetimeauth_poly1305=he._crypto_onetimeauth_poly1305,a._crypto_onetimeauth_poly1305_bytes=he._crypto_onetimeauth_poly1305_bytes,a._crypto_onetimeauth_poly1305_final=he._crypto_onetimeauth_poly1305_final,a._crypto_onetimeauth_poly1305_init=he._crypto_onetimeauth_poly1305_init,a._crypto_onetimeauth_poly1305_keybytes=he._crypto_onetimeauth_poly1305_keybytes,a._crypto_onetimeauth_poly1305_keygen=he._crypto_onetimeauth_poly1305_keygen,a._crypto_onetimeauth_poly1305_statebytes=he._crypto_onetimeauth_poly1305_statebytes,a._crypto_onetimeauth_poly1305_update=he._crypto_onetimeauth_poly1305_update,a._crypto_onetimeauth_poly1305_verify=he._crypto_onetimeauth_poly1305_verify,a._crypto_onetimeauth_primitive=he._crypto_onetimeauth_primitive,a._crypto_onetimeauth_statebytes=he._crypto_onetimeauth_statebytes,a._crypto_onetimeauth_update=he._crypto_onetimeauth_update,a._crypto_onetimeauth_verify=he._crypto_onetimeauth_verify,a._crypto_pwhash=he._crypto_pwhash,a._crypto_pwhash_alg_argon2i13=he._crypto_pwhash_alg_argon2i13,a._crypto_pwhash_alg_argon2id13=he._crypto_pwhash_alg_argon2id13,a._crypto_pwhash_alg_default=he._crypto_pwhash_alg_default,a._crypto_pwhash_argon2i=he._crypto_pwhash_argon2i,a._crypto_pwhash_argon2i_alg_argon2i13=he._crypto_pwhash_argon2i_alg_argon2i13,a._crypto_pwhash_argon2i_bytes_max=he._crypto_pwhash_argon2i_bytes_max,a._crypto_pwhash_argon2i_bytes_min=he._crypto_pwhash_argon2i_bytes_min,a._crypto_pwhash_argon2i_memlimit_interactive=he._crypto_pwhash_argon2i_memlimit_interactive,a._crypto_pwhash_argon2i_memlimit_max=he._crypto_pwhash_argon2i_memlimit_max,a._crypto_pwhash_argon2i_memlimit_min=he._crypto_pwhash_argon2i_memlimit_min,a._crypto_pwhash_argon2i_memlimit_moderate=he._crypto_pwhash_argon2i_memlimit_moderate,a._crypto_pwhash_argon2i_memlimit_sensitive=he._crypto_pwhash_argon2i_memlimit_sensitive,a._crypto_pwhash_argon2i_opslimit_interactive=he._crypto_pwhash_argon2i_opslimit_interactive,a._crypto_pwhash_argon2i_opslimit_max=he._crypto_pwhash_argon2i_opslimit_max,a._crypto_pwhash_argon2i_opslimit_min=he._crypto_pwhash_argon2i_opslimit_min,a._crypto_pwhash_argon2i_opslimit_moderate=he._crypto_pwhash_argon2i_opslimit_moderate,a._crypto_pwhash_argon2i_opslimit_sensitive=he._crypto_pwhash_argon2i_opslimit_sensitive,a._crypto_pwhash_argon2i_passwd_max=he._crypto_pwhash_argon2i_passwd_max,a._crypto_pwhash_argon2i_passwd_min=he._crypto_pwhash_argon2i_passwd_min,a._crypto_pwhash_argon2i_saltbytes=he._crypto_pwhash_argon2i_saltbytes,a._crypto_pwhash_argon2i_str=he._crypto_pwhash_argon2i_str,a._crypto_pwhash_argon2i_str_needs_rehash=he._crypto_pwhash_argon2i_str_needs_rehash,a._crypto_pwhash_argon2i_str_verify=he._crypto_pwhash_argon2i_str_verify,a._crypto_pwhash_argon2i_strbytes=he._crypto_pwhash_argon2i_strbytes,a._crypto_pwhash_argon2i_strprefix=he._crypto_pwhash_argon2i_strprefix,a._crypto_pwhash_argon2id=he._crypto_pwhash_argon2id,a._crypto_pwhash_argon2id_alg_argon2id13=he._crypto_pwhash_argon2id_alg_argon2id13,a._crypto_pwhash_argon2id_bytes_max=he._crypto_pwhash_argon2id_bytes_max,a._crypto_pwhash_argon2id_bytes_min=he._crypto_pwhash_argon2id_bytes_min,a._crypto_pwhash_argon2id_memlimit_interactive=he._crypto_pwhash_argon2id_memlimit_interactive,a._crypto_pwhash_argon2id_memlimit_max=he._crypto_pwhash_argon2id_memlimit_max,a._crypto_pwhash_argon2id_memlimit_min=he._crypto_pwhash_argon2id_memlimit_min,a._crypto_pwhash_argon2id_memlimit_moderate=he._crypto_pwhash_argon2id_memlimit_moderate,a._crypto_pwhash_argon2id_memlimit_sensitive=he._crypto_pwhash_argon2id_memlimit_sensitive,a._crypto_pwhash_argon2id_opslimit_interactive=he._crypto_pwhash_argon2id_opslimit_interactive,a._crypto_pwhash_argon2id_opslimit_max=he._crypto_pwhash_argon2id_opslimit_max,a._crypto_pwhash_argon2id_opslimit_min=he._crypto_pwhash_argon2id_opslimit_min,a._crypto_pwhash_argon2id_opslimit_moderate=he._crypto_pwhash_argon2id_opslimit_moderate,a._crypto_pwhash_argon2id_opslimit_sensitive=he._crypto_pwhash_argon2id_opslimit_sensitive,a._crypto_pwhash_argon2id_passwd_max=he._crypto_pwhash_argon2id_passwd_max,a._crypto_pwhash_argon2id_passwd_min=he._crypto_pwhash_argon2id_passwd_min,a._crypto_pwhash_argon2id_saltbytes=he._crypto_pwhash_argon2id_saltbytes,a._crypto_pwhash_argon2id_str=he._crypto_pwhash_argon2id_str,a._crypto_pwhash_argon2id_str_needs_rehash=he._crypto_pwhash_argon2id_str_needs_rehash,a._crypto_pwhash_argon2id_str_verify=he._crypto_pwhash_argon2id_str_verify,a._crypto_pwhash_argon2id_strbytes=he._crypto_pwhash_argon2id_strbytes,a._crypto_pwhash_argon2id_strprefix=he._crypto_pwhash_argon2id_strprefix,a._crypto_pwhash_bytes_max=he._crypto_pwhash_bytes_max,a._crypto_pwhash_bytes_min=he._crypto_pwhash_bytes_min,a._crypto_pwhash_memlimit_interactive=he._crypto_pwhash_memlimit_interactive,a._crypto_pwhash_memlimit_max=he._crypto_pwhash_memlimit_max,a._crypto_pwhash_memlimit_min=he._crypto_pwhash_memlimit_min,a._crypto_pwhash_memlimit_moderate=he._crypto_pwhash_memlimit_moderate,a._crypto_pwhash_memlimit_sensitive=he._crypto_pwhash_memlimit_sensitive,a._crypto_pwhash_opslimit_interactive=he._crypto_pwhash_opslimit_interactive,a._crypto_pwhash_opslimit_max=he._crypto_pwhash_opslimit_max,a._crypto_pwhash_opslimit_min=he._crypto_pwhash_opslimit_min,a._crypto_pwhash_opslimit_moderate=he._crypto_pwhash_opslimit_moderate,a._crypto_pwhash_opslimit_sensitive=he._crypto_pwhash_opslimit_sensitive,a._crypto_pwhash_passwd_max=he._crypto_pwhash_passwd_max,a._crypto_pwhash_passwd_min=he._crypto_pwhash_passwd_min,a._crypto_pwhash_primitive=he._crypto_pwhash_primitive,a._crypto_pwhash_saltbytes=he._crypto_pwhash_saltbytes,a._crypto_pwhash_scryptsalsa208sha256=he._crypto_pwhash_scryptsalsa208sha256,a._crypto_pwhash_scryptsalsa208sha256_bytes_max=he._crypto_pwhash_scryptsalsa208sha256_bytes_max,a._crypto_pwhash_scryptsalsa208sha256_bytes_min=he._crypto_pwhash_scryptsalsa208sha256_bytes_min,a._crypto_pwhash_scryptsalsa208sha256_ll=he._crypto_pwhash_scryptsalsa208sha256_ll,a._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=he._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive,a._crypto_pwhash_scryptsalsa208sha256_memlimit_max=he._crypto_pwhash_scryptsalsa208sha256_memlimit_max,a._crypto_pwhash_scryptsalsa208sha256_memlimit_min=he._crypto_pwhash_scryptsalsa208sha256_memlimit_min,a._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=he._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive,a._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=he._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive,a._crypto_pwhash_scryptsalsa208sha256_opslimit_max=he._crypto_pwhash_scryptsalsa208sha256_opslimit_max,a._crypto_pwhash_scryptsalsa208sha256_opslimit_min=he._crypto_pwhash_scryptsalsa208sha256_opslimit_min,a._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=he._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive,a._crypto_pwhash_scryptsalsa208sha256_passwd_max=he._crypto_pwhash_scryptsalsa208sha256_passwd_max,a._crypto_pwhash_scryptsalsa208sha256_passwd_min=he._crypto_pwhash_scryptsalsa208sha256_passwd_min,a._crypto_pwhash_scryptsalsa208sha256_saltbytes=he._crypto_pwhash_scryptsalsa208sha256_saltbytes,a._crypto_pwhash_scryptsalsa208sha256_str=he._crypto_pwhash_scryptsalsa208sha256_str,a._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=he._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash,a._crypto_pwhash_scryptsalsa208sha256_str_verify=he._crypto_pwhash_scryptsalsa208sha256_str_verify,a._crypto_pwhash_scryptsalsa208sha256_strbytes=he._crypto_pwhash_scryptsalsa208sha256_strbytes,a._crypto_pwhash_scryptsalsa208sha256_strprefix=he._crypto_pwhash_scryptsalsa208sha256_strprefix,a._crypto_pwhash_str=he._crypto_pwhash_str,a._crypto_pwhash_str_alg=he._crypto_pwhash_str_alg,a._crypto_pwhash_str_needs_rehash=he._crypto_pwhash_str_needs_rehash,a._crypto_pwhash_str_verify=he._crypto_pwhash_str_verify,a._crypto_pwhash_strbytes=he._crypto_pwhash_strbytes,a._crypto_pwhash_strprefix=he._crypto_pwhash_strprefix,a._crypto_scalarmult=he._crypto_scalarmult,a._crypto_scalarmult_base=he._crypto_scalarmult_base,a._crypto_scalarmult_bytes=he._crypto_scalarmult_bytes,a._crypto_scalarmult_curve25519=he._crypto_scalarmult_curve25519,a._crypto_scalarmult_curve25519_base=he._crypto_scalarmult_curve25519_base,a._crypto_scalarmult_curve25519_bytes=he._crypto_scalarmult_curve25519_bytes,a._crypto_scalarmult_curve25519_scalarbytes=he._crypto_scalarmult_curve25519_scalarbytes,a._crypto_scalarmult_ed25519=he._crypto_scalarmult_ed25519,a._crypto_scalarmult_ed25519_base=he._crypto_scalarmult_ed25519_base,a._crypto_scalarmult_ed25519_base_noclamp=he._crypto_scalarmult_ed25519_base_noclamp,a._crypto_scalarmult_ed25519_bytes=he._crypto_scalarmult_ed25519_bytes,a._crypto_scalarmult_ed25519_noclamp=he._crypto_scalarmult_ed25519_noclamp,a._crypto_scalarmult_ed25519_scalarbytes=he._crypto_scalarmult_ed25519_scalarbytes,a._crypto_scalarmult_primitive=he._crypto_scalarmult_primitive,a._crypto_scalarmult_scalarbytes=he._crypto_scalarmult_scalarbytes,a._crypto_secretbox=he._crypto_secretbox,a._crypto_secretbox_boxzerobytes=he._crypto_secretbox_boxzerobytes,a._crypto_secretbox_detached=he._crypto_secretbox_detached,a._crypto_secretbox_easy=he._crypto_secretbox_easy,a._crypto_secretbox_keybytes=he._crypto_secretbox_keybytes,a._crypto_secretbox_keygen=he._crypto_secretbox_keygen,a._crypto_secretbox_macbytes=he._crypto_secretbox_macbytes,a._crypto_secretbox_messagebytes_max=he._crypto_secretbox_messagebytes_max,a._crypto_secretbox_noncebytes=he._crypto_secretbox_noncebytes,a._crypto_secretbox_open=he._crypto_secretbox_open,a._crypto_secretbox_open_detached=he._crypto_secretbox_open_detached,a._crypto_secretbox_open_easy=he._crypto_secretbox_open_easy,a._crypto_secretbox_primitive=he._crypto_secretbox_primitive,a._crypto_secretbox_xchacha20poly1305_detached=he._crypto_secretbox_xchacha20poly1305_detached,a._crypto_secretbox_xchacha20poly1305_easy=he._crypto_secretbox_xchacha20poly1305_easy,a._crypto_secretbox_xchacha20poly1305_keybytes=he._crypto_secretbox_xchacha20poly1305_keybytes,a._crypto_secretbox_xchacha20poly1305_macbytes=he._crypto_secretbox_xchacha20poly1305_macbytes,a._crypto_secretbox_xchacha20poly1305_messagebytes_max=he._crypto_secretbox_xchacha20poly1305_messagebytes_max,a._crypto_secretbox_xchacha20poly1305_noncebytes=he._crypto_secretbox_xchacha20poly1305_noncebytes,a._crypto_secretbox_xchacha20poly1305_open_detached=he._crypto_secretbox_xchacha20poly1305_open_detached,a._crypto_secretbox_xchacha20poly1305_open_easy=he._crypto_secretbox_xchacha20poly1305_open_easy,a._crypto_secretbox_xsalsa20poly1305=he._crypto_secretbox_xsalsa20poly1305,a._crypto_secretbox_xsalsa20poly1305_boxzerobytes=he._crypto_secretbox_xsalsa20poly1305_boxzerobytes,a._crypto_secretbox_xsalsa20poly1305_keybytes=he._crypto_secretbox_xsalsa20poly1305_keybytes,a._crypto_secretbox_xsalsa20poly1305_keygen=he._crypto_secretbox_xsalsa20poly1305_keygen,a._crypto_secretbox_xsalsa20poly1305_macbytes=he._crypto_secretbox_xsalsa20poly1305_macbytes,a._crypto_secretbox_xsalsa20poly1305_messagebytes_max=he._crypto_secretbox_xsalsa20poly1305_messagebytes_max,a._crypto_secretbox_xsalsa20poly1305_noncebytes=he._crypto_secretbox_xsalsa20poly1305_noncebytes,a._crypto_secretbox_xsalsa20poly1305_open=he._crypto_secretbox_xsalsa20poly1305_open,a._crypto_secretbox_xsalsa20poly1305_zerobytes=he._crypto_secretbox_xsalsa20poly1305_zerobytes,a._crypto_secretbox_zerobytes=he._crypto_secretbox_zerobytes,a._crypto_secretstream_xchacha20poly1305_abytes=he._crypto_secretstream_xchacha20poly1305_abytes,a._crypto_secretstream_xchacha20poly1305_headerbytes=he._crypto_secretstream_xchacha20poly1305_headerbytes,a._crypto_secretstream_xchacha20poly1305_init_pull=he._crypto_secretstream_xchacha20poly1305_init_pull,a._crypto_secretstream_xchacha20poly1305_init_push=he._crypto_secretstream_xchacha20poly1305_init_push,a._crypto_secretstream_xchacha20poly1305_keybytes=he._crypto_secretstream_xchacha20poly1305_keybytes,a._crypto_secretstream_xchacha20poly1305_keygen=he._crypto_secretstream_xchacha20poly1305_keygen,a._crypto_secretstream_xchacha20poly1305_messagebytes_max=he._crypto_secretstream_xchacha20poly1305_messagebytes_max,a._crypto_secretstream_xchacha20poly1305_pull=he._crypto_secretstream_xchacha20poly1305_pull,a._crypto_secretstream_xchacha20poly1305_push=he._crypto_secretstream_xchacha20poly1305_push,a._crypto_secretstream_xchacha20poly1305_rekey=he._crypto_secretstream_xchacha20poly1305_rekey,a._crypto_secretstream_xchacha20poly1305_statebytes=he._crypto_secretstream_xchacha20poly1305_statebytes,a._crypto_secretstream_xchacha20poly1305_tag_final=he._crypto_secretstream_xchacha20poly1305_tag_final,a._crypto_secretstream_xchacha20poly1305_tag_message=he._crypto_secretstream_xchacha20poly1305_tag_message,a._crypto_secretstream_xchacha20poly1305_tag_push=he._crypto_secretstream_xchacha20poly1305_tag_push,a._crypto_secretstream_xchacha20poly1305_tag_rekey=he._crypto_secretstream_xchacha20poly1305_tag_rekey,a._crypto_shorthash=he._crypto_shorthash,a._crypto_shorthash_bytes=he._crypto_shorthash_bytes,a._crypto_shorthash_keybytes=he._crypto_shorthash_keybytes,a._crypto_shorthash_keygen=he._crypto_shorthash_keygen,a._crypto_shorthash_primitive=he._crypto_shorthash_primitive,a._crypto_shorthash_siphash24=he._crypto_shorthash_siphash24,a._crypto_shorthash_siphash24_bytes=he._crypto_shorthash_siphash24_bytes,a._crypto_shorthash_siphash24_keybytes=he._crypto_shorthash_siphash24_keybytes,a._crypto_shorthash_siphashx24=he._crypto_shorthash_siphashx24,a._crypto_shorthash_siphashx24_bytes=he._crypto_shorthash_siphashx24_bytes,a._crypto_shorthash_siphashx24_keybytes=he._crypto_shorthash_siphashx24_keybytes,a._crypto_sign=he._crypto_sign,a._crypto_sign_bytes=he._crypto_sign_bytes,a._crypto_sign_detached=he._crypto_sign_detached,a._crypto_sign_ed25519=he._crypto_sign_ed25519,a._crypto_sign_ed25519_bytes=he._crypto_sign_ed25519_bytes,a._crypto_sign_ed25519_detached=he._crypto_sign_ed25519_detached,a._crypto_sign_ed25519_keypair=he._crypto_sign_ed25519_keypair,a._crypto_sign_ed25519_messagebytes_max=he._crypto_sign_ed25519_messagebytes_max,a._crypto_sign_ed25519_open=he._crypto_sign_ed25519_open,a._crypto_sign_ed25519_pk_to_curve25519=he._crypto_sign_ed25519_pk_to_curve25519,a._crypto_sign_ed25519_publickeybytes=he._crypto_sign_ed25519_publickeybytes,a._crypto_sign_ed25519_secretkeybytes=he._crypto_sign_ed25519_secretkeybytes,a._crypto_sign_ed25519_seed_keypair=he._crypto_sign_ed25519_seed_keypair,a._crypto_sign_ed25519_seedbytes=he._crypto_sign_ed25519_seedbytes,a._crypto_sign_ed25519_sk_to_curve25519=he._crypto_sign_ed25519_sk_to_curve25519,a._crypto_sign_ed25519_sk_to_pk=he._crypto_sign_ed25519_sk_to_pk,a._crypto_sign_ed25519_sk_to_seed=he._crypto_sign_ed25519_sk_to_seed,a._crypto_sign_ed25519_verify_detached=he._crypto_sign_ed25519_verify_detached,a._crypto_sign_ed25519ph_final_create=he._crypto_sign_ed25519ph_final_create,a._crypto_sign_ed25519ph_final_verify=he._crypto_sign_ed25519ph_final_verify,a._crypto_sign_ed25519ph_init=he._crypto_sign_ed25519ph_init,a._crypto_sign_ed25519ph_statebytes=he._crypto_sign_ed25519ph_statebytes,a._crypto_sign_ed25519ph_update=he._crypto_sign_ed25519ph_update,a._crypto_sign_final_create=he._crypto_sign_final_create,a._crypto_sign_final_verify=he._crypto_sign_final_verify,a._crypto_sign_init=he._crypto_sign_init,a._crypto_sign_keypair=he._crypto_sign_keypair,a._crypto_sign_messagebytes_max=he._crypto_sign_messagebytes_max,a._crypto_sign_open=he._crypto_sign_open,a._crypto_sign_primitive=he._crypto_sign_primitive,a._crypto_sign_publickeybytes=he._crypto_sign_publickeybytes,a._crypto_sign_secretkeybytes=he._crypto_sign_secretkeybytes,a._crypto_sign_seed_keypair=he._crypto_sign_seed_keypair,a._crypto_sign_seedbytes=he._crypto_sign_seedbytes,a._crypto_sign_statebytes=he._crypto_sign_statebytes,a._crypto_sign_update=he._crypto_sign_update,a._crypto_sign_verify_detached=he._crypto_sign_verify_detached,a._crypto_stream=he._crypto_stream,a._crypto_stream_chacha20=he._crypto_stream_chacha20,a._crypto_stream_chacha20_ietf=he._crypto_stream_chacha20_ietf,a._crypto_stream_chacha20_ietf_keybytes=he._crypto_stream_chacha20_ietf_keybytes,a._crypto_stream_chacha20_ietf_keygen=he._crypto_stream_chacha20_ietf_keygen,a._crypto_stream_chacha20_ietf_messagebytes_max=he._crypto_stream_chacha20_ietf_messagebytes_max,a._crypto_stream_chacha20_ietf_noncebytes=he._crypto_stream_chacha20_ietf_noncebytes,a._crypto_stream_chacha20_ietf_xor=he._crypto_stream_chacha20_ietf_xor,a._crypto_stream_chacha20_ietf_xor_ic=he._crypto_stream_chacha20_ietf_xor_ic,a._crypto_stream_chacha20_keybytes=he._crypto_stream_chacha20_keybytes,a._crypto_stream_chacha20_keygen=he._crypto_stream_chacha20_keygen,a._crypto_stream_chacha20_messagebytes_max=he._crypto_stream_chacha20_messagebytes_max,a._crypto_stream_chacha20_noncebytes=he._crypto_stream_chacha20_noncebytes,a._crypto_stream_chacha20_xor=he._crypto_stream_chacha20_xor,a._crypto_stream_chacha20_xor_ic=he._crypto_stream_chacha20_xor_ic,a._crypto_stream_keybytes=he._crypto_stream_keybytes,a._crypto_stream_keygen=he._crypto_stream_keygen,a._crypto_stream_messagebytes_max=he._crypto_stream_messagebytes_max,a._crypto_stream_noncebytes=he._crypto_stream_noncebytes,a._crypto_stream_primitive=he._crypto_stream_primitive,a._crypto_stream_salsa20=he._crypto_stream_salsa20,a._crypto_stream_salsa2012=he._crypto_stream_salsa2012,a._crypto_stream_salsa2012_keybytes=he._crypto_stream_salsa2012_keybytes,a._crypto_stream_salsa2012_keygen=he._crypto_stream_salsa2012_keygen,a._crypto_stream_salsa2012_messagebytes_max=he._crypto_stream_salsa2012_messagebytes_max,a._crypto_stream_salsa2012_noncebytes=he._crypto_stream_salsa2012_noncebytes,a._crypto_stream_salsa2012_xor=he._crypto_stream_salsa2012_xor,a._crypto_stream_salsa208=he._crypto_stream_salsa208,a._crypto_stream_salsa208_keybytes=he._crypto_stream_salsa208_keybytes,a._crypto_stream_salsa208_keygen=he._crypto_stream_salsa208_keygen,a._crypto_stream_salsa208_messagebytes_max=he._crypto_stream_salsa208_messagebytes_max,a._crypto_stream_salsa208_noncebytes=he._crypto_stream_salsa208_noncebytes,a._crypto_stream_salsa208_xor=he._crypto_stream_salsa208_xor,a._crypto_stream_salsa20_keybytes=he._crypto_stream_salsa20_keybytes,a._crypto_stream_salsa20_keygen=he._crypto_stream_salsa20_keygen,a._crypto_stream_salsa20_messagebytes_max=he._crypto_stream_salsa20_messagebytes_max,a._crypto_stream_salsa20_noncebytes=he._crypto_stream_salsa20_noncebytes,a._crypto_stream_salsa20_xor=he._crypto_stream_salsa20_xor,a._crypto_stream_salsa20_xor_ic=he._crypto_stream_salsa20_xor_ic,a._crypto_stream_xchacha20=he._crypto_stream_xchacha20,a._crypto_stream_xchacha20_keybytes=he._crypto_stream_xchacha20_keybytes,a._crypto_stream_xchacha20_keygen=he._crypto_stream_xchacha20_keygen,a._crypto_stream_xchacha20_messagebytes_max=he._crypto_stream_xchacha20_messagebytes_max,a._crypto_stream_xchacha20_noncebytes=he._crypto_stream_xchacha20_noncebytes,a._crypto_stream_xchacha20_xor=he._crypto_stream_xchacha20_xor,a._crypto_stream_xchacha20_xor_ic=he._crypto_stream_xchacha20_xor_ic,a._crypto_stream_xor=he._crypto_stream_xor,a._crypto_stream_xsalsa20=he._crypto_stream_xsalsa20,a._crypto_stream_xsalsa20_keybytes=he._crypto_stream_xsalsa20_keybytes,a._crypto_stream_xsalsa20_keygen=he._crypto_stream_xsalsa20_keygen,a._crypto_stream_xsalsa20_messagebytes_max=he._crypto_stream_xsalsa20_messagebytes_max,a._crypto_stream_xsalsa20_noncebytes=he._crypto_stream_xsalsa20_noncebytes,a._crypto_stream_xsalsa20_xor=he._crypto_stream_xsalsa20_xor,a._crypto_stream_xsalsa20_xor_ic=he._crypto_stream_xsalsa20_xor_ic,a._crypto_verify_16=he._crypto_verify_16,a._crypto_verify_16_bytes=he._crypto_verify_16_bytes,a._crypto_verify_32=he._crypto_verify_32,a._crypto_verify_32_bytes=he._crypto_verify_32_bytes,a._crypto_verify_64=he._crypto_verify_64,a._crypto_verify_64_bytes=he._crypto_verify_64_bytes,a._emscripten_replace_memory=he._emscripten_replace_memory);if(a._free=he._free,a._i64Add=he._i64Add,a._i64Subtract=he._i64Subtract,a._malloc=he._malloc,a._memcpy=he._memcpy,a._memmove=he._memmove,a._memset=he._memset,a._randombytes=he._randombytes,a._randombytes_buf=he._randombytes_buf,a._randombytes_buf_deterministic=he._randombytes_buf_deterministic,a._randombytes_close=he._randombytes_close,a._randombytes_implementation_name=he._randombytes_implementation_name,a._randombytes_random=he._randombytes_random,a._randombytes_seedbytes=he._randombytes_seedbytes,a._randombytes_stir=he._randombytes_stir,a._randombytes_uniform=he._randombytes_uniform,a._sbrk=he._sbrk,a._sodium_base642bin=he._sodium_base642bin,a._sodium_base64_encoded_len=he._sodium_base64_encoded_len,a._sodium_bin2base64=he._sodium_bin2base64,a._sodium_bin2hex=he._sodium_bin2hex,a._sodium_hex2bin=he._sodium_hex2bin,a._sodium_init=he._sodium_init,a._sodium_library_minimal=he._sodium_library_minimal,a._sodium_library_version_major=he._sodium_library_version_major,a._sodium_library_version_minor=he._sodium_library_version_minor,a._sodium_pad=he._sodium_pad,a._sodium_unpad=he._sodium_unpad,a._sodium_version_string=he._sodium_version_string,a.establishStackSpace=he.establishStackSpace,a.setThrew=he.setThrew,a.stackAlloc=he.stackAlloc,a.stackRestore=he.stackRestore,a.stackSave=he.stackSave,a.asm=he,a.setValue=function(e,a,r,i){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":B[e>>0]=a;break;case"i16":E[e>>1]=a;break;case"i32":Q[e>>2]=a;break;case"i64":tempI64=[a>>>0,(tempDouble=a,+$(tempDouble)>=1?tempDouble>0?(0|V(+X(tempDouble/4294967296),4294967295))>>>0:~~+O((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],Q[e>>2]=tempI64[0],Q[e+4>>2]=tempI64[1];break;case"float":x[e>>2]=a;break;case"double":j[e>>3]=a;break;default:we("invalid type for setValue: "+r)}},a.getValue=function(e,a,r){switch("*"===(a=a||"i8").charAt(a.length-1)&&(a="i32"),a){case"i1":case"i8":return B[e>>0];case"i16":return E[e>>1];case"i32":case"i64":return Q[e>>2];case"float":return x[e>>2];case"double":return j[e>>3];default:we("invalid type for getValue: "+a)}return null},a.Pointer_stringify=I,ae)if(ie(ae)||(de=ae,ae=a.locateFile?a.locateFile(de,p):p+de),h||d){var ge=a.readBinary(ae);C.set(ge,8)}else{W++,a.monitorRunDependencies&&a.monitorRunDependencies(W);var pe=function(e){e.byteLength&&(e=new Uint8Array(e)),C.set(e,8),a.memoryInitializerRequest&&delete a.memoryInitializerRequest.response,function(e){if(W--,a.monitorRunDependencies&&a.monitorRunDependencies(W),0==W&&(null!==Z&&(clearInterval(Z),Z=null),ee)){var r=ee;ee=null,r()}}()};function me(){a.readAsync(ae,pe,function(){throw"could not load memory initializer "+ae})}var fe=ue(ae);if(fe)pe(fe.buffer);else if(a.memoryInitializerRequest){function ye(){var e=a.memoryInitializerRequest,r=e.response;if(200!==e.status&&0!==e.status){var i=ue(a.memoryInitializerRequestURL);if(!i)return void me();r=i.buffer}pe(r)}a.memoryInitializerRequest.response?setTimeout(ye,0):a.memoryInitializerRequest.addEventListener("load",ye)}else me()}function be(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function ke(e){function r(){a.calledRun||(a.calledRun=!0,w||(K||(K=!0,Y(P)),Y(L),a.onRuntimeInitialized&&a.onRuntimeInitialized(),function(){if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)e=a.postRun.shift(),T.unshift(e);var e;Y(T)}()))}e=e||a.arguments,W>0||(function(){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)e=a.preRun.shift(),J.unshift(e);var e;Y(J)}(),W>0||a.calledRun||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),r()},1)):r()))}function we(e){throw a.onAbort&&a.onAbort(e),void 0!==e?(m(e),f(e),e=JSON.stringify(e)):e="",w=!0,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}if(be.prototype=new Error,be.prototype.constructor=be,ee=function e(){a.calledRun||ke(),a.calledRun||(ee=e)},a.run=ke,a.abort=we,a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();a.noExitRuntime=!0,ke()};var s,l=void 0!==l?l:{},u={};for(s in l)l.hasOwnProperty(s)&&(u[s]=l[s]);l.arguments=[],l.thisProgram="./this.program",l.quit=function(e,a){throw a},l.preRun=[],l.postRun=[];var d,h=!1,A=!1,g=!1;h="object"==typeof window,A="function"==typeof importScripts,g="object"==typeof t&&!h&&!A,d=!h&&!g&&!A;var p,m,f="";function y(e){return l.locateFile?l.locateFile(e,f):f+e}g?(f=n+"/",l.read=function(e,a){var i;return(i=ue(e))||(p||(p=r(58)),m||(m=r(59)),e=m.normalize(e),i=p.readFileSync(e)),a?i:i.toString()},l.readBinary=function(e){var a=l.read(e,!0);return a.buffer||(a=new Uint8Array(a)),B(a.buffer),a},t.argv.length>1&&(l.thisProgram=t.argv[1].replace(/\\/g,"/")),l.arguments=t.argv.slice(2),e.exports=l,t.on("uncaughtException",function(e){if(!(e instanceof Ae))throw e}),t.on("unhandledRejection",pe),l.quit=function(e){t.exit(e)},l.inspect=function(){return"[Emscripten Module object]"}):d?("undefined"!=typeof read&&(l.read=function(e){var a=ue(e);return a?le(a):read(e)}),l.readBinary=function(e){var a;return(a=ue(e))?a:"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(B("object"==typeof(a=read(e,"binary"))),a)},"undefined"!=typeof scriptArgs?l.arguments=scriptArgs:void 0!==arguments&&(l.arguments=arguments),"function"==typeof quit&&(l.quit=function(e){quit(e)})):(h||A)&&(A?f=self.location.href:document.currentScript&&(f=document.currentScript.src),f=0!==f.indexOf("blob:")?f.substr(0,f.lastIndexOf("/")+1):"",l.read=function(e){try{var a=new XMLHttpRequest;return a.open("GET",e,!1),a.send(null),a.responseText}catch(a){var r=ue(e);if(r)return le(r);throw a}},A&&(l.readBinary=function(e){try{var a=new XMLHttpRequest;return a.open("GET",e,!1),a.responseType="arraybuffer",a.send(null),new Uint8Array(a.response)}catch(a){var r=ue(e);if(r)return r;throw a}}),l.readAsync=function(e,a,r){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=function(){if(200==i.status||0==i.status&&i.response)a(i.response);else{var t=ue(e);t?a(t.buffer):r()}},i.onerror=r,i.send(null)},l.setWindowTitle=function(e){document.title=e});var b=l.print||("undefined"!=typeof console?void 0:"undefined"!=typeof print?print:null),k=l.printErr||("undefined"!=typeof printErr?printErr:b);for(s in u)u.hasOwnProperty(s)&&(l[s]=u[s]);u=void 0;var w=16;function v(e,a){return a||(a=w),Math.ceil(e/a)*a}var I={"f64-rem":function(e,a){return e%a},debugger:function(){}},_=(new Array(8),!1);function B(e,a){e||pe("Assertion failed: "+a)}function C(e,a){if(0===a||!e)return"";for(var r,i=0,t=0;i|=r=x[e+t>>0],(0!=r||a)&&(t++,!a||t!=a););a||(a=t);var n="";if(i<128){for(var o;a>0;)o=String.fromCharCode.apply(String,x.subarray(e,e+Math.min(a,1024))),n=n?n+o:o,e+=1024,a-=1024;return n}return function(e){return function(e,a){for(var r=a;e[r];)++r;if(r-a>16&&e.subarray&&R)return R.decode(e.subarray(a,r));for(var i,t,n,o,s,l="";;){if(!(i=e[a++]))return l;if(128&i)if(t=63&e[a++],192!=(224&i))if(n=63&e[a++],224==(240&i)?i=(15&i)<<12|t<<6|n:(o=63&e[a++],240==(248&i)?i=(7&i)<<18|t<<12|n<<6|o:(s=63&e[a++],i=248==(252&i)?(3&i)<<24|t<<18|n<<12|o<<6|s:(1&i)<<30|t<<24|n<<18|o<<12|s<<6|63&e[a++])),i<65536)l+=String.fromCharCode(i);else{var c=i-65536;l+=String.fromCharCode(55296|c>>10,56320|1023&c)}else l+=String.fromCharCode((31&i)<<6|t);else l+=String.fromCharCode(i)}}(x,e)}(e)}var E,Q,x,j,z,D,S,M,q,F,U,R="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function H(e,a){return e%a>0&&(e+=a-e%a),e}function N(e){l.buffer=E=e}function G(){l.HEAP8=Q=new Int8Array(E),l.HEAP16=j=new Int16Array(E),l.HEAP32=z=new Int32Array(E),l.HEAPU8=x=new Uint8Array(E),l.HEAPU16=new Uint16Array(E),l.HEAPU32=new Uint32Array(E),l.HEAPF32=D=new Float32Array(E),l.HEAPF64=S=new Float64Array(E)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le"),M=0,l.reallocBuffer||(l.reallocBuffer=function(e){var a;try{var r=Q;a=new ArrayBuffer(e),new Int8Array(a).set(r)}catch(e){return!1}return!!he(a)&&a});try{Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get)(new ArrayBuffer(4))}catch(a){}var Y=l.TOTAL_STACK||5242880,J=l.TOTAL_MEMORY||16777216;function P(e){for(;e.length>0;){var a=e.shift();if("function"!=typeof a){var r=a.func;"number"==typeof r?void 0===a.arg?l.dynCall_v(r):l.dynCall_vi(r,a.arg):r(void 0===a.arg?null:a.arg)}else a()}}J>>0};i(),l.getRandomValue=i}catch(e){try{var t=r(60),n=function(){var e=t.randomBytes(4);return(e[0]<<24|e[1]<<16|e[2]<<8|e[3])>>>0};n(),l.getRandomValue=n}catch(e){throw"No secure random number generator found"}}}];function oe(e){return l.___errno_location&&(z[l.___errno_location()>>2]=e),e}M=37904,T.push(),l.STATIC_BASE=1024,l.STATIC_BUMP=36880,U=M+=16,F=v((q=v(M=M+4+15&-16))+Y),z[U>>2]=F;var se=!1;function le(e){for(var a=[],r=0;r255&&(se&&B(!1,"Character code "+i+" ("+String.fromCharCode(i)+") at offset "+r+" not in 0x00-0xFF."),i&=255),a.push(String.fromCharCode(i))}return a.join("")}var ce="function"==typeof atob?atob:function(e){var a,r,i,t,n,o,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l="",c=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{a=s.indexOf(e.charAt(c++))<<2|(t=s.indexOf(e.charAt(c++)))>>4,r=(15&t)<<4|(n=s.indexOf(e.charAt(c++)))>>2,i=(3&n)<<6|(o=s.indexOf(e.charAt(c++))),l+=String.fromCharCode(a),64!==n&&(l+=String.fromCharCode(r)),64!==o&&(l+=String.fromCharCode(i))}while(c>2]>a)return!1;var r=J;for(J=Math.max(J,16777216);J>2];)J=J<=536870912?H(2*J,e):Math.min(H((3*J+2147483648)/4,e),a);var i=l.reallocBuffer(J);return i&&i.byteLength==J?(N(i),G(),!0):(J=r,!1)},j:function(){return J},i:function(){pe("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+J+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},e:function(e,a,r,i){pe("Assertion failed: "+C(e)+", at: "+[a?C(a):"unknown filename",r,i?C(i):"unknown function"])},f:oe,c:function(){l.abort()},d:function(e){return ne[e]()},h:function(e,a,r){return x.set(x.subarray(a,a+r),e),e},g:function(e){switch(e){case 30:return 16384;case 85:return 131068;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return oe(22),-1},a:U,b:q};var de=l.asm(l.asmGlobalArg,l.asmLibraryArg,E);l.asm=de,l.___errno_location=function(){return l.asm.l.apply(null,arguments)},l._crypto_aead_chacha20poly1305_abytes=function(){return l.asm.m.apply(null,arguments)},l._crypto_aead_chacha20poly1305_decrypt=function(){return l.asm.n.apply(null,arguments)},l._crypto_aead_chacha20poly1305_decrypt_detached=function(){return l.asm.o.apply(null,arguments)},l._crypto_aead_chacha20poly1305_encrypt=function(){return l.asm.p.apply(null,arguments)},l._crypto_aead_chacha20poly1305_encrypt_detached=function(){return l.asm.q.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_abytes=function(){return l.asm.r.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_decrypt=function(){return l.asm.s.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_decrypt_detached=function(){return l.asm.t.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_encrypt=function(){return l.asm.u.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_encrypt_detached=function(){return l.asm.v.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_keybytes=function(){return l.asm.w.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_keygen=function(){return l.asm.x.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_messagebytes_max=function(){return l.asm.y.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_npubbytes=function(){return l.asm.z.apply(null,arguments)},l._crypto_aead_chacha20poly1305_ietf_nsecbytes=function(){return l.asm.A.apply(null,arguments)},l._crypto_aead_chacha20poly1305_keybytes=function(){return l.asm.B.apply(null,arguments)},l._crypto_aead_chacha20poly1305_keygen=function(){return l.asm.C.apply(null,arguments)},l._crypto_aead_chacha20poly1305_messagebytes_max=function(){return l.asm.D.apply(null,arguments)},l._crypto_aead_chacha20poly1305_npubbytes=function(){return l.asm.E.apply(null,arguments)},l._crypto_aead_chacha20poly1305_nsecbytes=function(){return l.asm.F.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_abytes=function(){return l.asm.G.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_decrypt=function(){return l.asm.H.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=function(){return l.asm.I.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_encrypt=function(){return l.asm.J.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=function(){return l.asm.K.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_keybytes=function(){return l.asm.L.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_keygen=function(){return l.asm.M.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=function(){return l.asm.N.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_npubbytes=function(){return l.asm.O.apply(null,arguments)},l._crypto_aead_xchacha20poly1305_ietf_nsecbytes=function(){return l.asm.P.apply(null,arguments)},l._crypto_auth=function(){return l.asm.Q.apply(null,arguments)},l._crypto_auth_bytes=function(){return l.asm.R.apply(null,arguments)},l._crypto_auth_hmacsha256=function(){return l.asm.S.apply(null,arguments)},l._crypto_auth_hmacsha256_bytes=function(){return l.asm.T.apply(null,arguments)},l._crypto_auth_hmacsha256_final=function(){return l.asm.U.apply(null,arguments)},l._crypto_auth_hmacsha256_init=function(){return l.asm.V.apply(null,arguments)},l._crypto_auth_hmacsha256_keybytes=function(){return l.asm.W.apply(null,arguments)},l._crypto_auth_hmacsha256_keygen=function(){return l.asm.X.apply(null,arguments)},l._crypto_auth_hmacsha256_statebytes=function(){return l.asm.Y.apply(null,arguments)},l._crypto_auth_hmacsha256_update=function(){return l.asm.Z.apply(null,arguments)},l._crypto_auth_hmacsha256_verify=function(){return l.asm._.apply(null,arguments)},l._crypto_auth_hmacsha512=function(){return l.asm.$.apply(null,arguments)},l._crypto_auth_hmacsha512256=function(){return l.asm.aa.apply(null,arguments)},l._crypto_auth_hmacsha512256_bytes=function(){return l.asm.ba.apply(null,arguments)},l._crypto_auth_hmacsha512256_final=function(){return l.asm.ca.apply(null,arguments)},l._crypto_auth_hmacsha512256_init=function(){return l.asm.da.apply(null,arguments)},l._crypto_auth_hmacsha512256_keybytes=function(){return l.asm.ea.apply(null,arguments)},l._crypto_auth_hmacsha512256_keygen=function(){return l.asm.fa.apply(null,arguments)},l._crypto_auth_hmacsha512256_statebytes=function(){return l.asm.ga.apply(null,arguments)},l._crypto_auth_hmacsha512256_update=function(){return l.asm.ha.apply(null,arguments)},l._crypto_auth_hmacsha512256_verify=function(){return l.asm.ia.apply(null,arguments)},l._crypto_auth_hmacsha512_bytes=function(){return l.asm.ja.apply(null,arguments)},l._crypto_auth_hmacsha512_final=function(){return l.asm.ka.apply(null,arguments)},l._crypto_auth_hmacsha512_init=function(){return l.asm.la.apply(null,arguments)},l._crypto_auth_hmacsha512_keybytes=function(){return l.asm.ma.apply(null,arguments)},l._crypto_auth_hmacsha512_keygen=function(){return l.asm.na.apply(null,arguments)},l._crypto_auth_hmacsha512_statebytes=function(){return l.asm.oa.apply(null,arguments)},l._crypto_auth_hmacsha512_update=function(){return l.asm.pa.apply(null,arguments)},l._crypto_auth_hmacsha512_verify=function(){return l.asm.qa.apply(null,arguments)},l._crypto_auth_keybytes=function(){return l.asm.ra.apply(null,arguments)},l._crypto_auth_keygen=function(){return l.asm.sa.apply(null,arguments)},l._crypto_auth_primitive=function(){return l.asm.ta.apply(null,arguments)},l._crypto_auth_verify=function(){return l.asm.ua.apply(null,arguments)},l._crypto_box=function(){return l.asm.va.apply(null,arguments)},l._crypto_box_afternm=function(){return l.asm.wa.apply(null,arguments)},l._crypto_box_beforenm=function(){return l.asm.xa.apply(null,arguments)},l._crypto_box_beforenmbytes=function(){return l.asm.ya.apply(null,arguments)},l._crypto_box_boxzerobytes=function(){return l.asm.za.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_beforenm=function(){return l.asm.Aa.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_beforenmbytes=function(){return l.asm.Ba.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_detached=function(){return l.asm.Ca.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_detached_afternm=function(){return l.asm.Da.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_easy=function(){return l.asm.Ea.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_easy_afternm=function(){return l.asm.Fa.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_keypair=function(){return l.asm.Ga.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_macbytes=function(){return l.asm.Ha.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_messagebytes_max=function(){return l.asm.Ia.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_noncebytes=function(){return l.asm.Ja.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_open_detached=function(){return l.asm.Ka.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_open_detached_afternm=function(){return l.asm.La.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_open_easy=function(){return l.asm.Ma.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_open_easy_afternm=function(){return l.asm.Na.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_publickeybytes=function(){return l.asm.Oa.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_seal=function(){return l.asm.Pa.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_seal_open=function(){return l.asm.Qa.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_sealbytes=function(){return l.asm.Ra.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_secretkeybytes=function(){return l.asm.Sa.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_seed_keypair=function(){return l.asm.Ta.apply(null,arguments)},l._crypto_box_curve25519xchacha20poly1305_seedbytes=function(){return l.asm.Ua.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305=function(){return l.asm.Va.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_afternm=function(){return l.asm.Wa.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_beforenm=function(){return l.asm.Xa.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_beforenmbytes=function(){return l.asm.Ya.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_boxzerobytes=function(){return l.asm.Za.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_keypair=function(){return l.asm._a.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_macbytes=function(){return l.asm.$a.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_messagebytes_max=function(){return l.asm.ab.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_noncebytes=function(){return l.asm.bb.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_open=function(){return l.asm.cb.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_open_afternm=function(){return l.asm.db.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_publickeybytes=function(){return l.asm.eb.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_secretkeybytes=function(){return l.asm.fb.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_seed_keypair=function(){return l.asm.gb.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_seedbytes=function(){return l.asm.hb.apply(null,arguments)},l._crypto_box_curve25519xsalsa20poly1305_zerobytes=function(){return l.asm.ib.apply(null,arguments)},l._crypto_box_detached=function(){return l.asm.jb.apply(null,arguments)},l._crypto_box_detached_afternm=function(){return l.asm.kb.apply(null,arguments)},l._crypto_box_easy=function(){return l.asm.lb.apply(null,arguments)},l._crypto_box_easy_afternm=function(){return l.asm.mb.apply(null,arguments)},l._crypto_box_keypair=function(){return l.asm.nb.apply(null,arguments)},l._crypto_box_macbytes=function(){return l.asm.ob.apply(null,arguments)},l._crypto_box_messagebytes_max=function(){return l.asm.pb.apply(null,arguments)},l._crypto_box_noncebytes=function(){return l.asm.qb.apply(null,arguments)},l._crypto_box_open=function(){return l.asm.rb.apply(null,arguments)},l._crypto_box_open_afternm=function(){return l.asm.sb.apply(null,arguments)},l._crypto_box_open_detached=function(){return l.asm.tb.apply(null,arguments)},l._crypto_box_open_detached_afternm=function(){return l.asm.ub.apply(null,arguments)},l._crypto_box_open_easy=function(){return l.asm.vb.apply(null,arguments)},l._crypto_box_open_easy_afternm=function(){return l.asm.wb.apply(null,arguments)},l._crypto_box_primitive=function(){return l.asm.xb.apply(null,arguments)},l._crypto_box_publickeybytes=function(){return l.asm.yb.apply(null,arguments)},l._crypto_box_seal=function(){return l.asm.zb.apply(null,arguments)},l._crypto_box_seal_open=function(){return l.asm.Ab.apply(null,arguments)},l._crypto_box_sealbytes=function(){return l.asm.Bb.apply(null,arguments)},l._crypto_box_secretkeybytes=function(){return l.asm.Cb.apply(null,arguments)},l._crypto_box_seed_keypair=function(){return l.asm.Db.apply(null,arguments)},l._crypto_box_seedbytes=function(){return l.asm.Eb.apply(null,arguments)},l._crypto_box_zerobytes=function(){return l.asm.Fb.apply(null,arguments)},l._crypto_core_ed25519_add=function(){return l.asm.Gb.apply(null,arguments)},l._crypto_core_ed25519_bytes=function(){return l.asm.Hb.apply(null,arguments)},l._crypto_core_ed25519_from_uniform=function(){return l.asm.Ib.apply(null,arguments)},l._crypto_core_ed25519_is_valid_point=function(){return l.asm.Jb.apply(null,arguments)},l._crypto_core_ed25519_nonreducedscalarbytes=function(){return l.asm.Kb.apply(null,arguments)},l._crypto_core_ed25519_scalar_add=function(){return l.asm.Lb.apply(null,arguments)},l._crypto_core_ed25519_scalar_complement=function(){return l.asm.Mb.apply(null,arguments)},l._crypto_core_ed25519_scalar_invert=function(){return l.asm.Nb.apply(null,arguments)},l._crypto_core_ed25519_scalar_negate=function(){return l.asm.Ob.apply(null,arguments)},l._crypto_core_ed25519_scalar_random=function(){return l.asm.Pb.apply(null,arguments)},l._crypto_core_ed25519_scalar_reduce=function(){return l.asm.Qb.apply(null,arguments)},l._crypto_core_ed25519_scalar_sub=function(){return l.asm.Rb.apply(null,arguments)},l._crypto_core_ed25519_scalarbytes=function(){return l.asm.Sb.apply(null,arguments)},l._crypto_core_ed25519_sub=function(){return l.asm.Tb.apply(null,arguments)},l._crypto_core_ed25519_uniformbytes=function(){return l.asm.Ub.apply(null,arguments)},l._crypto_core_hchacha20=function(){return l.asm.Vb.apply(null,arguments)},l._crypto_core_hchacha20_constbytes=function(){return l.asm.Wb.apply(null,arguments)},l._crypto_core_hchacha20_inputbytes=function(){return l.asm.Xb.apply(null,arguments)},l._crypto_core_hchacha20_keybytes=function(){return l.asm.Yb.apply(null,arguments)},l._crypto_core_hchacha20_outputbytes=function(){return l.asm.Zb.apply(null,arguments)},l._crypto_core_hsalsa20=function(){return l.asm._b.apply(null,arguments)},l._crypto_core_hsalsa20_constbytes=function(){return l.asm.$b.apply(null,arguments)},l._crypto_core_hsalsa20_inputbytes=function(){return l.asm.ac.apply(null,arguments)},l._crypto_core_hsalsa20_keybytes=function(){return l.asm.bc.apply(null,arguments)},l._crypto_core_hsalsa20_outputbytes=function(){return l.asm.cc.apply(null,arguments)},l._crypto_core_salsa20=function(){return l.asm.dc.apply(null,arguments)},l._crypto_core_salsa2012=function(){return l.asm.ec.apply(null,arguments)},l._crypto_core_salsa2012_constbytes=function(){return l.asm.fc.apply(null,arguments)},l._crypto_core_salsa2012_inputbytes=function(){return l.asm.gc.apply(null,arguments)},l._crypto_core_salsa2012_keybytes=function(){return l.asm.hc.apply(null,arguments)},l._crypto_core_salsa2012_outputbytes=function(){return l.asm.ic.apply(null,arguments)},l._crypto_core_salsa208=function(){return l.asm.jc.apply(null,arguments)},l._crypto_core_salsa208_constbytes=function(){return l.asm.kc.apply(null,arguments)},l._crypto_core_salsa208_inputbytes=function(){return l.asm.lc.apply(null,arguments)},l._crypto_core_salsa208_keybytes=function(){return l.asm.mc.apply(null,arguments)},l._crypto_core_salsa208_outputbytes=function(){return l.asm.nc.apply(null,arguments)},l._crypto_core_salsa20_constbytes=function(){return l.asm.oc.apply(null,arguments)},l._crypto_core_salsa20_inputbytes=function(){return l.asm.pc.apply(null,arguments)},l._crypto_core_salsa20_keybytes=function(){return l.asm.qc.apply(null,arguments)},l._crypto_core_salsa20_outputbytes=function(){return l.asm.rc.apply(null,arguments)},l._crypto_generichash=function(){return l.asm.sc.apply(null,arguments)},l._crypto_generichash_blake2b=function(){return l.asm.tc.apply(null,arguments)},l._crypto_generichash_blake2b_bytes=function(){return l.asm.uc.apply(null,arguments)},l._crypto_generichash_blake2b_bytes_max=function(){return l.asm.vc.apply(null,arguments)},l._crypto_generichash_blake2b_bytes_min=function(){return l.asm.wc.apply(null,arguments)},l._crypto_generichash_blake2b_final=function(){return l.asm.xc.apply(null,arguments)},l._crypto_generichash_blake2b_init=function(){return l.asm.yc.apply(null,arguments)},l._crypto_generichash_blake2b_init_salt_personal=function(){return l.asm.zc.apply(null,arguments)},l._crypto_generichash_blake2b_keybytes=function(){return l.asm.Ac.apply(null,arguments)},l._crypto_generichash_blake2b_keybytes_max=function(){return l.asm.Bc.apply(null,arguments)},l._crypto_generichash_blake2b_keybytes_min=function(){return l.asm.Cc.apply(null,arguments)},l._crypto_generichash_blake2b_keygen=function(){return l.asm.Dc.apply(null,arguments)},l._crypto_generichash_blake2b_personalbytes=function(){return l.asm.Ec.apply(null,arguments)},l._crypto_generichash_blake2b_salt_personal=function(){return l.asm.Fc.apply(null,arguments)},l._crypto_generichash_blake2b_saltbytes=function(){return l.asm.Gc.apply(null,arguments)},l._crypto_generichash_blake2b_statebytes=function(){return l.asm.Hc.apply(null,arguments)},l._crypto_generichash_blake2b_update=function(){return l.asm.Ic.apply(null,arguments)},l._crypto_generichash_bytes=function(){return l.asm.Jc.apply(null,arguments)},l._crypto_generichash_bytes_max=function(){return l.asm.Kc.apply(null,arguments)},l._crypto_generichash_bytes_min=function(){return l.asm.Lc.apply(null,arguments)},l._crypto_generichash_final=function(){return l.asm.Mc.apply(null,arguments)},l._crypto_generichash_init=function(){return l.asm.Nc.apply(null,arguments)},l._crypto_generichash_keybytes=function(){return l.asm.Oc.apply(null,arguments)},l._crypto_generichash_keybytes_max=function(){return l.asm.Pc.apply(null,arguments)},l._crypto_generichash_keybytes_min=function(){return l.asm.Qc.apply(null,arguments)},l._crypto_generichash_keygen=function(){return l.asm.Rc.apply(null,arguments)},l._crypto_generichash_primitive=function(){return l.asm.Sc.apply(null,arguments)},l._crypto_generichash_statebytes=function(){return l.asm.Tc.apply(null,arguments)},l._crypto_generichash_update=function(){return l.asm.Uc.apply(null,arguments)},l._crypto_hash=function(){return l.asm.Vc.apply(null,arguments)},l._crypto_hash_bytes=function(){return l.asm.Wc.apply(null,arguments)},l._crypto_hash_primitive=function(){return l.asm.Xc.apply(null,arguments)},l._crypto_hash_sha256=function(){return l.asm.Yc.apply(null,arguments)},l._crypto_hash_sha256_bytes=function(){return l.asm.Zc.apply(null,arguments)},l._crypto_hash_sha256_final=function(){return l.asm._c.apply(null,arguments)},l._crypto_hash_sha256_init=function(){return l.asm.$c.apply(null,arguments)},l._crypto_hash_sha256_statebytes=function(){return l.asm.ad.apply(null,arguments)},l._crypto_hash_sha256_update=function(){return l.asm.bd.apply(null,arguments)},l._crypto_hash_sha512=function(){return l.asm.cd.apply(null,arguments)},l._crypto_hash_sha512_bytes=function(){return l.asm.dd.apply(null,arguments)},l._crypto_hash_sha512_final=function(){return l.asm.ed.apply(null,arguments)},l._crypto_hash_sha512_init=function(){return l.asm.fd.apply(null,arguments)},l._crypto_hash_sha512_statebytes=function(){return l.asm.gd.apply(null,arguments)},l._crypto_hash_sha512_update=function(){return l.asm.hd.apply(null,arguments)},l._crypto_kdf_blake2b_bytes_max=function(){return l.asm.id.apply(null,arguments)},l._crypto_kdf_blake2b_bytes_min=function(){return l.asm.jd.apply(null,arguments)},l._crypto_kdf_blake2b_contextbytes=function(){return l.asm.kd.apply(null,arguments)},l._crypto_kdf_blake2b_derive_from_key=function(){return l.asm.ld.apply(null,arguments)},l._crypto_kdf_blake2b_keybytes=function(){return l.asm.md.apply(null,arguments)},l._crypto_kdf_bytes_max=function(){return l.asm.nd.apply(null,arguments)},l._crypto_kdf_bytes_min=function(){return l.asm.od.apply(null,arguments)},l._crypto_kdf_contextbytes=function(){return l.asm.pd.apply(null,arguments)},l._crypto_kdf_derive_from_key=function(){return l.asm.qd.apply(null,arguments)},l._crypto_kdf_keybytes=function(){return l.asm.rd.apply(null,arguments)},l._crypto_kdf_keygen=function(){return l.asm.sd.apply(null,arguments)},l._crypto_kdf_primitive=function(){return l.asm.td.apply(null,arguments)},l._crypto_kx_client_session_keys=function(){return l.asm.ud.apply(null,arguments)},l._crypto_kx_keypair=function(){return l.asm.vd.apply(null,arguments)},l._crypto_kx_primitive=function(){return l.asm.wd.apply(null,arguments)},l._crypto_kx_publickeybytes=function(){return l.asm.xd.apply(null,arguments)},l._crypto_kx_secretkeybytes=function(){return l.asm.yd.apply(null,arguments)},l._crypto_kx_seed_keypair=function(){return l.asm.zd.apply(null,arguments)},l._crypto_kx_seedbytes=function(){return l.asm.Ad.apply(null,arguments)},l._crypto_kx_server_session_keys=function(){return l.asm.Bd.apply(null,arguments)},l._crypto_kx_sessionkeybytes=function(){return l.asm.Cd.apply(null,arguments)},l._crypto_onetimeauth=function(){return l.asm.Dd.apply(null,arguments)},l._crypto_onetimeauth_bytes=function(){return l.asm.Ed.apply(null,arguments)},l._crypto_onetimeauth_final=function(){return l.asm.Fd.apply(null,arguments)},l._crypto_onetimeauth_init=function(){return l.asm.Gd.apply(null,arguments)},l._crypto_onetimeauth_keybytes=function(){return l.asm.Hd.apply(null,arguments)},l._crypto_onetimeauth_keygen=function(){return l.asm.Id.apply(null,arguments)},l._crypto_onetimeauth_poly1305=function(){return l.asm.Jd.apply(null,arguments)},l._crypto_onetimeauth_poly1305_bytes=function(){return l.asm.Kd.apply(null,arguments)},l._crypto_onetimeauth_poly1305_final=function(){return l.asm.Ld.apply(null,arguments)},l._crypto_onetimeauth_poly1305_init=function(){return l.asm.Md.apply(null,arguments)},l._crypto_onetimeauth_poly1305_keybytes=function(){return l.asm.Nd.apply(null,arguments)},l._crypto_onetimeauth_poly1305_keygen=function(){return l.asm.Od.apply(null,arguments)},l._crypto_onetimeauth_poly1305_statebytes=function(){return l.asm.Pd.apply(null,arguments)},l._crypto_onetimeauth_poly1305_update=function(){return l.asm.Qd.apply(null,arguments)},l._crypto_onetimeauth_poly1305_verify=function(){return l.asm.Rd.apply(null,arguments)},l._crypto_onetimeauth_primitive=function(){return l.asm.Sd.apply(null,arguments)},l._crypto_onetimeauth_statebytes=function(){return l.asm.Td.apply(null,arguments)},l._crypto_onetimeauth_update=function(){return l.asm.Ud.apply(null,arguments)},l._crypto_onetimeauth_verify=function(){return l.asm.Vd.apply(null,arguments)},l._crypto_pwhash=function(){return l.asm.Wd.apply(null,arguments)},l._crypto_pwhash_alg_argon2i13=function(){return l.asm.Xd.apply(null,arguments)},l._crypto_pwhash_alg_argon2id13=function(){return l.asm.Yd.apply(null,arguments)},l._crypto_pwhash_alg_default=function(){return l.asm.Zd.apply(null,arguments)},l._crypto_pwhash_argon2i=function(){return l.asm._d.apply(null,arguments)},l._crypto_pwhash_argon2i_alg_argon2i13=function(){return l.asm.$d.apply(null,arguments)},l._crypto_pwhash_argon2i_bytes_max=function(){return l.asm.ae.apply(null,arguments)},l._crypto_pwhash_argon2i_bytes_min=function(){return l.asm.be.apply(null,arguments)},l._crypto_pwhash_argon2i_memlimit_interactive=function(){return l.asm.ce.apply(null,arguments)},l._crypto_pwhash_argon2i_memlimit_max=function(){return l.asm.de.apply(null,arguments)},l._crypto_pwhash_argon2i_memlimit_min=function(){return l.asm.ee.apply(null,arguments)},l._crypto_pwhash_argon2i_memlimit_moderate=function(){return l.asm.fe.apply(null,arguments)},l._crypto_pwhash_argon2i_memlimit_sensitive=function(){return l.asm.ge.apply(null,arguments)},l._crypto_pwhash_argon2i_opslimit_interactive=function(){return l.asm.he.apply(null,arguments)},l._crypto_pwhash_argon2i_opslimit_max=function(){return l.asm.ie.apply(null,arguments)},l._crypto_pwhash_argon2i_opslimit_min=function(){return l.asm.je.apply(null,arguments)},l._crypto_pwhash_argon2i_opslimit_moderate=function(){return l.asm.ke.apply(null,arguments)},l._crypto_pwhash_argon2i_opslimit_sensitive=function(){return l.asm.le.apply(null,arguments)},l._crypto_pwhash_argon2i_passwd_max=function(){return l.asm.me.apply(null,arguments)},l._crypto_pwhash_argon2i_passwd_min=function(){return l.asm.ne.apply(null,arguments)},l._crypto_pwhash_argon2i_saltbytes=function(){return l.asm.oe.apply(null,arguments)},l._crypto_pwhash_argon2i_str=function(){return l.asm.pe.apply(null,arguments)},l._crypto_pwhash_argon2i_str_needs_rehash=function(){return l.asm.qe.apply(null,arguments)},l._crypto_pwhash_argon2i_str_verify=function(){return l.asm.re.apply(null,arguments)},l._crypto_pwhash_argon2i_strbytes=function(){return l.asm.se.apply(null,arguments)},l._crypto_pwhash_argon2i_strprefix=function(){return l.asm.te.apply(null,arguments)},l._crypto_pwhash_argon2id=function(){return l.asm.ue.apply(null,arguments)},l._crypto_pwhash_argon2id_alg_argon2id13=function(){return l.asm.ve.apply(null,arguments)},l._crypto_pwhash_argon2id_bytes_max=function(){return l.asm.we.apply(null,arguments)},l._crypto_pwhash_argon2id_bytes_min=function(){return l.asm.xe.apply(null,arguments)},l._crypto_pwhash_argon2id_memlimit_interactive=function(){return l.asm.ye.apply(null,arguments)},l._crypto_pwhash_argon2id_memlimit_max=function(){return l.asm.ze.apply(null,arguments)},l._crypto_pwhash_argon2id_memlimit_min=function(){return l.asm.Ae.apply(null,arguments)},l._crypto_pwhash_argon2id_memlimit_moderate=function(){return l.asm.Be.apply(null,arguments)},l._crypto_pwhash_argon2id_memlimit_sensitive=function(){return l.asm.Ce.apply(null,arguments)},l._crypto_pwhash_argon2id_opslimit_interactive=function(){return l.asm.De.apply(null,arguments)},l._crypto_pwhash_argon2id_opslimit_max=function(){return l.asm.Ee.apply(null,arguments)},l._crypto_pwhash_argon2id_opslimit_min=function(){return l.asm.Fe.apply(null,arguments)},l._crypto_pwhash_argon2id_opslimit_moderate=function(){return l.asm.Ge.apply(null,arguments)},l._crypto_pwhash_argon2id_opslimit_sensitive=function(){return l.asm.He.apply(null,arguments)},l._crypto_pwhash_argon2id_passwd_max=function(){return l.asm.Ie.apply(null,arguments)},l._crypto_pwhash_argon2id_passwd_min=function(){return l.asm.Je.apply(null,arguments)},l._crypto_pwhash_argon2id_saltbytes=function(){return l.asm.Ke.apply(null,arguments)},l._crypto_pwhash_argon2id_str=function(){return l.asm.Le.apply(null,arguments)},l._crypto_pwhash_argon2id_str_needs_rehash=function(){return l.asm.Me.apply(null,arguments)},l._crypto_pwhash_argon2id_str_verify=function(){return l.asm.Ne.apply(null,arguments)},l._crypto_pwhash_argon2id_strbytes=function(){return l.asm.Oe.apply(null,arguments)},l._crypto_pwhash_argon2id_strprefix=function(){return l.asm.Pe.apply(null,arguments)},l._crypto_pwhash_bytes_max=function(){return l.asm.Qe.apply(null,arguments)},l._crypto_pwhash_bytes_min=function(){return l.asm.Re.apply(null,arguments)},l._crypto_pwhash_memlimit_interactive=function(){return l.asm.Se.apply(null,arguments)},l._crypto_pwhash_memlimit_max=function(){return l.asm.Te.apply(null,arguments)},l._crypto_pwhash_memlimit_min=function(){return l.asm.Ue.apply(null,arguments)},l._crypto_pwhash_memlimit_moderate=function(){return l.asm.Ve.apply(null,arguments)},l._crypto_pwhash_memlimit_sensitive=function(){return l.asm.We.apply(null,arguments)},l._crypto_pwhash_opslimit_interactive=function(){return l.asm.Xe.apply(null,arguments)},l._crypto_pwhash_opslimit_max=function(){return l.asm.Ye.apply(null,arguments)},l._crypto_pwhash_opslimit_min=function(){return l.asm.Ze.apply(null,arguments)},l._crypto_pwhash_opslimit_moderate=function(){return l.asm._e.apply(null,arguments)},l._crypto_pwhash_opslimit_sensitive=function(){return l.asm.$e.apply(null,arguments)},l._crypto_pwhash_passwd_max=function(){return l.asm.af.apply(null,arguments)},l._crypto_pwhash_passwd_min=function(){return l.asm.bf.apply(null,arguments)},l._crypto_pwhash_primitive=function(){return l.asm.cf.apply(null,arguments)},l._crypto_pwhash_saltbytes=function(){return l.asm.df.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256=function(){return l.asm.ef.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_bytes_max=function(){return l.asm.ff.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_bytes_min=function(){return l.asm.gf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_ll=function(){return l.asm.hf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_memlimit_interactive=function(){return l.asm.jf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_memlimit_max=function(){return l.asm.kf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_memlimit_min=function(){return l.asm.lf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive=function(){return l.asm.mf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_opslimit_interactive=function(){return l.asm.nf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_opslimit_max=function(){return l.asm.of.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_opslimit_min=function(){return l.asm.pf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive=function(){return l.asm.qf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_passwd_max=function(){return l.asm.rf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_passwd_min=function(){return l.asm.sf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_saltbytes=function(){return l.asm.tf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_str=function(){return l.asm.uf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_str_needs_rehash=function(){return l.asm.vf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_str_verify=function(){return l.asm.wf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_strbytes=function(){return l.asm.xf.apply(null,arguments)},l._crypto_pwhash_scryptsalsa208sha256_strprefix=function(){return l.asm.yf.apply(null,arguments)},l._crypto_pwhash_str=function(){return l.asm.zf.apply(null,arguments)},l._crypto_pwhash_str_alg=function(){return l.asm.Af.apply(null,arguments)},l._crypto_pwhash_str_needs_rehash=function(){return l.asm.Bf.apply(null,arguments)},l._crypto_pwhash_str_verify=function(){return l.asm.Cf.apply(null,arguments)},l._crypto_pwhash_strbytes=function(){return l.asm.Df.apply(null,arguments)},l._crypto_pwhash_strprefix=function(){return l.asm.Ef.apply(null,arguments)},l._crypto_scalarmult=function(){return l.asm.Ff.apply(null,arguments)},l._crypto_scalarmult_base=function(){return l.asm.Gf.apply(null,arguments)},l._crypto_scalarmult_bytes=function(){return l.asm.Hf.apply(null,arguments)},l._crypto_scalarmult_curve25519=function(){return l.asm.If.apply(null,arguments)},l._crypto_scalarmult_curve25519_base=function(){return l.asm.Jf.apply(null,arguments)},l._crypto_scalarmult_curve25519_bytes=function(){return l.asm.Kf.apply(null,arguments)},l._crypto_scalarmult_curve25519_scalarbytes=function(){return l.asm.Lf.apply(null,arguments)},l._crypto_scalarmult_ed25519=function(){return l.asm.Mf.apply(null,arguments)},l._crypto_scalarmult_ed25519_base=function(){return l.asm.Nf.apply(null,arguments)},l._crypto_scalarmult_ed25519_base_noclamp=function(){return l.asm.Of.apply(null,arguments)},l._crypto_scalarmult_ed25519_bytes=function(){return l.asm.Pf.apply(null,arguments)},l._crypto_scalarmult_ed25519_noclamp=function(){return l.asm.Qf.apply(null,arguments)},l._crypto_scalarmult_ed25519_scalarbytes=function(){return l.asm.Rf.apply(null,arguments)},l._crypto_scalarmult_primitive=function(){return l.asm.Sf.apply(null,arguments)},l._crypto_scalarmult_scalarbytes=function(){return l.asm.Tf.apply(null,arguments)},l._crypto_secretbox=function(){return l.asm.Uf.apply(null,arguments)},l._crypto_secretbox_boxzerobytes=function(){return l.asm.Vf.apply(null,arguments)},l._crypto_secretbox_detached=function(){return l.asm.Wf.apply(null,arguments)},l._crypto_secretbox_easy=function(){return l.asm.Xf.apply(null,arguments)},l._crypto_secretbox_keybytes=function(){return l.asm.Yf.apply(null,arguments)},l._crypto_secretbox_keygen=function(){return l.asm.Zf.apply(null,arguments)},l._crypto_secretbox_macbytes=function(){return l.asm._f.apply(null,arguments)},l._crypto_secretbox_messagebytes_max=function(){return l.asm.$f.apply(null,arguments)},l._crypto_secretbox_noncebytes=function(){return l.asm.ag.apply(null,arguments)},l._crypto_secretbox_open=function(){return l.asm.bg.apply(null,arguments)},l._crypto_secretbox_open_detached=function(){return l.asm.cg.apply(null,arguments)},l._crypto_secretbox_open_easy=function(){return l.asm.dg.apply(null,arguments)},l._crypto_secretbox_primitive=function(){return l.asm.eg.apply(null,arguments)},l._crypto_secretbox_xchacha20poly1305_detached=function(){return l.asm.fg.apply(null,arguments)},l._crypto_secretbox_xchacha20poly1305_easy=function(){return l.asm.gg.apply(null,arguments)},l._crypto_secretbox_xchacha20poly1305_keybytes=function(){return l.asm.hg.apply(null,arguments)},l._crypto_secretbox_xchacha20poly1305_macbytes=function(){return l.asm.ig.apply(null,arguments)},l._crypto_secretbox_xchacha20poly1305_messagebytes_max=function(){return l.asm.jg.apply(null,arguments)},l._crypto_secretbox_xchacha20poly1305_noncebytes=function(){return l.asm.kg.apply(null,arguments)},l._crypto_secretbox_xchacha20poly1305_open_detached=function(){return l.asm.lg.apply(null,arguments)},l._crypto_secretbox_xchacha20poly1305_open_easy=function(){return l.asm.mg.apply(null,arguments)},l._crypto_secretbox_xsalsa20poly1305=function(){return l.asm.ng.apply(null,arguments)},l._crypto_secretbox_xsalsa20poly1305_boxzerobytes=function(){return l.asm.og.apply(null,arguments)},l._crypto_secretbox_xsalsa20poly1305_keybytes=function(){return l.asm.pg.apply(null,arguments)},l._crypto_secretbox_xsalsa20poly1305_keygen=function(){return l.asm.qg.apply(null,arguments)},l._crypto_secretbox_xsalsa20poly1305_macbytes=function(){return l.asm.rg.apply(null,arguments)},l._crypto_secretbox_xsalsa20poly1305_messagebytes_max=function(){return l.asm.sg.apply(null,arguments)},l._crypto_secretbox_xsalsa20poly1305_noncebytes=function(){return l.asm.tg.apply(null,arguments)},l._crypto_secretbox_xsalsa20poly1305_open=function(){return l.asm.ug.apply(null,arguments)},l._crypto_secretbox_xsalsa20poly1305_zerobytes=function(){return l.asm.vg.apply(null,arguments)},l._crypto_secretbox_zerobytes=function(){return l.asm.wg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_abytes=function(){return l.asm.xg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_headerbytes=function(){return l.asm.yg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_init_pull=function(){return l.asm.zg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_init_push=function(){return l.asm.Ag.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_keybytes=function(){return l.asm.Bg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_keygen=function(){return l.asm.Cg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_messagebytes_max=function(){return l.asm.Dg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_pull=function(){return l.asm.Eg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_push=function(){return l.asm.Fg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_rekey=function(){return l.asm.Gg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_statebytes=function(){return l.asm.Hg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_tag_final=function(){return l.asm.Ig.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_tag_message=function(){return l.asm.Jg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_tag_push=function(){return l.asm.Kg.apply(null,arguments)},l._crypto_secretstream_xchacha20poly1305_tag_rekey=function(){return l.asm.Lg.apply(null,arguments)},l._crypto_shorthash=function(){return l.asm.Mg.apply(null,arguments)},l._crypto_shorthash_bytes=function(){return l.asm.Ng.apply(null,arguments)},l._crypto_shorthash_keybytes=function(){return l.asm.Og.apply(null,arguments)},l._crypto_shorthash_keygen=function(){return l.asm.Pg.apply(null,arguments)},l._crypto_shorthash_primitive=function(){return l.asm.Qg.apply(null,arguments)},l._crypto_shorthash_siphash24=function(){return l.asm.Rg.apply(null,arguments)},l._crypto_shorthash_siphash24_bytes=function(){return l.asm.Sg.apply(null,arguments)},l._crypto_shorthash_siphash24_keybytes=function(){return l.asm.Tg.apply(null,arguments)},l._crypto_shorthash_siphashx24=function(){return l.asm.Ug.apply(null,arguments)},l._crypto_shorthash_siphashx24_bytes=function(){return l.asm.Vg.apply(null,arguments)},l._crypto_shorthash_siphashx24_keybytes=function(){return l.asm.Wg.apply(null,arguments)},l._crypto_sign=function(){return l.asm.Xg.apply(null,arguments)},l._crypto_sign_bytes=function(){return l.asm.Yg.apply(null,arguments)},l._crypto_sign_detached=function(){return l.asm.Zg.apply(null,arguments)},l._crypto_sign_ed25519=function(){return l.asm._g.apply(null,arguments)},l._crypto_sign_ed25519_bytes=function(){return l.asm.$g.apply(null,arguments)},l._crypto_sign_ed25519_detached=function(){return l.asm.ah.apply(null,arguments)},l._crypto_sign_ed25519_keypair=function(){return l.asm.bh.apply(null,arguments)},l._crypto_sign_ed25519_messagebytes_max=function(){return l.asm.ch.apply(null,arguments)},l._crypto_sign_ed25519_open=function(){return l.asm.dh.apply(null,arguments)},l._crypto_sign_ed25519_pk_to_curve25519=function(){return l.asm.eh.apply(null,arguments)},l._crypto_sign_ed25519_publickeybytes=function(){return l.asm.fh.apply(null,arguments)},l._crypto_sign_ed25519_secretkeybytes=function(){return l.asm.gh.apply(null,arguments)},l._crypto_sign_ed25519_seed_keypair=function(){return l.asm.hh.apply(null,arguments)},l._crypto_sign_ed25519_seedbytes=function(){return l.asm.ih.apply(null,arguments)},l._crypto_sign_ed25519_sk_to_curve25519=function(){return l.asm.jh.apply(null,arguments)},l._crypto_sign_ed25519_sk_to_pk=function(){return l.asm.kh.apply(null,arguments)},l._crypto_sign_ed25519_sk_to_seed=function(){return l.asm.lh.apply(null,arguments)},l._crypto_sign_ed25519_verify_detached=function(){return l.asm.mh.apply(null,arguments)},l._crypto_sign_ed25519ph_final_create=function(){return l.asm.nh.apply(null,arguments)},l._crypto_sign_ed25519ph_final_verify=function(){return l.asm.oh.apply(null,arguments)},l._crypto_sign_ed25519ph_init=function(){return l.asm.ph.apply(null,arguments)},l._crypto_sign_ed25519ph_statebytes=function(){return l.asm.qh.apply(null,arguments)},l._crypto_sign_ed25519ph_update=function(){return l.asm.rh.apply(null,arguments)},l._crypto_sign_final_create=function(){return l.asm.sh.apply(null,arguments)},l._crypto_sign_final_verify=function(){return l.asm.th.apply(null,arguments)},l._crypto_sign_init=function(){return l.asm.uh.apply(null,arguments)},l._crypto_sign_keypair=function(){return l.asm.vh.apply(null,arguments)},l._crypto_sign_messagebytes_max=function(){return l.asm.wh.apply(null,arguments)},l._crypto_sign_open=function(){return l.asm.xh.apply(null,arguments)},l._crypto_sign_primitive=function(){return l.asm.yh.apply(null,arguments)},l._crypto_sign_publickeybytes=function(){return l.asm.zh.apply(null,arguments)},l._crypto_sign_secretkeybytes=function(){return l.asm.Ah.apply(null,arguments)},l._crypto_sign_seed_keypair=function(){return l.asm.Bh.apply(null,arguments)},l._crypto_sign_seedbytes=function(){return l.asm.Ch.apply(null,arguments)},l._crypto_sign_statebytes=function(){return l.asm.Dh.apply(null,arguments)},l._crypto_sign_update=function(){return l.asm.Eh.apply(null,arguments)},l._crypto_sign_verify_detached=function(){return l.asm.Fh.apply(null,arguments)},l._crypto_stream=function(){return l.asm.Gh.apply(null,arguments)},l._crypto_stream_chacha20=function(){return l.asm.Hh.apply(null,arguments)},l._crypto_stream_chacha20_ietf=function(){return l.asm.Ih.apply(null,arguments)},l._crypto_stream_chacha20_ietf_keybytes=function(){return l.asm.Jh.apply(null,arguments)},l._crypto_stream_chacha20_ietf_keygen=function(){return l.asm.Kh.apply(null,arguments)},l._crypto_stream_chacha20_ietf_messagebytes_max=function(){return l.asm.Lh.apply(null,arguments)},l._crypto_stream_chacha20_ietf_noncebytes=function(){return l.asm.Mh.apply(null,arguments)},l._crypto_stream_chacha20_ietf_xor=function(){return l.asm.Nh.apply(null,arguments)},l._crypto_stream_chacha20_ietf_xor_ic=function(){return l.asm.Oh.apply(null,arguments)},l._crypto_stream_chacha20_keybytes=function(){return l.asm.Ph.apply(null,arguments)},l._crypto_stream_chacha20_keygen=function(){return l.asm.Qh.apply(null,arguments)},l._crypto_stream_chacha20_messagebytes_max=function(){return l.asm.Rh.apply(null,arguments)},l._crypto_stream_chacha20_noncebytes=function(){return l.asm.Sh.apply(null,arguments)},l._crypto_stream_chacha20_xor=function(){return l.asm.Th.apply(null,arguments)},l._crypto_stream_chacha20_xor_ic=function(){return l.asm.Uh.apply(null,arguments)},l._crypto_stream_keybytes=function(){return l.asm.Vh.apply(null,arguments)},l._crypto_stream_keygen=function(){return l.asm.Wh.apply(null,arguments)},l._crypto_stream_messagebytes_max=function(){return l.asm.Xh.apply(null,arguments)},l._crypto_stream_noncebytes=function(){return l.asm.Yh.apply(null,arguments)},l._crypto_stream_primitive=function(){return l.asm.Zh.apply(null,arguments)},l._crypto_stream_salsa20=function(){return l.asm._h.apply(null,arguments)},l._crypto_stream_salsa2012=function(){return l.asm.$h.apply(null,arguments)},l._crypto_stream_salsa2012_keybytes=function(){return l.asm.ai.apply(null,arguments)},l._crypto_stream_salsa2012_keygen=function(){return l.asm.bi.apply(null,arguments)},l._crypto_stream_salsa2012_messagebytes_max=function(){return l.asm.ci.apply(null,arguments)},l._crypto_stream_salsa2012_noncebytes=function(){return l.asm.di.apply(null,arguments)},l._crypto_stream_salsa2012_xor=function(){return l.asm.ei.apply(null,arguments)},l._crypto_stream_salsa208=function(){return l.asm.fi.apply(null,arguments)},l._crypto_stream_salsa208_keybytes=function(){return l.asm.gi.apply(null,arguments)},l._crypto_stream_salsa208_keygen=function(){return l.asm.hi.apply(null,arguments)},l._crypto_stream_salsa208_messagebytes_max=function(){return l.asm.ii.apply(null,arguments)},l._crypto_stream_salsa208_noncebytes=function(){return l.asm.ji.apply(null,arguments)},l._crypto_stream_salsa208_xor=function(){return l.asm.ki.apply(null,arguments)},l._crypto_stream_salsa20_keybytes=function(){return l.asm.li.apply(null,arguments)},l._crypto_stream_salsa20_keygen=function(){return l.asm.mi.apply(null,arguments)},l._crypto_stream_salsa20_messagebytes_max=function(){return l.asm.ni.apply(null,arguments)},l._crypto_stream_salsa20_noncebytes=function(){return l.asm.oi.apply(null,arguments)},l._crypto_stream_salsa20_xor=function(){return l.asm.pi.apply(null,arguments)},l._crypto_stream_salsa20_xor_ic=function(){return l.asm.qi.apply(null,arguments)},l._crypto_stream_xchacha20=function(){return l.asm.ri.apply(null,arguments)},l._crypto_stream_xchacha20_keybytes=function(){return l.asm.si.apply(null,arguments)},l._crypto_stream_xchacha20_keygen=function(){return l.asm.ti.apply(null,arguments)},l._crypto_stream_xchacha20_messagebytes_max=function(){return l.asm.ui.apply(null,arguments)},l._crypto_stream_xchacha20_noncebytes=function(){return l.asm.vi.apply(null,arguments)},l._crypto_stream_xchacha20_xor=function(){return l.asm.wi.apply(null,arguments)},l._crypto_stream_xchacha20_xor_ic=function(){return l.asm.xi.apply(null,arguments)},l._crypto_stream_xor=function(){return l.asm.yi.apply(null,arguments)},l._crypto_stream_xsalsa20=function(){return l.asm.zi.apply(null,arguments)},l._crypto_stream_xsalsa20_keybytes=function(){return l.asm.Ai.apply(null,arguments)},l._crypto_stream_xsalsa20_keygen=function(){return l.asm.Bi.apply(null,arguments)},l._crypto_stream_xsalsa20_messagebytes_max=function(){return l.asm.Ci.apply(null,arguments)},l._crypto_stream_xsalsa20_noncebytes=function(){return l.asm.Di.apply(null,arguments)},l._crypto_stream_xsalsa20_xor=function(){return l.asm.Ei.apply(null,arguments)},l._crypto_stream_xsalsa20_xor_ic=function(){return l.asm.Fi.apply(null,arguments)},l._crypto_verify_16=function(){return l.asm.Gi.apply(null,arguments)},l._crypto_verify_16_bytes=function(){return l.asm.Hi.apply(null,arguments)},l._crypto_verify_32=function(){return l.asm.Ii.apply(null,arguments)},l._crypto_verify_32_bytes=function(){return l.asm.Ji.apply(null,arguments)},l._crypto_verify_64=function(){return l.asm.Ki.apply(null,arguments)},l._crypto_verify_64_bytes=function(){return l.asm.Li.apply(null,arguments)};var he=l._emscripten_replace_memory=function(){return l.asm._emscripten_replace_memory.apply(null,arguments)};function Ae(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function ge(e){function a(){l.calledRun||(l.calledRun=!0,_||(O||(O=!0,P(T)),P(K),l.onRuntimeInitialized&&l.onRuntimeInitialized(),function(){if(l.postRun)for("function"==typeof l.postRun&&(l.postRun=[l.postRun]);l.postRun.length;)e=l.postRun.shift(),$.unshift(e);var e;P($)}()))}e=e||l.arguments,ee>0||(function(){if(l.preRun)for("function"==typeof l.preRun&&(l.preRun=[l.preRun]);l.preRun.length;)e=l.preRun.shift(),L.unshift(e);var e;P(L)}(),ee>0||l.calledRun||(l.setStatus?(l.setStatus("Running..."),setTimeout(function(){setTimeout(function(){l.setStatus("")},1),a()},1)):a()))}function pe(e){throw l.onAbort&&l.onAbort(e),void 0!==e?(b(e),k(e),e=JSON.stringify(e)):e="",_=!0,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}if(l._free=function(){return l.asm.Mi.apply(null,arguments)},l._malloc=function(){return l.asm.Ni.apply(null,arguments)},l._randombytes=function(){return l.asm.Oi.apply(null,arguments)},l._randombytes_buf=function(){return l.asm.Pi.apply(null,arguments)},l._randombytes_buf_deterministic=function(){return l.asm.Qi.apply(null,arguments)},l._randombytes_close=function(){return l.asm.Ri.apply(null,arguments)},l._randombytes_implementation_name=function(){return l.asm.Si.apply(null,arguments)},l._randombytes_random=function(){return l.asm.Ti.apply(null,arguments)},l._randombytes_seedbytes=function(){return l.asm.Ui.apply(null,arguments)},l._randombytes_stir=function(){return l.asm.Vi.apply(null,arguments)},l._randombytes_uniform=function(){return l.asm.Wi.apply(null,arguments)},l._sodium_base642bin=function(){return l.asm.Xi.apply(null,arguments)},l._sodium_base64_encoded_len=function(){return l.asm.Yi.apply(null,arguments)},l._sodium_bin2base64=function(){return l.asm.Zi.apply(null,arguments)},l._sodium_bin2hex=function(){return l.asm._i.apply(null,arguments)},l._sodium_hex2bin=function(){return l.asm.$i.apply(null,arguments)},l._sodium_init=function(){return l.asm.aj.apply(null,arguments)},l._sodium_library_minimal=function(){return l.asm.bj.apply(null,arguments)},l._sodium_library_version_major=function(){return l.asm.cj.apply(null,arguments)},l._sodium_library_version_minor=function(){return l.asm.dj.apply(null,arguments)},l._sodium_pad=function(){return l.asm.ej.apply(null,arguments)},l._sodium_unpad=function(){return l.asm.fj.apply(null,arguments)},l._sodium_version_string=function(){return l.asm.gj.apply(null,arguments)},l.asm=de,l.setValue=function(e,a,r,i){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":Q[e>>0]=a;break;case"i16":j[e>>1]=a;break;case"i32":z[e>>2]=a;break;case"i64":tempI64=[a>>>0,(tempDouble=a,+X(tempDouble)>=1?tempDouble>0?(0|Z(+W(tempDouble/4294967296),4294967295))>>>0:~~+V((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],z[e>>2]=tempI64[0],z[e+4>>2]=tempI64[1];break;case"float":D[e>>2]=a;break;case"double":S[e>>3]=a;break;default:pe("invalid type for setValue: "+r)}},l.getValue=function(e,a,r){switch("*"===(a=a||"i8").charAt(a.length-1)&&(a="i32"),a){case"i1":case"i8":return Q[e>>0];case"i16":return j[e>>1];case"i32":case"i64":return z[e>>2];case"float":return D[e>>2];case"double":return S[e>>3];default:pe("invalid type for getValue: "+a)}return null},l.Pointer_stringify=C,Ae.prototype=new Error,Ae.prototype.constructor=Ae,re=function e(){l.calledRun||ge(),l.calledRun||(re=e)},l.run=ge,l.abort=pe,l.preInit)for("function"==typeof l.preInit&&(l.preInit=[l.preInit]);l.preInit.length>0;)l.preInit.pop()();l.noExitRuntime=!0,ge()}).catch(function(){c.useBackupModule()}),"object"==typeof t&&"function"==typeof t.removeAllListeners&&(t.removeAllListeners("uncaughtException"),t.removeAllListeners("unhandledRejection")),s})?s.apply(a,l):s)||(e.exports=c)}()}).call(this,r(6),r(7),"/",r(2).Buffer)},function(e,a,r){"use strict";var i=r(1),t=r(0).Buffer,n=r(9),o=t.alloc(128),s=64;function l(e,a){n.call(this,"digest"),"string"==typeof a&&(a=t.from(a)),this._alg=e,this._key=a,a.length>s?a=e(a):a.length>>0},a.writeUInt32BE=function(e,a,r){e[0+r]=a>>>24,e[1+r]=a>>>16&255,e[2+r]=a>>>8&255,e[3+r]=255&a},a.ip=function(e,a,r,i){for(var t=0,n=0,o=6;o>=0;o-=2){for(var s=0;s<=24;s+=8)t<<=1,t|=a>>>s+o&1;for(s=0;s<=24;s+=8)t<<=1,t|=e>>>s+o&1}for(o=6;o>=0;o-=2){for(s=1;s<=25;s+=8)n<<=1,n|=a>>>s+o&1;for(s=1;s<=25;s+=8)n<<=1,n|=e>>>s+o&1}r[i+0]=t>>>0,r[i+1]=n>>>0},a.rip=function(e,a,r,i){for(var t=0,n=0,o=0;o<4;o++)for(var s=24;s>=0;s-=8)t<<=1,t|=a>>>s+o&1,t<<=1,t|=e>>>s+o&1;for(o=4;o<8;o++)for(s=24;s>=0;s-=8)n<<=1,n|=a>>>s+o&1,n<<=1,n|=e>>>s+o&1;r[i+0]=t>>>0,r[i+1]=n>>>0},a.pc1=function(e,a,r,i){for(var t=0,n=0,o=7;o>=5;o--){for(var s=0;s<=24;s+=8)t<<=1,t|=a>>s+o&1;for(s=0;s<=24;s+=8)t<<=1,t|=e>>s+o&1}for(s=0;s<=24;s+=8)t<<=1,t|=a>>s+o&1;for(o=1;o<=3;o++){for(s=0;s<=24;s+=8)n<<=1,n|=a>>s+o&1;for(s=0;s<=24;s+=8)n<<=1,n|=e>>s+o&1}for(s=0;s<=24;s+=8)n<<=1,n|=e>>s+o&1;r[i+0]=t>>>0,r[i+1]=n>>>0},a.r28shl=function(e,a){return e<>>28-a};var i=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];a.pc2=function(e,a,r,t){for(var n=0,o=0,s=i.length>>>1,l=0;l>>i[l]&1;for(l=s;l>>i[l]&1;r[t+0]=n>>>0,r[t+1]=o>>>0},a.expand=function(e,a,r){var i=0,t=0;i=(1&e)<<5|e>>>27;for(var n=23;n>=15;n-=4)i<<=6,i|=e>>>n&63;for(n=11;n>=3;n-=4)t|=e>>>n&63,t<<=6;t|=(31&e)<<1|e>>>31,a[r+0]=i>>>0,a[r+1]=t>>>0};var t=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];a.substitute=function(e,a){for(var r=0,i=0;i<4;i++){r<<=4,r|=t[64*i+(e>>>18-6*i&63)]}for(i=0;i<4;i++){r<<=4,r|=t[256+64*i+(a>>>18-6*i&63)]}return r>>>0};var n=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];a.permute=function(e){for(var a=0,r=0;r>>n[r]&1;return a>>>0},a.padSplit=function(e,a,r){for(var i=e.toString(2);i.length0;i--)a+=this._buffer(e,a),r+=this._flushBuffer(t,r);return a+=this._buffer(e,a),t},t.prototype.final=function(e){var a,r;return e&&(a=this.update(e)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),a?a.concat(r):r},t.prototype._pad=function(e,a){if(0===a)return!1;for(;a>>1];r=o.r28shl(r,s),t=o.r28shl(t,s),o.pc2(r,t,e.keys,n)}},c.prototype._update=function(e,a,r,i){var t=this._desState,n=o.readUInt32BE(e,a),s=o.readUInt32BE(e,a+4);o.ip(n,s,t.tmp,0),n=t.tmp[0],s=t.tmp[1],"encrypt"===this.type?this._encrypt(t,n,s,t.tmp,0):this._decrypt(t,n,s,t.tmp,0),n=t.tmp[0],s=t.tmp[1],o.writeUInt32BE(r,n,i),o.writeUInt32BE(r,s,i+4)},c.prototype._pad=function(e,a){for(var r=e.length-a,i=a;i>>0,n=h}o.rip(s,n,i,t)},c.prototype._decrypt=function(e,a,r,i,t){for(var n=r,s=a,l=e.keys.length-2;l>=0;l-=2){var c=e.keys[l],u=e.keys[l+1];o.expand(n,e.tmp,0),c^=e.tmp[0],u^=e.tmp[1];var d=o.substitute(c,u),h=n;n=(s^o.permute(d))>>>0,s=h}o.rip(n,s,i,t)}},function(e,a,r){"use strict";var i=r(5),t=r(1),n={};function o(e){i.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var a=0;a15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},h.prototype.flush=function(){for(var e=16-this.cache.length,a=n.allocUnsafe(e),r=-1;++r>o%8,e._prev=n(e._prev,r?i:t);return s}function n(e,a){var r=e.length,t=-1,n=i.allocUnsafe(e.length);for(e=i.concat([e,i.from([a])]);++t>7;return n}a.encrypt=function(e,a,r){for(var n=a.length,o=i.allocUnsafe(n),s=-1;++s>>0,0),a.writeUInt32BE(e[1]>>>0,4),a.writeUInt32BE(e[2]>>>0,8),a.writeUInt32BE(e[3]>>>0,12),a}function o(e){this.h=e,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}o.prototype.ghash=function(e){for(var a=-1;++a0;a--)i[a]=i[a]>>>1|(1&i[a-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=n(t)},o.prototype.update=function(e){var a;for(this.cache=i.concat([this.cache,e]);this.cache.length>=16;)a=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(a)},o.prototype.final=function(e,a){return this.cache.length&&this.ghash(i.concat([this.cache,t],16)),this.ghash(n([0,e,0,a])),this.state},e.exports=o},function(e,a,r){var i=r(70),t=r(0).Buffer,n=r(40),o=r(71),s=r(9),l=r(23),c=r(24);function u(e,a,r){s.call(this),this._cache=new d,this._last=void 0,this._cipher=new l.AES(a),this._prev=t.from(r),this._mode=e,this._autopadding=!0}function d(){this.cache=t.allocUnsafe(0)}function h(e,a,r){var s=n[e.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=t.from(r)),"GCM"!==s.mode&&r.length!==s.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof a&&(a=t.from(a)),a.length!==s.key/8)throw new TypeError("invalid key length "+a.length);return"stream"===s.type?new o(s.module,a,r,!0):"auth"===s.type?new i(s.module,a,r,!0):new u(s.module,a,r)}r(1)(u,s),u.prototype._update=function(e){var a,r;this._cache.add(e);for(var i=[];a=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,a),i.push(r);return t.concat(i)},u.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return function(e){var a=e[15];if(a<1||a>16)throw new Error("unable to decrypt data");var r=-1;for(;++r16)return a=this.cache.slice(0,16),this.cache=this.cache.slice(16),a}else if(this.cache.length>=16)return a=this.cache.slice(0,16),this.cache=this.cache.slice(16),a;return null},d.prototype.flush=function(){if(this.cache.length)return this.cache},a.createDecipher=function(e,a){var r=n[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=c(a,!1,r.key,r.iv);return h(e,i.key,i.iv)},a.createDecipheriv=h},function(e,a){a["des-ecb"]={key:8,iv:0},a["des-cbc"]=a.des={key:8,iv:8},a["des-ede3-cbc"]=a.des3={key:24,iv:8},a["des-ede3"]={key:24,iv:0},a["des-ede-cbc"]={key:16,iv:8},a["des-ede"]={key:16,iv:0}},function(e,a,r){(function(e){var i=r(72),t=r(153),n=r(154);var o={binary:!0,hex:!0,base64:!0};a.DiffieHellmanGroup=a.createDiffieHellmanGroup=a.getDiffieHellman=function(a){var r=new e(t[a].prime,"hex"),i=new e(t[a].gen,"hex");return new n(r,i)},a.createDiffieHellman=a.DiffieHellman=function a(r,t,s,l){return e.isBuffer(t)||void 0===o[t]?a(r,"binary",t,s):(t=t||"binary",l=l||"binary",s=s||new e([2]),e.isBuffer(s)||(s=new e(s,l)),"number"==typeof r?new n(i(r,s),s,!0):(e.isBuffer(r)||(r=new e(r,t)),new n(r,s,!0)))}}).call(this,r(2).Buffer)},function(e,a){},function(e,a){},function(e){e.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},function(e,a,r){(function(a){var i=r(3),t=new(r(73)),n=new i(24),o=new i(11),s=new i(10),l=new i(3),c=new i(7),u=r(72),d=r(12);function h(e,r){return r=r||"utf8",a.isBuffer(e)||(e=new a(e,r)),this._pub=new i(e),this}function A(e,r){return r=r||"utf8",a.isBuffer(e)||(e=new a(e,r)),this._priv=new i(e),this}e.exports=p;var g={};function p(e,a,r){this.setGenerator(a),this.__prime=new i(e),this._prime=i.mont(this.__prime),this._primeLen=e.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=h,this.setPrivateKey=A):this._primeCode=8}function m(e,r){var i=new a(e.toArray());return r?i.toString(r):i}Object.defineProperty(p.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(e,a){var r=a.toString("hex"),i=[r,e.toString(16)].join("_");if(i in g)return g[i];var d,h=0;if(e.isEven()||!u.simpleSieve||!u.fermatTest(e)||!t.test(e))return h+=1,h+="02"===r||"05"===r?8:4,g[i]=h,h;switch(t.test(e.shrn(1))||(h+=2),r){case"02":e.mod(n).cmp(o)&&(h+=8);break;case"05":(d=e.mod(s)).cmp(l)&&d.cmp(c)&&(h+=8);break;default:h+=4}return g[i]=h,h}(this.__prime,this.__gen)),this._primeCode}}),p.prototype.generateKeys=function(){return this._priv||(this._priv=new i(d(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},p.prototype.computeSecret=function(e){var r=(e=(e=new i(e)).toRed(this._prime)).redPow(this._priv).fromRed(),t=new a(r.toArray()),n=this.getPrime();if(t.length0&&r.ishrn(i),r}function d(e,r,t){var n,o;do{for(n=new a(0);8*n.length=0;){var n;if(t.isOdd()){var o=t.andln(i-1);n=o>(i>>1)-1?(i>>1)-o:o,t.isubn(n)}else n=0;r.push(n);for(var s=0!==t.cmpn(0)&&0===t.andln(i-1)?a+1:1,l=1;l0||a.cmpn(-t)>0;){var n,o,s,l=e.andln(3)+i&3,c=a.andln(3)+t&3;3===l&&(l=-1),3===c&&(c=-1),n=0==(1&l)?0:3!=(s=e.andln(7)+i&7)&&5!==s||2!==c?l:-l,r[0].push(n),o=0==(1&c)?0:3!=(s=a.andln(7)+t&7)&&5!==s||2!==l?c:-c,r[1].push(o),2*i===n+1&&(i=1-i),2*t===o+1&&(t=1-t),e.iushrn(1),a.iushrn(1)}return r},i.cachedProperty=function(e,a,r){var i="_"+a;e.prototype[a]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(e){return"string"==typeof e?i.toArray(e,"hex"):e},i.intFromLE=function(e){return new t(e,"hex","le")}},function(e,a,r){"use strict";var i=r(3),t=r(4).utils,n=t.getNAF,o=t.getJSF,s=t.assert;function l(e,a){this.type=e,this.p=new i(a.p,16),this.red=a.prime?i.red(a.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=a.n&&new i(a.n,16),this.g=a.g&&this.pointFromJSON(a.g,a.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(e,a){this.curve=e,this.type=a,this.precomputed=null}e.exports=l,l.prototype.point=function(){throw new Error("Not implemented")},l.prototype.validate=function(){throw new Error("Not implemented")},l.prototype._fixedNafMul=function(e,a){s(e.precomputed);var r=e._getDoubles(),i=n(a,1),t=(1<=l;a--)c=(c<<1)+i[a];o.push(c)}for(var u=this.jpoint(null,null,null),d=this.jpoint(null,null,null),h=t;h>0;h--){for(l=0;l=0;c--){for(a=0;c>=0&&0===o[c];c--)a++;if(c>=0&&a++,l=l.dblp(a),c<0)break;var u=o[c];s(0!==u),l="affine"===e.type?u>0?l.mixedAdd(t[u-1>>1]):l.mixedAdd(t[-u-1>>1].neg()):u>0?l.add(t[u-1>>1]):l.add(t[-u-1>>1].neg())}return"affine"===e.type?l.toP():l},l.prototype._wnafMulAdd=function(e,a,r,i,t){for(var s=this._wnafT1,l=this._wnafT2,c=this._wnafT3,u=0,d=0;d=1;d-=2){var A=d-1,g=d;if(1===s[A]&&1===s[g]){var p=[a[A],null,null,a[g]];0===a[A].y.cmp(a[g].y)?(p[1]=a[A].add(a[g]),p[2]=a[A].toJ().mixedAdd(a[g].neg())):0===a[A].y.cmp(a[g].y.redNeg())?(p[1]=a[A].toJ().mixedAdd(a[g]),p[2]=a[A].add(a[g].neg())):(p[1]=a[A].toJ().mixedAdd(a[g]),p[2]=a[A].toJ().mixedAdd(a[g].neg()));var m=[-3,-1,-5,-7,0,7,5,1,3],f=o(r[A],r[g]);u=Math.max(f[0].length,u),c[A]=new Array(u),c[g]=new Array(u);for(var y=0;y=0;d--){for(var I=0;d>=0;){var _=!0;for(y=0;y=0&&I++,w=w.dblp(I),d<0)break;for(y=0;y0?B=l[y][C-1>>1]:C<0&&(B=l[y][-C-1>>1].neg()),w="affine"===B.type?w.mixedAdd(B):w.add(B))}}for(d=0;d=Math.ceil((e.bitLength()+1)/a.step)},c.prototype._getDoubles=function(e,a){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,t=0;t=0&&(o=a,s=r),i.negative&&(i=i.neg(),t=t.neg()),o.negative&&(o=o.neg(),s=s.neg()),[{a:i,b:t},{a:o,b:s}]},c.prototype._endoSplit=function(e){var a=this.endo.basis,r=a[0],i=a[1],t=i.b.mul(e).divRound(this.n),n=r.b.neg().mul(e).divRound(this.n),o=t.mul(r.a),s=n.mul(i.a),l=t.mul(r.b),c=n.mul(i.b);return{k1:e.sub(o).sub(s),k2:l.add(c).neg()}},c.prototype.pointFromX=function(e,a){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var t=i.fromRed().isOdd();return(a&&!t||!a&&t)&&(i=i.redNeg()),this.point(e,i)},c.prototype.validate=function(e){if(e.inf)return!0;var a=e.x,r=e.y,i=this.a.redMul(a),t=a.redSqr().redMul(a).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(t).cmpn(0)},c.prototype._endoWnafMulAdd=function(e,a,r){for(var i=this._endoWnafT1,t=this._endoWnafT2,n=0;n":""},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var a=this.y.redSub(e.y);0!==a.cmpn(0)&&(a=a.redMul(this.x.redSub(e.x).redInvm()));var r=a.redSqr().redISub(this.x).redISub(e.x),i=a.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},u.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var a=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),t=r.redAdd(r).redIAdd(r).redIAdd(a).redMul(i),n=t.redSqr().redISub(this.x.redAdd(this.x)),o=t.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,o)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(e){return e=new n(e,16),this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},u.prototype.mulAdd=function(e,a,r){var i=[this,a],t=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,t):this.curve._wnafMulAdd(1,i,t,2)},u.prototype.jmulAdd=function(e,a,r){var i=[this,a],t=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,t,!0):this.curve._wnafMulAdd(1,i,t,2,!0)},u.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},u.prototype.neg=function(e){if(this.inf)return this;var a=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(e){return e.neg()};a.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return a},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(d,s.BasePoint),c.prototype.jpoint=function(e,a,r){return new d(this,e,a,r)},d.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),a=e.redSqr(),r=this.x.redMul(a),i=this.y.redMul(a).redMul(e);return this.curve.point(r,i)},d.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},d.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var a=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(a),t=e.x.redMul(r),n=this.y.redMul(a.redMul(e.z)),o=e.y.redMul(r.redMul(this.z)),s=i.redSub(t),l=n.redSub(o);if(0===s.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),u=c.redMul(s),d=i.redMul(c),h=l.redSqr().redIAdd(u).redISub(d).redISub(d),A=l.redMul(d.redISub(h)).redISub(n.redMul(u)),g=this.z.redMul(e.z).redMul(s);return this.curve.jpoint(h,A,g)},d.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var a=this.z.redSqr(),r=this.x,i=e.x.redMul(a),t=this.y,n=e.y.redMul(a).redMul(this.z),o=r.redSub(i),s=t.redSub(n);if(0===o.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=o.redSqr(),c=l.redMul(o),u=r.redMul(l),d=s.redSqr().redIAdd(c).redISub(u).redISub(u),h=s.redMul(u.redISub(d)).redISub(t.redMul(c)),A=this.z.redMul(o);return this.curve.jpoint(d,h,A)},d.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var a=this,r=0;r=0)return!1;if(r.redIAdd(t),0===this.x.cmp(r))return!0}},d.prototype.inspect=function(){return this.isInfinity()?"":""},d.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(e,a,r){"use strict";var i=r(25),t=r(3),n=r(1),o=i.base,s=r(4).utils;function l(e){o.call(this,"mont",e),this.a=new t(e.a,16).toRed(this.red),this.b=new t(e.b,16).toRed(this.red),this.i4=new t(4).toRed(this.red).redInvm(),this.two=new t(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function c(e,a,r){o.BasePoint.call(this,e,"projective"),null===a&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new t(a,16),this.z=new t(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(l,o),e.exports=l,l.prototype.validate=function(e){var a=e.normalize().x,r=a.redSqr(),i=r.redMul(a).redAdd(r.redMul(this.a)).redAdd(a);return 0===i.redSqrt().redSqr().cmp(i)},n(c,o.BasePoint),l.prototype.decodePoint=function(e,a){return this.point(s.toArray(e,a),1)},l.prototype.point=function(e,a){return new c(this,e,a)},l.prototype.pointFromJSON=function(e){return c.fromJSON(this,e)},c.prototype.precompute=function(){},c.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},c.fromJSON=function(e,a){return new c(e,a[0],a[1]||e.one)},c.prototype.inspect=function(){return this.isInfinity()?"":""},c.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},c.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),a=this.x.redSub(this.z).redSqr(),r=e.redSub(a),i=e.redMul(a),t=r.redMul(a.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,t)},c.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},c.prototype.diffAdd=function(e,a){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),t=e.x.redAdd(e.z),n=e.x.redSub(e.z).redMul(r),o=t.redMul(i),s=a.z.redMul(n.redAdd(o).redSqr()),l=a.x.redMul(n.redISub(o).redSqr());return this.curve.point(s,l)},c.prototype.mul=function(e){for(var a=e.clone(),r=this,i=this.curve.point(null,null),t=[];0!==a.cmpn(0);a.iushrn(1))t.push(a.andln(1));for(var n=t.length-1;n>=0;n--)0===t[n]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},c.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},c.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},c.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},c.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(e,a,r){"use strict";var i=r(25),t=r(4),n=r(3),o=r(1),s=i.base,l=t.utils.assert;function c(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,s.call(this,"edwards",e),this.a=new n(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),l(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function u(e,a,r,i,t){s.BasePoint.call(this,e,"projective"),null===a&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(a,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=t&&new n(t,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(c,s),e.exports=c,c.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},c.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},c.prototype.jpoint=function(e,a,r,i){return this.point(e,a,r,i)},c.prototype.pointFromX=function(e,a){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),t=this.one.redSub(this.c2.redMul(this.d).redMul(r)),o=i.redMul(t.redInvm()),s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");var l=s.fromRed().isOdd();return(a&&!l||!a&&l)&&(s=s.redNeg()),this.point(e,s)},c.prototype.pointFromY=function(e,a){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),t=r.redMul(this.d).redMul(this.c2).redSub(this.a),o=i.redMul(t.redInvm());if(0===o.cmp(this.zero)){if(a)throw new Error("invalid point");return this.point(this.zero,e)}var s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");return s.fromRed().isOdd()!==a&&(s=s.redNeg()),this.point(s,e)},c.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var a=e.x.redSqr(),r=e.y.redSqr(),i=a.redMul(this.a).redAdd(r),t=this.c2.redMul(this.one.redAdd(this.d.redMul(a).redMul(r)));return 0===i.cmp(t)},o(u,s.BasePoint),c.prototype.pointFromJSON=function(e){return u.fromJSON(this,e)},c.prototype.point=function(e,a,r,i){return new u(this,e,a,r,i)},u.fromJSON=function(e,a){return new u(e,a[0],a[1],a[2])},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var e=this.x.redSqr(),a=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),t=this.x.redAdd(this.y).redSqr().redISub(e).redISub(a),n=i.redAdd(a),o=n.redSub(r),s=i.redSub(a),l=t.redMul(o),c=n.redMul(s),u=t.redMul(s),d=o.redMul(n);return this.curve.point(l,c,d,u)},u.prototype._projDbl=function(){var e,a,r,i=this.x.redAdd(this.y).redSqr(),t=this.x.redSqr(),n=this.y.redSqr();if(this.curve.twisted){var o=(c=this.curve._mulA(t)).redAdd(n);if(this.zOne)e=i.redSub(t).redSub(n).redMul(o.redSub(this.curve.two)),a=o.redMul(c.redSub(n)),r=o.redSqr().redSub(o).redSub(o);else{var s=this.z.redSqr(),l=o.redSub(s).redISub(s);e=i.redSub(t).redISub(n).redMul(l),a=o.redMul(c.redSub(n)),r=o.redMul(l)}}else{var c=t.redAdd(n);s=this.curve._mulC(this.z).redSqr(),l=c.redSub(s).redSub(s);e=this.curve._mulC(i.redISub(c)).redMul(l),a=this.curve._mulC(c).redMul(t.redISub(n)),r=c.redMul(l)}return this.curve.point(e,a,r)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(e){var a=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),t=this.z.redMul(e.z.redAdd(e.z)),n=r.redSub(a),o=t.redSub(i),s=t.redAdd(i),l=r.redAdd(a),c=n.redMul(o),u=s.redMul(l),d=n.redMul(l),h=o.redMul(s);return this.curve.point(c,u,h,d)},u.prototype._projAdd=function(e){var a,r,i=this.z.redMul(e.z),t=i.redSqr(),n=this.x.redMul(e.x),o=this.y.redMul(e.y),s=this.curve.d.redMul(n).redMul(o),l=t.redSub(s),c=t.redAdd(s),u=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(n).redISub(o),d=i.redMul(l).redMul(u);return this.curve.twisted?(a=i.redMul(c).redMul(o.redSub(this.curve._mulA(n))),r=l.redMul(c)):(a=i.redMul(c).redMul(o.redSub(n)),r=this.curve._mulC(l).redMul(c)),this.curve.point(d,a,r)},u.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},u.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},u.prototype.mulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!1)},u.prototype.jmulAdd=function(e,a,r){return this.curve._wnafMulAdd(1,[this,a],[e,r],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},u.prototype.eqXToP=function(e){var a=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(a))return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(a.redIAdd(i),0===this.x.cmp(a))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},function(e,a,r){"use strict";var i,t=a,n=r(42),o=r(4),s=o.utils.assert;function l(e){"short"===e.type?this.curve=new o.curve.short(e):"edwards"===e.type?this.curve=new o.curve.edwards(e):this.curve=new o.curve.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function c(e,a){Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:function(){var r=new l(a);return Object.defineProperty(t,e,{configurable:!0,enumerable:!0,value:r}),r}})}t.PresetCurve=l,c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:n.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:n.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:n.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:n.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:n.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:n.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:n.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(170)}catch(e){i=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:n.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},function(e,a,r){"use strict";a.sha1=r(165),a.sha224=r(166),a.sha256=r(77),a.sha384=r(167),a.sha512=r(78)},function(e,a,r){"use strict";var i=r(8),t=r(19),n=r(76),o=i.rotl32,s=i.sum32,l=i.sum32_5,c=n.ft_1,u=t.BlockHash,d=[1518500249,1859775393,2400959708,3395469782];function h(){if(!(this instanceof h))return new h;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(h,u),e.exports=h,h.blockSize=512,h.outSize=160,h.hmacStrength=80,h.padLength=64,h.prototype._update=function(e,a){for(var r=this.W,i=0;i<16;i++)r[i]=e[a+i];for(;ithis.blockSize&&(e=(new this.Hash).update(e).digest()),t(e.length<=this.blockSize);for(var a=e.length;a0))return s.iaddn(1),this.keyFromPrivate(s)}},c.prototype._truncateToN=function(e,a){var r=8*e.byteLength()-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!a&&e.cmp(this.n)>=0?e.sub(this.n):e},c.prototype.sign=function(e,a,r,n){"object"==typeof r&&(n=r,r=null),n||(n={}),a=this.keyFromPrivate(a,r),e=this._truncateToN(new i(e,16));for(var o=this.n.byteLength(),s=a.getPrivate().toArray("be",o),c=e.toArray("be",o),u=new t({hash:this.hash,entropy:s,nonce:c,pers:n.pers,persEnc:n.persEnc||"utf8"}),d=this.n.sub(new i(1)),h=0;;h++){var A=n.k?n.k(h):new i(u.generate(this.n.byteLength()));if(!((A=this._truncateToN(A,!0)).cmpn(1)<=0||A.cmp(d)>=0)){var g=this.g.mul(A);if(!g.isInfinity()){var p=g.getX(),m=p.umod(this.n);if(0!==m.cmpn(0)){var f=A.invm(this.n).mul(m.mul(a.getPrivate()).iadd(e));if(0!==(f=f.umod(this.n)).cmpn(0)){var y=(g.getY().isOdd()?1:0)|(0!==p.cmp(m)?2:0);return n.canonical&&f.cmp(this.nh)>0&&(f=this.n.sub(f),y^=1),new l({r:m,s:f,recoveryParam:y})}}}}}},c.prototype.verify=function(e,a,r,t){e=this._truncateToN(new i(e,16)),r=this.keyFromPublic(r,t);var n=(a=new l(a,"hex")).r,o=a.s;if(n.cmpn(1)<0||n.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var s,c=o.invm(this.n),u=c.mul(e).umod(this.n),d=c.mul(n).umod(this.n);return this.curve._maxwellTrick?!(s=this.g.jmulAdd(u,r.getPublic(),d)).isInfinity()&&s.eqXToP(n):!(s=this.g.mulAdd(u,r.getPublic(),d)).isInfinity()&&0===s.getX().umod(this.n).cmp(n)},c.prototype.recoverPubKey=function(e,a,r,t){o((3&r)===r,"The recovery param is more than two bits"),a=new l(a,t);var n=this.n,s=new i(e),c=a.r,u=a.s,d=1&r,h=r>>1;if(c.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");c=h?this.curve.pointFromX(c.add(this.curve.n),d):this.curve.pointFromX(c,d);var A=a.r.invm(n),g=n.sub(s).mul(A).umod(n),p=u.mul(A).umod(n);return this.g.mulAdd(g,c,p)},c.prototype.getKeyRecoveryParam=function(e,a,r,i){if(null!==(a=new l(a,i)).recoveryParam)return a.recoveryParam;for(var t=0;t<4;t++){var n;try{n=this.recoverPubKey(e,a,t)}catch(e){continue}if(n.eq(r))return t}throw new Error("Unable to find valid recovery factor")}},function(e,a,r){"use strict";var i=r(42),t=r(75),n=r(5);function o(e){if(!(this instanceof o))return new o(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var a=t.toArray(e.entropy,e.entropyEnc||"hex"),r=t.toArray(e.nonce,e.nonceEnc||"hex"),i=t.toArray(e.pers,e.persEnc||"hex");n(a.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(a,r,i)}e.exports=o,o.prototype._init=function(e,a,r){var i=e.concat(a).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var t=0;t=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1},o.prototype.generate=function(e,a,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof a&&(i=r,r=a,a=null),r&&(r=t.toArray(r,i||"hex"),this._update(r));for(var n=[];n.length"}},function(e,a,r){"use strict";var i=r(3),t=r(4).utils,n=t.assert;function o(e,a){if(e instanceof o)return e;this._importDER(e,a)||(n(e.r&&e.s,"Signature without r or s"),this.r=new i(e.r,16),this.s=new i(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function s(){this.place=0}function l(e,a){var r=e[a.place++];if(!(128&r))return r;for(var i=15&r,t=0,n=0,o=a.place;n>>3);for(e.push(128|r);--r;)e.push(a>>>(r<<3)&255);e.push(a)}}e.exports=o,o.prototype._importDER=function(e,a){e=t.toArray(e,a);var r=new s;if(48!==e[r.place++])return!1;if(l(e,r)+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var n=l(e,r),o=e.slice(r.place,n+r.place);if(r.place+=n,2!==e[r.place++])return!1;var c=l(e,r);if(e.length!==c+r.place)return!1;var u=e.slice(r.place,c+r.place);return 0===o[0]&&128&o[1]&&(o=o.slice(1)),0===u[0]&&128&u[1]&&(u=u.slice(1)),this.r=new i(o),this.s=new i(u),this.recoveryParam=null,!0},o.prototype.toDER=function(e){var a=this.r.toArray(),r=this.s.toArray();for(128&a[0]&&(a=[0].concat(a)),128&r[0]&&(r=[0].concat(r)),a=c(a),r=c(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];u(i,a.length),(i=i.concat(a)).push(2),u(i,r.length);var n=i.concat(r),o=[48];return u(o,n.length),o=o.concat(n),t.encode(o,e)}},function(e,a,r){"use strict";var i=r(42),t=r(4),n=t.utils,o=n.assert,s=n.parseBytes,l=r(176),c=r(177);function u(e){if(o("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof u))return new u(e);e=t.curves[e].curve;this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=i.sha512}e.exports=u,u.prototype.sign=function(e,a){e=s(e);var r=this.keyFromSecret(a),i=this.hashInt(r.messagePrefix(),e),t=this.g.mul(i),n=this.encodePoint(t),o=this.hashInt(n,r.pubBytes(),e).mul(r.priv()),l=i.add(o).umod(this.curve.n);return this.makeSignature({R:t,S:l,Rencoded:n})},u.prototype.verify=function(e,a,r){e=s(e),a=this.makeSignature(a);var i=this.keyFromPublic(r),t=this.hashInt(a.Rencoded(),i.pubBytes(),e),n=this.g.mul(a.S());return a.R().add(i.pub().mul(t)).eq(n)},u.prototype.hashInt=function(){for(var e=this.hash(),a=0;a=a)throw new Error("invalid sig")}e.exports=function(e,r,l,c,u){var d=n(l);if("ec"===d.type){if("ecdsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");return function(e,a,r){var i=o[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new t(i),s=r.data.subjectPrivateKey.data;return n.verify(a,e,s)}(e,r,d)}if("dsa"===d.type){if("dsa"!==c)throw new Error("wrong public key type");return function(e,a,r){var t=r.data.p,o=r.data.q,l=r.data.g,c=r.data.pub_key,u=n.signature.decode(e,"der"),d=u.s,h=u.r;s(d,o),s(h,o);var A=i.mont(t),g=d.invm(o);return 0===l.toRed(A).redPow(new i(a).mul(g).mod(o)).fromRed().mul(c.toRed(A).redPow(h.mul(g).mod(o)).fromRed()).mod(t).mod(o).cmp(h)}(e,r,d)}if("rsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");r=a.concat([u,r]);for(var h=d.modulus.byteLength(),A=[1],g=0;r.length+A.length+2r-h-2)throw new Error("message too long");var A=d.alloc(r-i-h-2),g=r-u-1,p=t(u),m=s(d.concat([c,A,d.alloc(1,1),a],g),o(p,g)),f=s(p,o(m,u));return new l(d.concat([d.alloc(1),f,m],r))}(g,a);else if(1===h)A=function(e,a,r){var i,n=a.length,o=e.modulus.byteLength();if(n>o-11)throw new Error("message too long");i=r?d.alloc(o-n-3,255):function(e){var a,r=d.allocUnsafe(e),i=0,n=t(2*e),o=0;for(;i=0)throw new Error("data too long for modulus")}return r?u(A,g):c(A,g)}},function(e,a,r){var i=r(26),t=r(84),n=r(85),o=r(3),s=r(41),l=r(10),c=r(86),u=r(0).Buffer;e.exports=function(e,a,r){var d;d=e.padding?e.padding:r?1:4;var h,A=i(e),g=A.modulus.byteLength();if(a.length>g||new o(a).cmp(A.modulus)>=0)throw new Error("decryption error");h=r?c(new o(a),A):s(a,A);var p=u.alloc(g-h.length);if(h=u.concat([p,h],g),4===d)return function(e,a){var r=e.modulus.byteLength(),i=l("sha1").update(u.alloc(0)).digest(),o=i.length;if(0!==a[0])throw new Error("decryption error");var s=a.slice(1,o+1),c=a.slice(o+1),d=n(s,t(c,o)),h=n(c,t(d,r-o-1));if(function(e,a){e=u.from(e),a=u.from(a);var r=0,i=e.length;e.length!==a.length&&(r++,i=Math.min(e.length,a.length));var t=-1;for(;++t=a.length){n++;break}var o=a.slice(2,t-1);("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&n++;o.length<8&&n++;if(n)throw new Error("decryption error");return a.slice(t)}(0,h,r);if(3===d)return h;throw new Error("unknown padding")}},function(e,a,r){"use strict";(function(e,i){function t(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var n=r(0),o=r(12),s=n.Buffer,l=n.kMaxLength,c=e.crypto||e.msCrypto,u=Math.pow(2,32)-1;function d(e,a){if("number"!=typeof e||e!=e)throw new TypeError("offset must be a number");if(e>u||e<0)throw new TypeError("offset must be a uint32");if(e>l||e>a)throw new RangeError("offset out of range")}function h(e,a,r){if("number"!=typeof e||e!=e)throw new TypeError("size must be a number");if(e>u||e<0)throw new TypeError("size must be a uint32");if(e+a>r||e>l)throw new RangeError("buffer too small")}function A(e,a,r,t){if(i.browser){var n=e.buffer,s=new Uint8Array(n,a,r);return c.getRandomValues(s),t?void i.nextTick(function(){t(null,e)}):e}if(!t)return o(r).copy(e,a),e;o(r,function(r,i){if(r)return t(r);i.copy(e,a),t(null,e)})}c&&c.getRandomValues||!i.browser?(a.randomFill=function(a,r,i,t){if(!(s.isBuffer(a)||a instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof r)t=r,r=0,i=a.length;else if("function"==typeof i)t=i,i=a.length-r;else if("function"!=typeof t)throw new TypeError('"cb" argument must be a function');return d(r,a.length),h(i,r,a.length),A(a,r,i,t)},a.randomFillSync=function(a,r,i){void 0===r&&(r=0);if(!(s.isBuffer(a)||a instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');d(r,a.length),void 0===i&&(i=a.length-r);return h(i,r,a.length),A(a,r,i)}):(a.randomFill=t,a.randomFillSync=t)}).call(this,r(6),r(7))},function(e,a,r){"use strict";(function(e){var i=this&&this.__awaiter||function(e,a,r,i){return new(r||(r=Promise))(function(t,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function s(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){e.done?t(e.value):new r(function(a){a(e.value)}).then(o,s)}l((i=i.apply(e,a||[])).next())})},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});const n=r(43),o=r(87),s=r(199),l=r(13),c=r(27),u=r(17),d=t(r(15)).default.getFetch();let h=t(r(200)).default.getLedgerUtils();!function(a){function r(e,a,r={}){const i=`${e}/${a}`,t=JSON.stringify(r);return d(i,{method:"post",body:t,headers:{"content-type":"application/json"}})}function t(a,r,t){return i(this,void 0,void 0,function*(){const i="03"+a;let o;switch(r.storeType){case n.StoreType.Hardware:o=yield h.signTezosOperation(t,i);break;default:const a=u.CryptoUtils.simpleHash(e.from(i,"hex"),32),s=l.TezosMessageUtils.writeKeyWithHint(r.privateKey,"edsk");o=yield u.CryptoUtils.signDetached(a,s)}const s=l.TezosMessageUtils.readSignatureWithHint(o,"edsig").toString();return{bytes:e.concat([e.from(a,"hex"),e.from(o)]),signature:s.toString()}})}function A(e,a){let r=l.TezosMessageUtils.writeBranch(e.hash);return a.forEach(e=>r+=s.TezosMessageCodec.encodeOperation(e)),r}function g(e,a,t,n){return i(this,void 0,void 0,function*(){const i=[{protocol:a.protocol,branch:a.hash,contents:t,signature:n.signature}],o=yield r(e,"chains/main/blocks/head/helpers/preapply/operations",i),s=yield o.text();try{return JSON.parse(s)}catch(e){throw new Error(`Could not parse JSON response from chains/main/blocks/head/helpers/preapply/operation: '${s}' for ${i}`)}})}function p(e,a){return i(this,void 0,void 0,function*(){const i=yield r(e,"injection/operation?chain=main",a.bytes.toString("hex"));return yield i.text()})}function m(e,a,r,n){return i(this,void 0,void 0,function*(){const i=yield o.TezosNodeReader.getBlockHead(e),s=A(i,a),l=yield t(s,r,n),c=yield g(e,i,a,l);!function(e){const a=new Set(["activate_account","reveal","transaction","origination","delegation"]),r=e[0];if(null!=r.kind&&!a.has(r.kind))throw new Error(`Could not apply operation because: ${r.id}`);for(const e of r.contents)if(!a.has(e.kind))throw new Error(`Could not apply operation because: ${e.metadata}`)}(c);const u=yield p(e,l);return{results:c[0],operationGroupID:u}})}function f(e,a,r,t){return i(this,void 0,void 0,function*(){const i=yield o.TezosNodeReader.isManagerKeyRevealedForAccount(e,a);let n=t;if(!i){const e={kind:"reveal",source:a.publicKeyHash,fee:"0",counter:(Number(r.counter)+1).toString(),gas_limit:"10000",storage_limit:"0",public_key:a.publicKey};let i=t[0];i.counter=(Number(r.counter)+2).toString(),n=[e,i]}return n})}function y(e,a,r,t,n,s,l,u,d,h,A,g){return i(this,void 0,void 0,function*(){const i=yield o.TezosNodeReader.getBlockHead(e),p=yield o.TezosNodeReader.getAccountForBlock(e,i.hash,a.publicKeyHash);let y=void 0;A&&(y=JSON.parse(c.TezosLanguageUtil.translateMichelsonToMicheline(A)));let b=void 0;g&&(b=JSON.parse(c.TezosLanguageUtil.translateMichelsonToMicheline(g)));const k={kind:"origination",source:a.publicKeyHash,fee:l.toString(),counter:(Number(p.counter)+1).toString(),gas_limit:h,storage_limit:d,managerPubkey:a.publicKeyHash,balance:r.toString(),spendable:n,delegatable:s&&!!t,delegate:t,script:A?{code:y,storage:b}:void 0},w=yield f(e,a,p,[k]);return m(e,w,a,u)})}a.signOperationGroup=t,a.forgeOperations=A,a.applyOperation=g,a.injectOperation=p,a.sendOperation=m,a.appendRevealOperation=f,a.sendTransactionOperation=function(e,a,r,t,n,s){return i(this,void 0,void 0,function*(){const i=yield o.TezosNodeReader.getBlockHead(e),l=yield o.TezosNodeReader.getAccountForBlock(e,i.hash,a.publicKeyHash),c={destination:r,amount:t.toString(),storage_limit:"300",gas_limit:"10300",counter:(Number(l.counter)+1).toString(),fee:n.toString(),source:a.publicKeyHash,kind:"transaction"},u=yield f(e,a,l,[c]);return m(e,u,a,s)})},a.sendDelegationOperation=function(e,a,r,t,n){return i(this,void 0,void 0,function*(){const i=yield o.TezosNodeReader.getBlockHead(e),s=yield o.TezosNodeReader.getAccountForBlock(e,i.hash,a.publicKeyHash),l={kind:"delegation",source:a.publicKeyHash,fee:t.toString(),counter:(Number(s.counter)+1).toString(),storage_limit:"0",gas_limit:"10000",delegate:r},c=yield f(e,a,s,[l]);return m(e,c,a,n)})},a.sendAccountOriginationOperation=function(e,a,r,t,n,o,s,l){return i(this,void 0,void 0,function*(){return y(e,a,r,t,n,o,s,l,"277","10160")})},a.sendContractOriginationOperation=function(e,a,r,t,n,o,s,l,c,u,d,h){return i(this,void 0,void 0,function*(){return y(e,a,r,t,n,o,s,l,c,u,d,h)})},a.sendContractInvocationOperation=function(e,a,r,t,n,s,l,u,d){return i(this,void 0,void 0,function*(){const i=yield o.TezosNodeReader.getBlockHead(e),h=yield o.TezosNodeReader.getAccountForBlock(e,i.hash,a.publicKeyHash);let A={destination:r,amount:t.toString(),storage_limit:l.toString(),gas_limit:u.toString(),counter:(Number(h.counter)+1).toString(),fee:n.toString(),source:a.publicKeyHash,kind:"transaction"};if(d){const e=c.TezosLanguageUtil.translateMichelsonToMicheline(d);A.parameters=JSON.parse(e)}const g=yield f(e,a,h,[A]);return m(e,g,a,s)})},a.sendKeyRevealOperation=function(e,a,r=1300,t=""){return i(this,void 0,void 0,function*(){const i=yield o.TezosNodeReader.getBlockHead(e),n=yield o.TezosNodeReader.getAccountForBlock(e,i.hash,a.publicKeyHash),s={kind:"reveal",source:a.publicKeyHash,fee:r+"",counter:(Number(n.counter)+1).toString(),gas_limit:"10000",storage_limit:"0",public_key:a.publicKey};return m(e,[s],a,t)})},a.sendIdentityActivationOperation=function(e,a,r,i){return m(e,[{kind:"activate_account",pkh:a.publicKeyHash,secret:r}],a,i)}}(a.TezosNodeWriter||(a.TezosNodeWriter={}))}).call(this,r(2).Buffer)},function(e,a,r){"use strict";(function(e){Object.defineProperty(a,"__esModule",{value:!0});const i=r(13),t=r(27),n=["endorsement","seedNonceRevelation","doubleEndorsementEvidence","doubleBakingEvidence","accountActivation","proposal","ballot","reveal","transaction","origination","delegation"];!function(a){function r(e){return n[i.TezosMessageUtils.readInt(e)]}function o(e){return r(e.substring(64,66))}function s(e,a,r=!0){switch(a){case"endorsement":case"seedNonceRevelation":case"doubleEndorsementEvidence":case"doubleBakingEvidence":case"accountActivation":case"proposal":throw new Error(`Unsupported operation type: ${a}`);case"ballot":return c(e,r);case"reveal":return d(e,r);case"transaction":return A(e,r);case"origination":return p(e,r);case"delegation":return f(e,r);default:throw new Error(`Unsupported operation type: ${a}`)}}function l(e){let a=i.TezosMessageUtils.writeInt(n.indexOf("accountActivation"));return a+=i.TezosMessageUtils.writeAddress(e.pkh).slice(4),a+=e.secret}function c(a,t=!0){if("ballot"!==r(t?a.substring(64,66):a.substring(0,2)))throw new Error("Provided operation is not a ballot");let n=0,o="";t?(o=i.TezosMessageUtils.readBranch(a.substring(n,n+64)),n+=66):n+=2;const s=i.TezosMessageUtils.readAddress(a.substring(n,n+42));n+=42;const l=parseInt(a.substring(n,n+8),16);n+=8;const c=i.TezosMessageUtils.readBufferWithHint(e.from(a.substring(n,n+64),"hex"),"p");n+=64;const u=parseInt(a.substring(n,n+1),16);let d;return n+=2,a.length>n&&(d=r(a.substring(n,n+2))),{operation:{source:s,period:l,proposal:c,vote:u},branch:o,next:d,nextoffset:d?n:-1}}function u(e){let a=i.TezosMessageUtils.writeInt(n.indexOf("ballot"));return a+=i.TezosMessageUtils.writeAddress(e.source).slice(2),a+=("00000000"+e.period.toString(16)).slice(-8),a+=i.TezosMessageUtils.writeBufferWithHint(e.proposal).toString("hex").slice(4),a+=("00"+e.vote.toString(16)).slice(-2)}function d(e,a=!0){if("reveal"!==r(a?e.substring(64,66):e.substring(0,2)))throw new Error("Provided operation is not a reveal.");let t=0,n="";a?(n=i.TezosMessageUtils.readBranch(e.substring(t,t+64)),t+=66):t+=2;let o=i.TezosMessageUtils.readAddress(e.substring(t,t+44));t+=44;let s=i.TezosMessageUtils.findInt(e,t);t+=s.length;let l=i.TezosMessageUtils.findInt(e,t);t+=l.length;let c=i.TezosMessageUtils.findInt(e,t);t+=c.length;let u=i.TezosMessageUtils.findInt(e,t);t+=u.length;let d,h=i.TezosMessageUtils.readPublicKey(e.substring(t,t+66));return t+=66,e.length>t&&(d=r(e.substring(t,t+2))),{operation:{kind:"reveal",source:o,public_key:h,fee:s.value+"",gas_limit:c.value+"",storage_limit:u.value+"",counter:l.value+""},branch:n,next:d,nextoffset:d?t:-1}}function h(e){if("reveal"!==e.kind)throw new Error("Incorrect operation type.");if(void 0===e.public_key)throw new Error("Missing public key.");let a=i.TezosMessageUtils.writeInt(n.indexOf("reveal"));return a+=i.TezosMessageUtils.writeAddress(e.source),a+=i.TezosMessageUtils.writeInt(parseInt(e.fee)),a+=i.TezosMessageUtils.writeInt(parseInt(e.counter)),a+=i.TezosMessageUtils.writeInt(parseInt(e.gas_limit)),a+=i.TezosMessageUtils.writeInt(parseInt(e.storage_limit)),a+=i.TezosMessageUtils.writePublicKey(e.public_key)}function A(e,a=!0){if("transaction"!==r(a?e.substring(64,66):e.substring(0,2)))throw new Error("Provided operation is not a transaction.");let n=0,o="";a?(o=i.TezosMessageUtils.readBranch(e.substring(n,n+64)),n+=66):n+=2;let s=i.TezosMessageUtils.readAddress(e.substring(n,n+44));n+=44;let l=i.TezosMessageUtils.findInt(e,n);n+=l.length;let c=i.TezosMessageUtils.findInt(e,n);n+=c.length;let u=i.TezosMessageUtils.findInt(e,n);n+=u.length;let d=i.TezosMessageUtils.findInt(e,n);n+=d.length;let h=i.TezosMessageUtils.findInt(e,n);n+=h.length;let A=i.TezosMessageUtils.readAddress(e.substring(n,n+44));n+=44;let g=i.TezosMessageUtils.readBoolean(e.substring(n,n+2));n+=2;let p,m="";if(g){const a=parseInt(e.substring(n,n+8),16);n+=8;const r=t.TezosLanguageUtil.hexToMicheline(e.substring(n));if(m=r.code,r.consumed!==2*a)throw new Error("Failed to parse transaction parameters: length mismatch");n+=2*a}return e.length>n&&(p=r(e.substring(n,n+2))),{operation:{kind:"transaction",source:s,destination:A,amount:h.value.toString(),fee:l.value.toString(),gas_limit:u.value.toString(),storage_limit:d.value.toString(),counter:c.value.toString(),parameters:m},branch:o,next:p,nextoffset:p?n:-1}}function g(e){if("transaction"!==e.kind)throw new Error("Incorrect operation type");if(void 0===e.amount)throw new Error("Missing amount");if(void 0===e.destination)throw new Error("Missing destination");let a=i.TezosMessageUtils.writeInt(n.indexOf("transaction"));if(a+=i.TezosMessageUtils.writeAddress(e.source),a+=i.TezosMessageUtils.writeInt(parseInt(e.fee)),a+=i.TezosMessageUtils.writeInt(parseInt(e.counter)),a+=i.TezosMessageUtils.writeInt(parseInt(e.gas_limit)),a+=i.TezosMessageUtils.writeInt(parseInt(e.storage_limit)),a+=i.TezosMessageUtils.writeInt(parseInt(e.amount)),a+=i.TezosMessageUtils.writeAddress(e.destination),e.parameters){const r=t.TezosLanguageUtil.normalizeMichelineWhiteSpace(JSON.stringify(e.parameters)),i=t.TezosLanguageUtil.translateMichelineToHex(r);a+="ff"+("0000000"+(i.length/2).toString(16)).slice(-8)+i}else a+="00";return a}function p(e,a=!0){if("origination"!==r(a?e.substring(64,66):e.substring(0,2)))throw new Error("Provided operation is not an origination.");let n=0,o="";a?(o=i.TezosMessageUtils.readBranch(e.substring(n,n+64)),n+=66):n+=2;let s=i.TezosMessageUtils.readAddress(e.substring(n,n+44));n+=44;let l=i.TezosMessageUtils.findInt(e,n);n+=l.length;let c=i.TezosMessageUtils.findInt(e,n);n+=c.length;let u=i.TezosMessageUtils.findInt(e,n);n+=u.length;let d=i.TezosMessageUtils.findInt(e,n);n+=d.length;let h=i.TezosMessageUtils.readAddress(e.substring(n,n+42));n+=42;let A=i.TezosMessageUtils.findInt(e,n);n+=A.length;let g=i.TezosMessageUtils.readBoolean(e.substring(n,n+2));n+=2;let p=i.TezosMessageUtils.readBoolean(e.substring(n,n+2));n+=2;let m=i.TezosMessageUtils.readBoolean(e.substring(n,n+2));n+=2;let f="";m&&(f=i.TezosMessageUtils.readAddress(e.substring(n,n+42)),n+=42);let y=i.TezosMessageUtils.readBoolean(e.substring(n,n+2));n+=2;let b,k="";if(y){let a=parseInt(e.substring(n,n+8),16);n+=8;const r=t.TezosLanguageUtil.hexToMicheline(e.substring(n,n+2*a)).code;n+=2*a;let i=parseInt(e.substring(n,n+8),16);n+=8;const o=t.TezosLanguageUtil.hexToMicheline(e.substring(n,n+2*i)).code;n+=2*i,k=`{ "script": [ ${r}, ${o} ] }`}return e.length>n&&(b=r(e.substring(n,n+2))),{operation:{kind:"origination",source:s,managerPubkey:h,balance:A.value+"",spendable:g,delegatable:p,delegate:m?f:void 0,fee:l.value+"",gas_limit:u.value+"",storage_limit:d.value+"",counter:c.value+"",script:y?k:void 0},branch:o,next:b,nextoffset:b?n:-1}}function m(e){if("origination"!==e.kind)throw new Error("Incorrect operation type");if(void 0===e.managerPubkey)throw new Error("Missing manager address");if(void 0===e.balance)throw new Error("Missing balance");let a=i.TezosMessageUtils.writeInt(n.indexOf("origination"));if(a+=i.TezosMessageUtils.writeAddress(e.source),a+=i.TezosMessageUtils.writeInt(parseInt(e.fee)),a+=i.TezosMessageUtils.writeInt(parseInt(e.counter)),a+=i.TezosMessageUtils.writeInt(parseInt(e.gas_limit)),a+=i.TezosMessageUtils.writeInt(parseInt(e.storage_limit)),a+=i.TezosMessageUtils.writeAddress(e.managerPubkey).slice(2),a+=i.TezosMessageUtils.writeInt(parseInt(e.balance)),a+=void 0!==e.spendable?i.TezosMessageUtils.writeBoolean(e.spendable):"00",a+=void 0!==e.delegatable?i.TezosMessageUtils.writeBoolean(e.delegatable):"00",void 0!==e.delegate?(a+=i.TezosMessageUtils.writeBoolean(!0),a+=i.TezosMessageUtils.writeAddress(e.delegate).slice(2)):a+=i.TezosMessageUtils.writeBoolean(!1),e.script){a+="ff";let r=e.script;try{r=JSON.parse(e.script)}catch(e){}let i=[];i.push(JSON.stringify(r.code,null,1)),i.push(JSON.stringify(r.storage,null,1)),a+=i.map(e=>t.TezosLanguageUtil.normalizeMichelineWhiteSpace(e)).map(e=>t.TezosLanguageUtil.translateMichelineToHex(e)).reduce((e,a)=>e+(("0000000"+(a.length/2).toString(16)).slice(-8)+a),"")}else a+="00";return a}function f(e,a=!0){if("delegation"!==r(a?e.substring(64,66):e.substring(0,2)))throw new Error("Provided operation is not a delegation.");let t=0,n="";a?(n=i.TezosMessageUtils.readBranch(e.substring(t,t+64)),t+=66):t+=2;let o=i.TezosMessageUtils.readAddress(e.substring(t,t+44));t+=44;let s=i.TezosMessageUtils.findInt(e,t);t+=s.length;let l=i.TezosMessageUtils.findInt(e,t);t+=l.length;let c=i.TezosMessageUtils.findInt(e,t);t+=c.length;let u=i.TezosMessageUtils.findInt(e,t);t+=u.length;let d=i.TezosMessageUtils.readBoolean(e.substring(t,t+2));t+=2;let h,A="";return d&&(A=i.TezosMessageUtils.readAddress(e.substring(t,t+42)),t+=42),e.length>t&&(h=r(e.substring(t,t+2))),{operation:{kind:"delegation",source:o,delegate:d?A:void 0,fee:s.value+"",gas_limit:c.value+"",storage_limit:u.value+"",counter:l.value+""},branch:n,next:h,nextoffset:h?t:-1}}function y(e){if("delegation"!==e.kind)throw new Error("Incorrect operation type");let a=i.TezosMessageUtils.writeInt(n.indexOf("delegation"));return a+=i.TezosMessageUtils.writeAddress(e.source),a+=i.TezosMessageUtils.writeInt(parseInt(e.fee)),a+=i.TezosMessageUtils.writeInt(parseInt(e.counter)),a+=i.TezosMessageUtils.writeInt(parseInt(e.gas_limit)),a+=i.TezosMessageUtils.writeInt(parseInt(e.storage_limit)),void 0!==e.delegate?(a+=i.TezosMessageUtils.writeBoolean(!0),a+=i.TezosMessageUtils.writeAddress(e.delegate).slice(2)):a+=i.TezosMessageUtils.writeBoolean(!1),a}a.getOperationType=r,a.idFirstOperation=o,a.parseOperation=s,a.encodeOperation=function(e){if(e.hasOwnProperty("pkh")&&e.hasOwnProperty("secret"))return l(e);if(e.hasOwnProperty("kind")){const a=e;if("reveal"===a.kind)return h(a);if("transaction"===a.kind)return g(a);if("origination"===a.kind)return m(a);if("delegation"===a.kind)return y(a)}if(e.hasOwnProperty("vote"))return u(e);throw new Error("Unsupported message type")},a.encodeActivation=l,a.parseBallot=c,a.encodeBallot=u,a.parseReveal=d,a.encodeReveal=h,a.parseTransaction=A,a.encodeTransaction=g,a.parseOrigination=p,a.encodeOrigination=m,a.parseDelegation=f,a.encodeDelegation=y,a.parseOperationGroup=function(e){let a=[],r=s(e,o(e));a.push(r.operation);let i=0;for(;r.next;)i+=r.nextoffset,r=s(e.substring(i),r.next,!1),a.push(r.operation);return a}}(a.TezosMessageCodec||(a.TezosMessageCodec={}))}).call(this,r(2).Buffer)},function(e,a,r){"use strict";Object.defineProperty(a,"__esModule",{value:!0});class i{static setLedgerUtils(e){this.ledgerUtils=e}static getLedgerUtils(){return this.ledgerUtils}}i.ledgerUtils=null,a.default=i},function(e,a,r){"use strict";var i=this&&this.__awaiter||function(e,a,r,i){return new(r||(r=Promise))(function(t,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function s(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){e.done?t(e.value):new r(function(a){a(e.value)}).then(o,s)}l((i=i.apply(e,a||[])).next())})},t=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var a={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(a[r]=e[r]);return a.default=e,a};Object.defineProperty(a,"__esModule",{value:!0});const n=t(r(202)),o=r(13),s=r(43),l=r(17);!function(e){function a(e,a,r,t){return i(this,void 0,void 0,function*(){if(15!==e.split(" ").length)throw new Error("The mnemonic should be 15 words.");if(!n.validateMnemonic(e))throw new Error("The given mnemonic could not be validated.");const i=(yield n.mnemonicToSeed(e,a)).slice(0,32),s=yield l.CryptoUtils.generateKeys(i),c=o.TezosMessageUtils.readKeyWithHint(s.privateKey,"edsk"),u=o.TezosMessageUtils.readKeyWithHint(s.publicKey,"edpk"),d=o.TezosMessageUtils.computeKeyHash(s.publicKey,"tz1");if(t&&d!==t)throw new Error("The given mnemonic and passphrase do not correspond to the applied public key hash");return{publicKey:u,privateKey:c,publicKeyHash:d,seed:"",storeType:r}})}e.unlockFundraiserIdentity=function(e,r,t,n){return i(this,void 0,void 0,function*(){return yield a(e,r+t,s.StoreType.Fundraiser,n)})},e.generateMnemonic=function(){return n.generateMnemonic(160)},e.unlockIdentityWithMnemonic=function(e,r){return i(this,void 0,void 0,function*(){return yield a(e,r,s.StoreType.Mnemonic)})},e.getKeysFromMnemonicAndPassphrase=a}(a.TezosWalletUtil||(a.TezosWalletUtil={}))},function(e,a,r){"use strict";(function(e){Object.defineProperty(a,"__esModule",{value:!0});const i=r(10),t=r(37),n=r(12),o=r(89);let s=o._default;const l="Invalid mnemonic",c="Invalid entropy",u="Invalid mnemonic checksum",d="A wordlist is required but a default could not be found.\nPlease explicitly pass a 2048 word array explicitly.";function h(e,a,r){for(;e.lengthh(e.toString(2),"0",8)).join("")}function p(e){const a=8*e.length/32;return g([...i("sha256").update(e).digest()]).slice(0,a)}function m(e){return"mnemonic"+(e||"")}function f(a,r){if(!(r=r||s))throw new Error(d);const i=(a||"").normalize("NFKD").split(" ");if(i.length%3!=0)throw new Error(l);const t=i.map(e=>{const a=r.indexOf(e);if(-1===a)throw new Error(l);return h(a.toString(2),"0",11)}).join(""),n=32*Math.floor(t.length/33),o=t.slice(0,n),g=t.slice(n),m=o.match(/(.{1,8})/g).map(A);if(m.length<16)throw new Error(c);if(m.length>32)throw new Error(c);if(m.length%4!=0)throw new Error(c);const f=e.from(m);if(p(f)!==g)throw new Error(u);return f.toString("hex")}function y(a,r){if(e.isBuffer(a)||(a=e.from(a,"hex")),!(r=r||s))throw new Error(d);if(a.length<16)throw new TypeError(c);if(a.length>32)throw new TypeError(c);if(a.length%4!=0)throw new TypeError(c);const i=(g([...a])+p(a)).match(/(.{1,11})/g).map(e=>{const a=A(e);return r[a]});return"あいこくしん"===r[0]?i.join(" "):i.join(" ")}a.mnemonicToSeedSync=function(a,r){const i=e.from((a||"").normalize("NFKD"),"utf8"),n=e.from(m((r||"").normalize("NFKD")),"utf8");return t.pbkdf2Sync(i,n,2048,64,"sha512")},a.mnemonicToSeed=function(a,r){return new Promise((i,n)=>{try{const o=e.from((a||"").normalize("NFKD"),"utf8"),s=e.from(m((r||"").normalize("NFKD")),"utf8");t.pbkdf2(o,s,2048,64,"sha512",(e,a)=>e?n(e):i(a))}catch(e){return n(e)}})},a.mnemonicToEntropy=f,a.entropyToMnemonic=y,a.generateMnemonic=function(e,a,r){if((e=e||128)%32!=0)throw new TypeError(c);return y((a=a||n)(e/8),r)},a.validateMnemonic=function(e,a){try{f(e,a)}catch(e){return!1}return!0},a.setDefaultWordlist=function(e){const a=o.wordlists[e];if(!a)throw new Error('Could not find wordlist for language "'+e+'"');s=a},a.getDefaultWordlist=function(){if(!s)throw new Error("No Default Wordlist set");return Object.keys(o.wordlists).filter(e=>"JA"!==e&&"EN"!==e&&o.wordlists[e].every((e,a)=>e===s[a]))[0]};var b=r(89);a.wordlists=b.wordlists}).call(this,r(2).Buffer)},function(e,a,r){var i={"./chinese_simplified.json":204,"./chinese_traditional.json":205,"./english.json":206,"./french.json":207,"./italian.json":208,"./japanese.json":209,"./korean.json":210,"./spanish.json":211};function t(e){var a=n(e);return r(a)}function n(e){if(!r.o(i,e)){var a=new Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}return i[e]}t.keys=function(){return Object.keys(i)},t.resolve=n,e.exports=t,t.id=203},function(e){e.exports=["的","一","是","在","不","了","有","和","人","这","中","大","为","上","个","国","我","以","要","他","时","来","用","们","生","到","作","地","于","出","就","分","对","成","会","可","主","发","年","动","同","工","也","能","下","过","子","说","产","种","面","而","方","后","多","定","行","学","法","所","民","得","经","十","三","之","进","着","等","部","度","家","电","力","里","如","水","化","高","自","二","理","起","小","物","现","实","加","量","都","两","体","制","机","当","使","点","从","业","本","去","把","性","好","应","开","它","合","还","因","由","其","些","然","前","外","天","政","四","日","那","社","义","事","平","形","相","全","表","间","样","与","关","各","重","新","线","内","数","正","心","反","你","明","看","原","又","么","利","比","或","但","质","气","第","向","道","命","此","变","条","只","没","结","解","问","意","建","月","公","无","系","军","很","情","者","最","立","代","想","已","通","并","提","直","题","党","程","展","五","果","料","象","员","革","位","入","常","文","总","次","品","式","活","设","及","管","特","件","长","求","老","头","基","资","边","流","路","级","少","图","山","统","接","知","较","将","组","见","计","别","她","手","角","期","根","论","运","农","指","几","九","区","强","放","决","西","被","干","做","必","战","先","回","则","任","取","据","处","队","南","给","色","光","门","即","保","治","北","造","百","规","热","领","七","海","口","东","导","器","压","志","世","金","增","争","济","阶","油","思","术","极","交","受","联","什","认","六","共","权","收","证","改","清","美","再","采","转","更","单","风","切","打","白","教","速","花","带","安","场","身","车","例","真","务","具","万","每","目","至","达","走","积","示","议","声","报","斗","完","类","八","离","华","名","确","才","科","张","信","马","节","话","米","整","空","元","况","今","集","温","传","土","许","步","群","广","石","记","需","段","研","界","拉","林","律","叫","且","究","观","越","织","装","影","算","低","持","音","众","书","布","复","容","儿","须","际","商","非","验","连","断","深","难","近","矿","千","周","委","素","技","备","半","办","青","省","列","习","响","约","支","般","史","感","劳","便","团","往","酸","历","市","克","何","除","消","构","府","称","太","准","精","值","号","率","族","维","划","选","标","写","存","候","毛","亲","快","效","斯","院","查","江","型","眼","王","按","格","养","易","置","派","层","片","始","却","专","状","育","厂","京","识","适","属","圆","包","火","住","调","满","县","局","照","参","红","细","引","听","该","铁","价","严","首","底","液","官","德","随","病","苏","失","尔","死","讲","配","女","黄","推","显","谈","罪","神","艺","呢","席","含","企","望","密","批","营","项","防","举","球","英","氧","势","告","李","台","落","木","帮","轮","破","亚","师","围","注","远","字","材","排","供","河","态","封","另","施","减","树","溶","怎","止","案","言","士","均","武","固","叶","鱼","波","视","仅","费","紧","爱","左","章","早","朝","害","续","轻","服","试","食","充","兵","源","判","护","司","足","某","练","差","致","板","田","降","黑","犯","负","击","范","继","兴","似","余","坚","曲","输","修","故","城","夫","够","送","笔","船","占","右","财","吃","富","春","职","觉","汉","画","功","巴","跟","虽","杂","飞","检","吸","助","升","阳","互","初","创","抗","考","投","坏","策","古","径","换","未","跑","留","钢","曾","端","责","站","简","述","钱","副","尽","帝","射","草","冲","承","独","令","限","阿","宣","环","双","请","超","微","让","控","州","良","轴","找","否","纪","益","依","优","顶","础","载","倒","房","突","坐","粉","敌","略","客","袁","冷","胜","绝","析","块","剂","测","丝","协","诉","念","陈","仍","罗","盐","友","洋","错","苦","夜","刑","移","频","逐","靠","混","母","短","皮","终","聚","汽","村","云","哪","既","距","卫","停","烈","央","察","烧","迅","境","若","印","洲","刻","括","激","孔","搞","甚","室","待","核","校","散","侵","吧","甲","游","久","菜","味","旧","模","湖","货","损","预","阻","毫","普","稳","乙","妈","植","息","扩","银","语","挥","酒","守","拿","序","纸","医","缺","雨","吗","针","刘","啊","急","唱","误","训","愿","审","附","获","茶","鲜","粮","斤","孩","脱","硫","肥","善","龙","演","父","渐","血","欢","械","掌","歌","沙","刚","攻","谓","盾","讨","晚","粒","乱","燃","矛","乎","杀","药","宁","鲁","贵","钟","煤","读","班","伯","香","介","迫","句","丰","培","握","兰","担","弦","蛋","沉","假","穿","执","答","乐","谁","顺","烟","缩","征","脸","喜","松","脚","困","异","免","背","星","福","买","染","井","概","慢","怕","磁","倍","祖","皇","促","静","补","评","翻","肉","践","尼","衣","宽","扬","棉","希","伤","操","垂","秋","宜","氢","套","督","振","架","亮","末","宪","庆","编","牛","触","映","雷","销","诗","座","居","抓","裂","胞","呼","娘","景","威","绿","晶","厚","盟","衡","鸡","孙","延","危","胶","屋","乡","临","陆","顾","掉","呀","灯","岁","措","束","耐","剧","玉","赵","跳","哥","季","课","凯","胡","额","款","绍","卷","齐","伟","蒸","殖","永","宗","苗","川","炉","岩","弱","零","杨","奏","沿","露","杆","探","滑","镇","饭","浓","航","怀","赶","库","夺","伊","灵","税","途","灭","赛","归","召","鼓","播","盘","裁","险","康","唯","录","菌","纯","借","糖","盖","横","符","私","努","堂","域","枪","润","幅","哈","竟","熟","虫","泽","脑","壤","碳","欧","遍","侧","寨","敢","彻","虑","斜","薄","庭","纳","弹","饲","伸","折","麦","湿","暗","荷","瓦","塞","床","筑","恶","户","访","塔","奇","透","梁","刀","旋","迹","卡","氯","遇","份","毒","泥","退","洗","摆","灰","彩","卖","耗","夏","择","忙","铜","献","硬","予","繁","圈","雪","函","亦","抽","篇","阵","阴","丁","尺","追","堆","雄","迎","泛","爸","楼","避","谋","吨","野","猪","旗","累","偏","典","馆","索","秦","脂","潮","爷","豆","忽","托","惊","塑","遗","愈","朱","替","纤","粗","倾","尚","痛","楚","谢","奋","购","磨","君","池","旁","碎","骨","监","捕","弟","暴","割","贯","殊","释","词","亡","壁","顿","宝","午","尘","闻","揭","炮","残","冬","桥","妇","警","综","招","吴","付","浮","遭","徐","您","摇","谷","赞","箱","隔","订","男","吹","园","纷","唐","败","宋","玻","巨","耕","坦","荣","闭","湾","键","凡","驻","锅","救","恩","剥","凝","碱","齿","截","炼","麻","纺","禁","废","盛","版","缓","净","睛","昌","婚","涉","筒","嘴","插","岸","朗","庄","街","藏","姑","贸","腐","奴","啦","惯","乘","伙","恢","匀","纱","扎","辩","耳","彪","臣","亿","璃","抵","脉","秀","萨","俄","网","舞","店","喷","纵","寸","汗","挂","洪","贺","闪","柬","爆","烯","津","稻","墙","软","勇","像","滚","厘","蒙","芳","肯","坡","柱","荡","腿","仪","旅","尾","轧","冰","贡","登","黎","削","钻","勒","逃","障","氨","郭","峰","币","港","伏","轨","亩","毕","擦","莫","刺","浪","秘","援","株","健","售","股","岛","甘","泡","睡","童","铸","汤","阀","休","汇","舍","牧","绕","炸","哲","磷","绩","朋","淡","尖","启","陷","柴","呈","徒","颜","泪","稍","忘","泵","蓝","拖","洞","授","镜","辛","壮","锋","贫","虚","弯","摩","泰","幼","廷","尊","窗","纲","弄","隶","疑","氏","宫","姐","震","瑞","怪","尤","琴","循","描","膜","违","夹","腰","缘","珠","穷","森","枝","竹","沟","催","绳","忆","邦","剩","幸","浆","栏","拥","牙","贮","礼","滤","钠","纹","罢","拍","咱","喊","袖","埃","勤","罚","焦","潜","伍","墨","欲","缝","姓","刊","饱","仿","奖","铝","鬼","丽","跨","默","挖","链","扫","喝","袋","炭","污","幕","诸","弧","励","梅","奶","洁","灾","舟","鉴","苯","讼","抱","毁","懂","寒","智","埔","寄","届","跃","渡","挑","丹","艰","贝","碰","拔","爹","戴","码","梦","芽","熔","赤","渔","哭","敬","颗","奔","铅","仲","虎","稀","妹","乏","珍","申","桌","遵","允","隆","螺","仓","魏","锐","晓","氮","兼","隐","碍","赫","拨","忠","肃","缸","牵","抢","博","巧","壳","兄","杜","讯","诚","碧","祥","柯","页","巡","矩","悲","灌","龄","伦","票","寻","桂","铺","圣","恐","恰","郑","趣","抬","荒","腾","贴","柔","滴","猛","阔","辆","妻","填","撤","储","签","闹","扰","紫","砂","递","戏","吊","陶","伐","喂","疗","瓶","婆","抚","臂","摸","忍","虾","蜡","邻","胸","巩","挤","偶","弃","槽","劲","乳","邓","吉","仁","烂","砖","租","乌","舰","伴","瓜","浅","丙","暂","燥","橡","柳","迷","暖","牌","秧","胆","详","簧","踏","瓷","谱","呆","宾","糊","洛","辉","愤","竞","隙","怒","粘","乃","绪","肩","籍","敏","涂","熙","皆","侦","悬","掘","享","纠","醒","狂","锁","淀","恨","牲","霸","爬","赏","逆","玩","陵","祝","秒","浙","貌","役","彼","悉","鸭","趋","凤","晨","畜","辈","秩","卵","署","梯","炎","滩","棋","驱","筛","峡","冒","啥","寿","译","浸","泉","帽","迟","硅","疆","贷","漏","稿","冠","嫩","胁","芯","牢","叛","蚀","奥","鸣","岭","羊","凭","串","塘","绘","酵","融","盆","锡","庙","筹","冻","辅","摄","袭","筋","拒","僚","旱","钾","鸟","漆","沈","眉","疏","添","棒","穗","硝","韩","逼","扭","侨","凉","挺","碗","栽","炒","杯","患","馏","劝","豪","辽","勃","鸿","旦","吏","拜","狗","埋","辊","掩","饮","搬","骂","辞","勾","扣","估","蒋","绒","雾","丈","朵","姆","拟","宇","辑","陕","雕","偿","蓄","崇","剪","倡","厅","咬","驶","薯","刷","斥","番","赋","奉","佛","浇","漫","曼","扇","钙","桃","扶","仔","返","俗","亏","腔","鞋","棱","覆","框","悄","叔","撞","骗","勘","旺","沸","孤","吐","孟","渠","屈","疾","妙","惜","仰","狠","胀","谐","抛","霉","桑","岗","嘛","衰","盗","渗","脏","赖","涌","甜","曹","阅","肌","哩","厉","烃","纬","毅","昨","伪","症","煮","叹","钉","搭","茎","笼","酷","偷","弓","锥","恒","杰","坑","鼻","翼","纶","叙","狱","逮","罐","络","棚","抑","膨","蔬","寺","骤","穆","冶","枯","册","尸","凸","绅","坯","牺","焰","轰","欣","晋","瘦","御","锭","锦","丧","旬","锻","垄","搜","扑","邀","亭","酯","迈","舒","脆","酶","闲","忧","酚","顽","羽","涨","卸","仗","陪","辟","惩","杭","姚","肚","捉","飘","漂","昆","欺","吾","郎","烷","汁","呵","饰","萧","雅","邮","迁","燕","撒","姻","赴","宴","烦","债","帐","斑","铃","旨","醇","董","饼","雏","姿","拌","傅","腹","妥","揉","贤","拆","歪","葡","胺","丢","浩","徽","昂","垫","挡","览","贪","慰","缴","汪","慌","冯","诺","姜","谊","凶","劣","诬","耀","昏","躺","盈","骑","乔","溪","丛","卢","抹","闷","咨","刮","驾","缆","悟","摘","铒","掷","颇","幻","柄","惠","惨","佳","仇","腊","窝","涤","剑","瞧","堡","泼","葱","罩","霍","捞","胎","苍","滨","俩","捅","湘","砍","霞","邵","萄","疯","淮","遂","熊","粪","烘","宿","档","戈","驳","嫂","裕","徙","箭","捐","肠","撑","晒","辨","殿","莲","摊","搅","酱","屏","疫","哀","蔡","堵","沫","皱","畅","叠","阁","莱","敲","辖","钩","痕","坝","巷","饿","祸","丘","玄","溜","曰","逻","彭","尝","卿","妨","艇","吞","韦","怨","矮","歇"]},function(e){e.exports=["的","一","是","在","不","了","有","和","人","這","中","大","為","上","個","國","我","以","要","他","時","來","用","們","生","到","作","地","於","出","就","分","對","成","會","可","主","發","年","動","同","工","也","能","下","過","子","說","產","種","面","而","方","後","多","定","行","學","法","所","民","得","經","十","三","之","進","著","等","部","度","家","電","力","裡","如","水","化","高","自","二","理","起","小","物","現","實","加","量","都","兩","體","制","機","當","使","點","從","業","本","去","把","性","好","應","開","它","合","還","因","由","其","些","然","前","外","天","政","四","日","那","社","義","事","平","形","相","全","表","間","樣","與","關","各","重","新","線","內","數","正","心","反","你","明","看","原","又","麼","利","比","或","但","質","氣","第","向","道","命","此","變","條","只","沒","結","解","問","意","建","月","公","無","系","軍","很","情","者","最","立","代","想","已","通","並","提","直","題","黨","程","展","五","果","料","象","員","革","位","入","常","文","總","次","品","式","活","設","及","管","特","件","長","求","老","頭","基","資","邊","流","路","級","少","圖","山","統","接","知","較","將","組","見","計","別","她","手","角","期","根","論","運","農","指","幾","九","區","強","放","決","西","被","幹","做","必","戰","先","回","則","任","取","據","處","隊","南","給","色","光","門","即","保","治","北","造","百","規","熱","領","七","海","口","東","導","器","壓","志","世","金","增","爭","濟","階","油","思","術","極","交","受","聯","什","認","六","共","權","收","證","改","清","美","再","採","轉","更","單","風","切","打","白","教","速","花","帶","安","場","身","車","例","真","務","具","萬","每","目","至","達","走","積","示","議","聲","報","鬥","完","類","八","離","華","名","確","才","科","張","信","馬","節","話","米","整","空","元","況","今","集","溫","傳","土","許","步","群","廣","石","記","需","段","研","界","拉","林","律","叫","且","究","觀","越","織","裝","影","算","低","持","音","眾","書","布","复","容","兒","須","際","商","非","驗","連","斷","深","難","近","礦","千","週","委","素","技","備","半","辦","青","省","列","習","響","約","支","般","史","感","勞","便","團","往","酸","歷","市","克","何","除","消","構","府","稱","太","準","精","值","號","率","族","維","劃","選","標","寫","存","候","毛","親","快","效","斯","院","查","江","型","眼","王","按","格","養","易","置","派","層","片","始","卻","專","狀","育","廠","京","識","適","屬","圓","包","火","住","調","滿","縣","局","照","參","紅","細","引","聽","該","鐵","價","嚴","首","底","液","官","德","隨","病","蘇","失","爾","死","講","配","女","黃","推","顯","談","罪","神","藝","呢","席","含","企","望","密","批","營","項","防","舉","球","英","氧","勢","告","李","台","落","木","幫","輪","破","亞","師","圍","注","遠","字","材","排","供","河","態","封","另","施","減","樹","溶","怎","止","案","言","士","均","武","固","葉","魚","波","視","僅","費","緊","愛","左","章","早","朝","害","續","輕","服","試","食","充","兵","源","判","護","司","足","某","練","差","致","板","田","降","黑","犯","負","擊","范","繼","興","似","餘","堅","曲","輸","修","故","城","夫","夠","送","筆","船","佔","右","財","吃","富","春","職","覺","漢","畫","功","巴","跟","雖","雜","飛","檢","吸","助","昇","陽","互","初","創","抗","考","投","壞","策","古","徑","換","未","跑","留","鋼","曾","端","責","站","簡","述","錢","副","盡","帝","射","草","衝","承","獨","令","限","阿","宣","環","雙","請","超","微","讓","控","州","良","軸","找","否","紀","益","依","優","頂","礎","載","倒","房","突","坐","粉","敵","略","客","袁","冷","勝","絕","析","塊","劑","測","絲","協","訴","念","陳","仍","羅","鹽","友","洋","錯","苦","夜","刑","移","頻","逐","靠","混","母","短","皮","終","聚","汽","村","雲","哪","既","距","衛","停","烈","央","察","燒","迅","境","若","印","洲","刻","括","激","孔","搞","甚","室","待","核","校","散","侵","吧","甲","遊","久","菜","味","舊","模","湖","貨","損","預","阻","毫","普","穩","乙","媽","植","息","擴","銀","語","揮","酒","守","拿","序","紙","醫","缺","雨","嗎","針","劉","啊","急","唱","誤","訓","願","審","附","獲","茶","鮮","糧","斤","孩","脫","硫","肥","善","龍","演","父","漸","血","歡","械","掌","歌","沙","剛","攻","謂","盾","討","晚","粒","亂","燃","矛","乎","殺","藥","寧","魯","貴","鐘","煤","讀","班","伯","香","介","迫","句","豐","培","握","蘭","擔","弦","蛋","沉","假","穿","執","答","樂","誰","順","煙","縮","徵","臉","喜","松","腳","困","異","免","背","星","福","買","染","井","概","慢","怕","磁","倍","祖","皇","促","靜","補","評","翻","肉","踐","尼","衣","寬","揚","棉","希","傷","操","垂","秋","宜","氫","套","督","振","架","亮","末","憲","慶","編","牛","觸","映","雷","銷","詩","座","居","抓","裂","胞","呼","娘","景","威","綠","晶","厚","盟","衡","雞","孫","延","危","膠","屋","鄉","臨","陸","顧","掉","呀","燈","歲","措","束","耐","劇","玉","趙","跳","哥","季","課","凱","胡","額","款","紹","卷","齊","偉","蒸","殖","永","宗","苗","川","爐","岩","弱","零","楊","奏","沿","露","桿","探","滑","鎮","飯","濃","航","懷","趕","庫","奪","伊","靈","稅","途","滅","賽","歸","召","鼓","播","盤","裁","險","康","唯","錄","菌","純","借","糖","蓋","橫","符","私","努","堂","域","槍","潤","幅","哈","竟","熟","蟲","澤","腦","壤","碳","歐","遍","側","寨","敢","徹","慮","斜","薄","庭","納","彈","飼","伸","折","麥","濕","暗","荷","瓦","塞","床","築","惡","戶","訪","塔","奇","透","梁","刀","旋","跡","卡","氯","遇","份","毒","泥","退","洗","擺","灰","彩","賣","耗","夏","擇","忙","銅","獻","硬","予","繁","圈","雪","函","亦","抽","篇","陣","陰","丁","尺","追","堆","雄","迎","泛","爸","樓","避","謀","噸","野","豬","旗","累","偏","典","館","索","秦","脂","潮","爺","豆","忽","托","驚","塑","遺","愈","朱","替","纖","粗","傾","尚","痛","楚","謝","奮","購","磨","君","池","旁","碎","骨","監","捕","弟","暴","割","貫","殊","釋","詞","亡","壁","頓","寶","午","塵","聞","揭","炮","殘","冬","橋","婦","警","綜","招","吳","付","浮","遭","徐","您","搖","谷","贊","箱","隔","訂","男","吹","園","紛","唐","敗","宋","玻","巨","耕","坦","榮","閉","灣","鍵","凡","駐","鍋","救","恩","剝","凝","鹼","齒","截","煉","麻","紡","禁","廢","盛","版","緩","淨","睛","昌","婚","涉","筒","嘴","插","岸","朗","莊","街","藏","姑","貿","腐","奴","啦","慣","乘","夥","恢","勻","紗","扎","辯","耳","彪","臣","億","璃","抵","脈","秀","薩","俄","網","舞","店","噴","縱","寸","汗","掛","洪","賀","閃","柬","爆","烯","津","稻","牆","軟","勇","像","滾","厘","蒙","芳","肯","坡","柱","盪","腿","儀","旅","尾","軋","冰","貢","登","黎","削","鑽","勒","逃","障","氨","郭","峰","幣","港","伏","軌","畝","畢","擦","莫","刺","浪","秘","援","株","健","售","股","島","甘","泡","睡","童","鑄","湯","閥","休","匯","舍","牧","繞","炸","哲","磷","績","朋","淡","尖","啟","陷","柴","呈","徒","顏","淚","稍","忘","泵","藍","拖","洞","授","鏡","辛","壯","鋒","貧","虛","彎","摩","泰","幼","廷","尊","窗","綱","弄","隸","疑","氏","宮","姐","震","瑞","怪","尤","琴","循","描","膜","違","夾","腰","緣","珠","窮","森","枝","竹","溝","催","繩","憶","邦","剩","幸","漿","欄","擁","牙","貯","禮","濾","鈉","紋","罷","拍","咱","喊","袖","埃","勤","罰","焦","潛","伍","墨","欲","縫","姓","刊","飽","仿","獎","鋁","鬼","麗","跨","默","挖","鏈","掃","喝","袋","炭","污","幕","諸","弧","勵","梅","奶","潔","災","舟","鑑","苯","訟","抱","毀","懂","寒","智","埔","寄","屆","躍","渡","挑","丹","艱","貝","碰","拔","爹","戴","碼","夢","芽","熔","赤","漁","哭","敬","顆","奔","鉛","仲","虎","稀","妹","乏","珍","申","桌","遵","允","隆","螺","倉","魏","銳","曉","氮","兼","隱","礙","赫","撥","忠","肅","缸","牽","搶","博","巧","殼","兄","杜","訊","誠","碧","祥","柯","頁","巡","矩","悲","灌","齡","倫","票","尋","桂","鋪","聖","恐","恰","鄭","趣","抬","荒","騰","貼","柔","滴","猛","闊","輛","妻","填","撤","儲","簽","鬧","擾","紫","砂","遞","戲","吊","陶","伐","餵","療","瓶","婆","撫","臂","摸","忍","蝦","蠟","鄰","胸","鞏","擠","偶","棄","槽","勁","乳","鄧","吉","仁","爛","磚","租","烏","艦","伴","瓜","淺","丙","暫","燥","橡","柳","迷","暖","牌","秧","膽","詳","簧","踏","瓷","譜","呆","賓","糊","洛","輝","憤","競","隙","怒","粘","乃","緒","肩","籍","敏","塗","熙","皆","偵","懸","掘","享","糾","醒","狂","鎖","淀","恨","牲","霸","爬","賞","逆","玩","陵","祝","秒","浙","貌","役","彼","悉","鴨","趨","鳳","晨","畜","輩","秩","卵","署","梯","炎","灘","棋","驅","篩","峽","冒","啥","壽","譯","浸","泉","帽","遲","矽","疆","貸","漏","稿","冠","嫩","脅","芯","牢","叛","蝕","奧","鳴","嶺","羊","憑","串","塘","繪","酵","融","盆","錫","廟","籌","凍","輔","攝","襲","筋","拒","僚","旱","鉀","鳥","漆","沈","眉","疏","添","棒","穗","硝","韓","逼","扭","僑","涼","挺","碗","栽","炒","杯","患","餾","勸","豪","遼","勃","鴻","旦","吏","拜","狗","埋","輥","掩","飲","搬","罵","辭","勾","扣","估","蔣","絨","霧","丈","朵","姆","擬","宇","輯","陝","雕","償","蓄","崇","剪","倡","廳","咬","駛","薯","刷","斥","番","賦","奉","佛","澆","漫","曼","扇","鈣","桃","扶","仔","返","俗","虧","腔","鞋","棱","覆","框","悄","叔","撞","騙","勘","旺","沸","孤","吐","孟","渠","屈","疾","妙","惜","仰","狠","脹","諧","拋","黴","桑","崗","嘛","衰","盜","滲","臟","賴","湧","甜","曹","閱","肌","哩","厲","烴","緯","毅","昨","偽","症","煮","嘆","釘","搭","莖","籠","酷","偷","弓","錐","恆","傑","坑","鼻","翼","綸","敘","獄","逮","罐","絡","棚","抑","膨","蔬","寺","驟","穆","冶","枯","冊","屍","凸","紳","坯","犧","焰","轟","欣","晉","瘦","禦","錠","錦","喪","旬","鍛","壟","搜","撲","邀","亭","酯","邁","舒","脆","酶","閒","憂","酚","頑","羽","漲","卸","仗","陪","闢","懲","杭","姚","肚","捉","飄","漂","昆","欺","吾","郎","烷","汁","呵","飾","蕭","雅","郵","遷","燕","撒","姻","赴","宴","煩","債","帳","斑","鈴","旨","醇","董","餅","雛","姿","拌","傅","腹","妥","揉","賢","拆","歪","葡","胺","丟","浩","徽","昂","墊","擋","覽","貪","慰","繳","汪","慌","馮","諾","姜","誼","兇","劣","誣","耀","昏","躺","盈","騎","喬","溪","叢","盧","抹","悶","諮","刮","駕","纜","悟","摘","鉺","擲","頗","幻","柄","惠","慘","佳","仇","臘","窩","滌","劍","瞧","堡","潑","蔥","罩","霍","撈","胎","蒼","濱","倆","捅","湘","砍","霞","邵","萄","瘋","淮","遂","熊","糞","烘","宿","檔","戈","駁","嫂","裕","徙","箭","捐","腸","撐","曬","辨","殿","蓮","攤","攪","醬","屏","疫","哀","蔡","堵","沫","皺","暢","疊","閣","萊","敲","轄","鉤","痕","壩","巷","餓","禍","丘","玄","溜","曰","邏","彭","嘗","卿","妨","艇","吞","韋","怨","矮","歇"]},function(e){e.exports=["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"]},function(e){e.exports=["abaisser","abandon","abdiquer","abeille","abolir","aborder","aboutir","aboyer","abrasif","abreuver","abriter","abroger","abrupt","absence","absolu","absurde","abusif","abyssal","académie","acajou","acarien","accabler","accepter","acclamer","accolade","accroche","accuser","acerbe","achat","acheter","aciduler","acier","acompte","acquérir","acronyme","acteur","actif","actuel","adepte","adéquat","adhésif","adjectif","adjuger","admettre","admirer","adopter","adorer","adoucir","adresse","adroit","adulte","adverbe","aérer","aéronef","affaire","affecter","affiche","affreux","affubler","agacer","agencer","agile","agiter","agrafer","agréable","agrume","aider","aiguille","ailier","aimable","aisance","ajouter","ajuster","alarmer","alchimie","alerte","algèbre","algue","aliéner","aliment","alléger","alliage","allouer","allumer","alourdir","alpaga","altesse","alvéole","amateur","ambigu","ambre","aménager","amertume","amidon","amiral","amorcer","amour","amovible","amphibie","ampleur","amusant","analyse","anaphore","anarchie","anatomie","ancien","anéantir","angle","angoisse","anguleux","animal","annexer","annonce","annuel","anodin","anomalie","anonyme","anormal","antenne","antidote","anxieux","apaiser","apéritif","aplanir","apologie","appareil","appeler","apporter","appuyer","aquarium","aqueduc","arbitre","arbuste","ardeur","ardoise","argent","arlequin","armature","armement","armoire","armure","arpenter","arracher","arriver","arroser","arsenic","artériel","article","aspect","asphalte","aspirer","assaut","asservir","assiette","associer","assurer","asticot","astre","astuce","atelier","atome","atrium","atroce","attaque","attentif","attirer","attraper","aubaine","auberge","audace","audible","augurer","aurore","automne","autruche","avaler","avancer","avarice","avenir","averse","aveugle","aviateur","avide","avion","aviser","avoine","avouer","avril","axial","axiome","badge","bafouer","bagage","baguette","baignade","balancer","balcon","baleine","balisage","bambin","bancaire","bandage","banlieue","bannière","banquier","barbier","baril","baron","barque","barrage","bassin","bastion","bataille","bateau","batterie","baudrier","bavarder","belette","bélier","belote","bénéfice","berceau","berger","berline","bermuda","besace","besogne","bétail","beurre","biberon","bicycle","bidule","bijou","bilan","bilingue","billard","binaire","biologie","biopsie","biotype","biscuit","bison","bistouri","bitume","bizarre","blafard","blague","blanchir","blessant","blinder","blond","bloquer","blouson","bobard","bobine","boire","boiser","bolide","bonbon","bondir","bonheur","bonifier","bonus","bordure","borne","botte","boucle","boueux","bougie","boulon","bouquin","bourse","boussole","boutique","boxeur","branche","brasier","brave","brebis","brèche","breuvage","bricoler","brigade","brillant","brioche","brique","brochure","broder","bronzer","brousse","broyeur","brume","brusque","brutal","bruyant","buffle","buisson","bulletin","bureau","burin","bustier","butiner","butoir","buvable","buvette","cabanon","cabine","cachette","cadeau","cadre","caféine","caillou","caisson","calculer","calepin","calibre","calmer","calomnie","calvaire","camarade","caméra","camion","campagne","canal","caneton","canon","cantine","canular","capable","caporal","caprice","capsule","capter","capuche","carabine","carbone","caresser","caribou","carnage","carotte","carreau","carton","cascade","casier","casque","cassure","causer","caution","cavalier","caverne","caviar","cédille","ceinture","céleste","cellule","cendrier","censurer","central","cercle","cérébral","cerise","cerner","cerveau","cesser","chagrin","chaise","chaleur","chambre","chance","chapitre","charbon","chasseur","chaton","chausson","chavirer","chemise","chenille","chéquier","chercher","cheval","chien","chiffre","chignon","chimère","chiot","chlorure","chocolat","choisir","chose","chouette","chrome","chute","cigare","cigogne","cimenter","cinéma","cintrer","circuler","cirer","cirque","citerne","citoyen","citron","civil","clairon","clameur","claquer","classe","clavier","client","cligner","climat","clivage","cloche","clonage","cloporte","cobalt","cobra","cocasse","cocotier","coder","codifier","coffre","cogner","cohésion","coiffer","coincer","colère","colibri","colline","colmater","colonel","combat","comédie","commande","compact","concert","conduire","confier","congeler","connoter","consonne","contact","convexe","copain","copie","corail","corbeau","cordage","corniche","corpus","correct","cortège","cosmique","costume","coton","coude","coupure","courage","couteau","couvrir","coyote","crabe","crainte","cravate","crayon","créature","créditer","crémeux","creuser","crevette","cribler","crier","cristal","critère","croire","croquer","crotale","crucial","cruel","crypter","cubique","cueillir","cuillère","cuisine","cuivre","culminer","cultiver","cumuler","cupide","curatif","curseur","cyanure","cycle","cylindre","cynique","daigner","damier","danger","danseur","dauphin","débattre","débiter","déborder","débrider","débutant","décaler","décembre","déchirer","décider","déclarer","décorer","décrire","décupler","dédale","déductif","déesse","défensif","défiler","défrayer","dégager","dégivrer","déglutir","dégrafer","déjeuner","délice","déloger","demander","demeurer","démolir","dénicher","dénouer","dentelle","dénuder","départ","dépenser","déphaser","déplacer","déposer","déranger","dérober","désastre","descente","désert","désigner","désobéir","dessiner","destrier","détacher","détester","détourer","détresse","devancer","devenir","deviner","devoir","diable","dialogue","diamant","dicter","différer","digérer","digital","digne","diluer","dimanche","diminuer","dioxyde","directif","diriger","discuter","disposer","dissiper","distance","divertir","diviser","docile","docteur","dogme","doigt","domaine","domicile","dompter","donateur","donjon","donner","dopamine","dortoir","dorure","dosage","doseur","dossier","dotation","douanier","double","douceur","douter","doyen","dragon","draper","dresser","dribbler","droiture","duperie","duplexe","durable","durcir","dynastie","éblouir","écarter","écharpe","échelle","éclairer","éclipse","éclore","écluse","école","économie","écorce","écouter","écraser","écrémer","écrivain","écrou","écume","écureuil","édifier","éduquer","effacer","effectif","effigie","effort","effrayer","effusion","égaliser","égarer","éjecter","élaborer","élargir","électron","élégant","éléphant","élève","éligible","élitisme","éloge","élucider","éluder","emballer","embellir","embryon","émeraude","émission","emmener","émotion","émouvoir","empereur","employer","emporter","emprise","émulsion","encadrer","enchère","enclave","encoche","endiguer","endosser","endroit","enduire","énergie","enfance","enfermer","enfouir","engager","engin","englober","énigme","enjamber","enjeu","enlever","ennemi","ennuyeux","enrichir","enrobage","enseigne","entasser","entendre","entier","entourer","entraver","énumérer","envahir","enviable","envoyer","enzyme","éolien","épaissir","épargne","épatant","épaule","épicerie","épidémie","épier","épilogue","épine","épisode","épitaphe","époque","épreuve","éprouver","épuisant","équerre","équipe","ériger","érosion","erreur","éruption","escalier","espadon","espèce","espiègle","espoir","esprit","esquiver","essayer","essence","essieu","essorer","estime","estomac","estrade","étagère","étaler","étanche","étatique","éteindre","étendoir","éternel","éthanol","éthique","ethnie","étirer","étoffer","étoile","étonnant","étourdir","étrange","étroit","étude","euphorie","évaluer","évasion","éventail","évidence","éviter","évolutif","évoquer","exact","exagérer","exaucer","exceller","excitant","exclusif","excuse","exécuter","exemple","exercer","exhaler","exhorter","exigence","exiler","exister","exotique","expédier","explorer","exposer","exprimer","exquis","extensif","extraire","exulter","fable","fabuleux","facette","facile","facture","faiblir","falaise","fameux","famille","farceur","farfelu","farine","farouche","fasciner","fatal","fatigue","faucon","fautif","faveur","favori","fébrile","féconder","fédérer","félin","femme","fémur","fendoir","féodal","fermer","féroce","ferveur","festival","feuille","feutre","février","fiasco","ficeler","fictif","fidèle","figure","filature","filetage","filière","filleul","filmer","filou","filtrer","financer","finir","fiole","firme","fissure","fixer","flairer","flamme","flasque","flatteur","fléau","flèche","fleur","flexion","flocon","flore","fluctuer","fluide","fluvial","folie","fonderie","fongible","fontaine","forcer","forgeron","formuler","fortune","fossile","foudre","fougère","fouiller","foulure","fourmi","fragile","fraise","franchir","frapper","frayeur","frégate","freiner","frelon","frémir","frénésie","frère","friable","friction","frisson","frivole","froid","fromage","frontal","frotter","fruit","fugitif","fuite","fureur","furieux","furtif","fusion","futur","gagner","galaxie","galerie","gambader","garantir","gardien","garnir","garrigue","gazelle","gazon","géant","gélatine","gélule","gendarme","général","génie","genou","gentil","géologie","géomètre","géranium","germe","gestuel","geyser","gibier","gicler","girafe","givre","glace","glaive","glisser","globe","gloire","glorieux","golfeur","gomme","gonfler","gorge","gorille","goudron","gouffre","goulot","goupille","gourmand","goutte","graduel","graffiti","graine","grand","grappin","gratuit","gravir","grenat","griffure","griller","grimper","grogner","gronder","grotte","groupe","gruger","grutier","gruyère","guépard","guerrier","guide","guimauve","guitare","gustatif","gymnaste","gyrostat","habitude","hachoir","halte","hameau","hangar","hanneton","haricot","harmonie","harpon","hasard","hélium","hématome","herbe","hérisson","hermine","héron","hésiter","heureux","hiberner","hibou","hilarant","histoire","hiver","homard","hommage","homogène","honneur","honorer","honteux","horde","horizon","horloge","hormone","horrible","houleux","housse","hublot","huileux","humain","humble","humide","humour","hurler","hydromel","hygiène","hymne","hypnose","idylle","ignorer","iguane","illicite","illusion","image","imbiber","imiter","immense","immobile","immuable","impact","impérial","implorer","imposer","imprimer","imputer","incarner","incendie","incident","incliner","incolore","indexer","indice","inductif","inédit","ineptie","inexact","infini","infliger","informer","infusion","ingérer","inhaler","inhiber","injecter","injure","innocent","inoculer","inonder","inscrire","insecte","insigne","insolite","inspirer","instinct","insulter","intact","intense","intime","intrigue","intuitif","inutile","invasion","inventer","inviter","invoquer","ironique","irradier","irréel","irriter","isoler","ivoire","ivresse","jaguar","jaillir","jambe","janvier","jardin","jauger","jaune","javelot","jetable","jeton","jeudi","jeunesse","joindre","joncher","jongler","joueur","jouissif","journal","jovial","joyau","joyeux","jubiler","jugement","junior","jupon","juriste","justice","juteux","juvénile","kayak","kimono","kiosque","label","labial","labourer","lacérer","lactose","lagune","laine","laisser","laitier","lambeau","lamelle","lampe","lanceur","langage","lanterne","lapin","largeur","larme","laurier","lavabo","lavoir","lecture","légal","léger","légume","lessive","lettre","levier","lexique","lézard","liasse","libérer","libre","licence","licorne","liège","lièvre","ligature","ligoter","ligue","limer","limite","limonade","limpide","linéaire","lingot","lionceau","liquide","lisière","lister","lithium","litige","littoral","livreur","logique","lointain","loisir","lombric","loterie","louer","lourd","loutre","louve","loyal","lubie","lucide","lucratif","lueur","lugubre","luisant","lumière","lunaire","lundi","luron","lutter","luxueux","machine","magasin","magenta","magique","maigre","maillon","maintien","mairie","maison","majorer","malaxer","maléfice","malheur","malice","mallette","mammouth","mandater","maniable","manquant","manteau","manuel","marathon","marbre","marchand","mardi","maritime","marqueur","marron","marteler","mascotte","massif","matériel","matière","matraque","maudire","maussade","mauve","maximal","méchant","méconnu","médaille","médecin","méditer","méduse","meilleur","mélange","mélodie","membre","mémoire","menacer","mener","menhir","mensonge","mentor","mercredi","mérite","merle","messager","mesure","métal","météore","méthode","métier","meuble","miauler","microbe","miette","mignon","migrer","milieu","million","mimique","mince","minéral","minimal","minorer","minute","miracle","miroiter","missile","mixte","mobile","moderne","moelleux","mondial","moniteur","monnaie","monotone","monstre","montagne","monument","moqueur","morceau","morsure","mortier","moteur","motif","mouche","moufle","moulin","mousson","mouton","mouvant","multiple","munition","muraille","murène","murmure","muscle","muséum","musicien","mutation","muter","mutuel","myriade","myrtille","mystère","mythique","nageur","nappe","narquois","narrer","natation","nation","nature","naufrage","nautique","navire","nébuleux","nectar","néfaste","négation","négliger","négocier","neige","nerveux","nettoyer","neurone","neutron","neveu","niche","nickel","nitrate","niveau","noble","nocif","nocturne","noirceur","noisette","nomade","nombreux","nommer","normatif","notable","notifier","notoire","nourrir","nouveau","novateur","novembre","novice","nuage","nuancer","nuire","nuisible","numéro","nuptial","nuque","nutritif","obéir","objectif","obliger","obscur","observer","obstacle","obtenir","obturer","occasion","occuper","océan","octobre","octroyer","octupler","oculaire","odeur","odorant","offenser","officier","offrir","ogive","oiseau","oisillon","olfactif","olivier","ombrage","omettre","onctueux","onduler","onéreux","onirique","opale","opaque","opérer","opinion","opportun","opprimer","opter","optique","orageux","orange","orbite","ordonner","oreille","organe","orgueil","orifice","ornement","orque","ortie","osciller","osmose","ossature","otarie","ouragan","ourson","outil","outrager","ouvrage","ovation","oxyde","oxygène","ozone","paisible","palace","palmarès","palourde","palper","panache","panda","pangolin","paniquer","panneau","panorama","pantalon","papaye","papier","papoter","papyrus","paradoxe","parcelle","paresse","parfumer","parler","parole","parrain","parsemer","partager","parure","parvenir","passion","pastèque","paternel","patience","patron","pavillon","pavoiser","payer","paysage","peigne","peintre","pelage","pélican","pelle","pelouse","peluche","pendule","pénétrer","pénible","pensif","pénurie","pépite","péplum","perdrix","perforer","période","permuter","perplexe","persil","perte","peser","pétale","petit","pétrir","peuple","pharaon","phobie","phoque","photon","phrase","physique","piano","pictural","pièce","pierre","pieuvre","pilote","pinceau","pipette","piquer","pirogue","piscine","piston","pivoter","pixel","pizza","placard","plafond","plaisir","planer","plaque","plastron","plateau","pleurer","plexus","pliage","plomb","plonger","pluie","plumage","pochette","poésie","poète","pointe","poirier","poisson","poivre","polaire","policier","pollen","polygone","pommade","pompier","ponctuel","pondérer","poney","portique","position","posséder","posture","potager","poteau","potion","pouce","poulain","poumon","pourpre","poussin","pouvoir","prairie","pratique","précieux","prédire","préfixe","prélude","prénom","présence","prétexte","prévoir","primitif","prince","prison","priver","problème","procéder","prodige","profond","progrès","proie","projeter","prologue","promener","propre","prospère","protéger","prouesse","proverbe","prudence","pruneau","psychose","public","puceron","puiser","pulpe","pulsar","punaise","punitif","pupitre","purifier","puzzle","pyramide","quasar","querelle","question","quiétude","quitter","quotient","racine","raconter","radieux","ragondin","raideur","raisin","ralentir","rallonge","ramasser","rapide","rasage","ratisser","ravager","ravin","rayonner","réactif","réagir","réaliser","réanimer","recevoir","réciter","réclamer","récolter","recruter","reculer","recycler","rédiger","redouter","refaire","réflexe","réformer","refrain","refuge","régalien","région","réglage","régulier","réitérer","rejeter","rejouer","relatif","relever","relief","remarque","remède","remise","remonter","remplir","remuer","renard","renfort","renifler","renoncer","rentrer","renvoi","replier","reporter","reprise","reptile","requin","réserve","résineux","résoudre","respect","rester","résultat","rétablir","retenir","réticule","retomber","retracer","réunion","réussir","revanche","revivre","révolte","révulsif","richesse","rideau","rieur","rigide","rigoler","rincer","riposter","risible","risque","rituel","rival","rivière","rocheux","romance","rompre","ronce","rondin","roseau","rosier","rotatif","rotor","rotule","rouge","rouille","rouleau","routine","royaume","ruban","rubis","ruche","ruelle","rugueux","ruiner","ruisseau","ruser","rustique","rythme","sabler","saboter","sabre","sacoche","safari","sagesse","saisir","salade","salive","salon","saluer","samedi","sanction","sanglier","sarcasme","sardine","saturer","saugrenu","saumon","sauter","sauvage","savant","savonner","scalpel","scandale","scélérat","scénario","sceptre","schéma","science","scinder","score","scrutin","sculpter","séance","sécable","sécher","secouer","sécréter","sédatif","séduire","seigneur","séjour","sélectif","semaine","sembler","semence","séminal","sénateur","sensible","sentence","séparer","séquence","serein","sergent","sérieux","serrure","sérum","service","sésame","sévir","sevrage","sextuple","sidéral","siècle","siéger","siffler","sigle","signal","silence","silicium","simple","sincère","sinistre","siphon","sirop","sismique","situer","skier","social","socle","sodium","soigneux","soldat","soleil","solitude","soluble","sombre","sommeil","somnoler","sonde","songeur","sonnette","sonore","sorcier","sortir","sosie","sottise","soucieux","soudure","souffle","soulever","soupape","source","soutirer","souvenir","spacieux","spatial","spécial","sphère","spiral","stable","station","sternum","stimulus","stipuler","strict","studieux","stupeur","styliste","sublime","substrat","subtil","subvenir","succès","sucre","suffixe","suggérer","suiveur","sulfate","superbe","supplier","surface","suricate","surmener","surprise","sursaut","survie","suspect","syllabe","symbole","symétrie","synapse","syntaxe","système","tabac","tablier","tactile","tailler","talent","talisman","talonner","tambour","tamiser","tangible","tapis","taquiner","tarder","tarif","tartine","tasse","tatami","tatouage","taupe","taureau","taxer","témoin","temporel","tenaille","tendre","teneur","tenir","tension","terminer","terne","terrible","tétine","texte","thème","théorie","thérapie","thorax","tibia","tiède","timide","tirelire","tiroir","tissu","titane","titre","tituber","toboggan","tolérant","tomate","tonique","tonneau","toponyme","torche","tordre","tornade","torpille","torrent","torse","tortue","totem","toucher","tournage","tousser","toxine","traction","trafic","tragique","trahir","train","trancher","travail","trèfle","tremper","trésor","treuil","triage","tribunal","tricoter","trilogie","triomphe","tripler","triturer","trivial","trombone","tronc","tropical","troupeau","tuile","tulipe","tumulte","tunnel","turbine","tuteur","tutoyer","tuyau","tympan","typhon","typique","tyran","ubuesque","ultime","ultrason","unanime","unifier","union","unique","unitaire","univers","uranium","urbain","urticant","usage","usine","usuel","usure","utile","utopie","vacarme","vaccin","vagabond","vague","vaillant","vaincre","vaisseau","valable","valise","vallon","valve","vampire","vanille","vapeur","varier","vaseux","vassal","vaste","vecteur","vedette","végétal","véhicule","veinard","véloce","vendredi","vénérer","venger","venimeux","ventouse","verdure","vérin","vernir","verrou","verser","vertu","veston","vétéran","vétuste","vexant","vexer","viaduc","viande","victoire","vidange","vidéo","vignette","vigueur","vilain","village","vinaigre","violon","vipère","virement","virtuose","virus","visage","viseur","vision","visqueux","visuel","vital","vitesse","viticole","vitrine","vivace","vivipare","vocation","voguer","voile","voisin","voiture","volaille","volcan","voltiger","volume","vorace","vortex","voter","vouloir","voyage","voyelle","wagon","xénon","yacht","zèbre","zénith","zeste","zoologie"]},function(e){e.exports=["abaco","abbaglio","abbinato","abete","abisso","abolire","abrasivo","abrogato","accadere","accenno","accusato","acetone","achille","acido","acqua","acre","acrilico","acrobata","acuto","adagio","addebito","addome","adeguato","aderire","adipe","adottare","adulare","affabile","affetto","affisso","affranto","aforisma","afoso","africano","agave","agente","agevole","aggancio","agire","agitare","agonismo","agricolo","agrumeto","aguzzo","alabarda","alato","albatro","alberato","albo","albume","alce","alcolico","alettone","alfa","algebra","aliante","alibi","alimento","allagato","allegro","allievo","allodola","allusivo","almeno","alogeno","alpaca","alpestre","altalena","alterno","alticcio","altrove","alunno","alveolo","alzare","amalgama","amanita","amarena","ambito","ambrato","ameba","america","ametista","amico","ammasso","ammenda","ammirare","ammonito","amore","ampio","ampliare","amuleto","anacardo","anagrafe","analista","anarchia","anatra","anca","ancella","ancora","andare","andrea","anello","angelo","angolare","angusto","anima","annegare","annidato","anno","annuncio","anonimo","anticipo","anzi","apatico","apertura","apode","apparire","appetito","appoggio","approdo","appunto","aprile","arabica","arachide","aragosta","araldica","arancio","aratura","arazzo","arbitro","archivio","ardito","arenile","argento","argine","arguto","aria","armonia","arnese","arredato","arringa","arrosto","arsenico","arso","artefice","arzillo","asciutto","ascolto","asepsi","asettico","asfalto","asino","asola","aspirato","aspro","assaggio","asse","assoluto","assurdo","asta","astenuto","astice","astratto","atavico","ateismo","atomico","atono","attesa","attivare","attorno","attrito","attuale","ausilio","austria","autista","autonomo","autunno","avanzato","avere","avvenire","avviso","avvolgere","azione","azoto","azzimo","azzurro","babele","baccano","bacino","baco","badessa","badilata","bagnato","baita","balcone","baldo","balena","ballata","balzano","bambino","bandire","baraonda","barbaro","barca","baritono","barlume","barocco","basilico","basso","batosta","battuto","baule","bava","bavosa","becco","beffa","belgio","belva","benda","benevole","benigno","benzina","bere","berlina","beta","bibita","bici","bidone","bifido","biga","bilancia","bimbo","binocolo","biologo","bipede","bipolare","birbante","birra","biscotto","bisesto","bisnonno","bisonte","bisturi","bizzarro","blando","blatta","bollito","bonifico","bordo","bosco","botanico","bottino","bozzolo","braccio","bradipo","brama","branca","bravura","bretella","brevetto","brezza","briglia","brillante","brindare","broccolo","brodo","bronzina","brullo","bruno","bubbone","buca","budino","buffone","buio","bulbo","buono","burlone","burrasca","bussola","busta","cadetto","caduco","calamaro","calcolo","calesse","calibro","calmo","caloria","cambusa","camerata","camicia","cammino","camola","campale","canapa","candela","cane","canino","canotto","cantina","capace","capello","capitolo","capogiro","cappero","capra","capsula","carapace","carcassa","cardo","carisma","carovana","carretto","cartolina","casaccio","cascata","caserma","caso","cassone","castello","casuale","catasta","catena","catrame","cauto","cavillo","cedibile","cedrata","cefalo","celebre","cellulare","cena","cenone","centesimo","ceramica","cercare","certo","cerume","cervello","cesoia","cespo","ceto","chela","chiaro","chicca","chiedere","chimera","china","chirurgo","chitarra","ciao","ciclismo","cifrare","cigno","cilindro","ciottolo","circa","cirrosi","citrico","cittadino","ciuffo","civetta","civile","classico","clinica","cloro","cocco","codardo","codice","coerente","cognome","collare","colmato","colore","colposo","coltivato","colza","coma","cometa","commando","comodo","computer","comune","conciso","condurre","conferma","congelare","coniuge","connesso","conoscere","consumo","continuo","convegno","coperto","copione","coppia","copricapo","corazza","cordata","coricato","cornice","corolla","corpo","corredo","corsia","cortese","cosmico","costante","cottura","covato","cratere","cravatta","creato","credere","cremoso","crescita","creta","criceto","crinale","crisi","critico","croce","cronaca","crostata","cruciale","crusca","cucire","cuculo","cugino","cullato","cupola","curatore","cursore","curvo","cuscino","custode","dado","daino","dalmata","damerino","daniela","dannoso","danzare","datato","davanti","davvero","debutto","decennio","deciso","declino","decollo","decreto","dedicato","definito","deforme","degno","delegare","delfino","delirio","delta","demenza","denotato","dentro","deposito","derapata","derivare","deroga","descritto","deserto","desiderio","desumere","detersivo","devoto","diametro","dicembre","diedro","difeso","diffuso","digerire","digitale","diluvio","dinamico","dinnanzi","dipinto","diploma","dipolo","diradare","dire","dirotto","dirupo","disagio","discreto","disfare","disgelo","disposto","distanza","disumano","dito","divano","divelto","dividere","divorato","doblone","docente","doganale","dogma","dolce","domato","domenica","dominare","dondolo","dono","dormire","dote","dottore","dovuto","dozzina","drago","druido","dubbio","dubitare","ducale","duna","duomo","duplice","duraturo","ebano","eccesso","ecco","eclissi","economia","edera","edicola","edile","editoria","educare","egemonia","egli","egoismo","egregio","elaborato","elargire","elegante","elencato","eletto","elevare","elfico","elica","elmo","elsa","eluso","emanato","emblema","emesso","emiro","emotivo","emozione","empirico","emulo","endemico","enduro","energia","enfasi","enoteca","entrare","enzima","epatite","epilogo","episodio","epocale","eppure","equatore","erario","erba","erboso","erede","eremita","erigere","ermetico","eroe","erosivo","errante","esagono","esame","esanime","esaudire","esca","esempio","esercito","esibito","esigente","esistere","esito","esofago","esortato","esoso","espanso","espresso","essenza","esso","esteso","estimare","estonia","estroso","esultare","etilico","etnico","etrusco","etto","euclideo","europa","evaso","evidenza","evitato","evoluto","evviva","fabbrica","faccenda","fachiro","falco","famiglia","fanale","fanfara","fango","fantasma","fare","farfalla","farinoso","farmaco","fascia","fastoso","fasullo","faticare","fato","favoloso","febbre","fecola","fede","fegato","felpa","feltro","femmina","fendere","fenomeno","fermento","ferro","fertile","fessura","festivo","fetta","feudo","fiaba","fiducia","fifa","figurato","filo","finanza","finestra","finire","fiore","fiscale","fisico","fiume","flacone","flamenco","flebo","flemma","florido","fluente","fluoro","fobico","focaccia","focoso","foderato","foglio","folata","folclore","folgore","fondente","fonetico","fonia","fontana","forbito","forchetta","foresta","formica","fornaio","foro","fortezza","forzare","fosfato","fosso","fracasso","frana","frassino","fratello","freccetta","frenata","fresco","frigo","frollino","fronde","frugale","frutta","fucilata","fucsia","fuggente","fulmine","fulvo","fumante","fumetto","fumoso","fune","funzione","fuoco","furbo","furgone","furore","fuso","futile","gabbiano","gaffe","galateo","gallina","galoppo","gambero","gamma","garanzia","garbo","garofano","garzone","gasdotto","gasolio","gastrico","gatto","gaudio","gazebo","gazzella","geco","gelatina","gelso","gemello","gemmato","gene","genitore","gennaio","genotipo","gergo","ghepardo","ghiaccio","ghisa","giallo","gilda","ginepro","giocare","gioiello","giorno","giove","girato","girone","gittata","giudizio","giurato","giusto","globulo","glutine","gnomo","gobba","golf","gomito","gommone","gonfio","gonna","governo","gracile","grado","grafico","grammo","grande","grattare","gravoso","grazia","greca","gregge","grifone","grigio","grinza","grotta","gruppo","guadagno","guaio","guanto","guardare","gufo","guidare","ibernato","icona","identico","idillio","idolo","idra","idrico","idrogeno","igiene","ignaro","ignorato","ilare","illeso","illogico","illudere","imballo","imbevuto","imbocco","imbuto","immane","immerso","immolato","impacco","impeto","impiego","importo","impronta","inalare","inarcare","inattivo","incanto","incendio","inchino","incisivo","incluso","incontro","incrocio","incubo","indagine","india","indole","inedito","infatti","infilare","inflitto","ingaggio","ingegno","inglese","ingordo","ingrosso","innesco","inodore","inoltrare","inondato","insano","insetto","insieme","insonnia","insulina","intasato","intero","intonaco","intuito","inumidire","invalido","invece","invito","iperbole","ipnotico","ipotesi","ippica","iride","irlanda","ironico","irrigato","irrorare","isolato","isotopo","isterico","istituto","istrice","italia","iterare","labbro","labirinto","lacca","lacerato","lacrima","lacuna","laddove","lago","lampo","lancetta","lanterna","lardoso","larga","laringe","lastra","latenza","latino","lattuga","lavagna","lavoro","legale","leggero","lembo","lentezza","lenza","leone","lepre","lesivo","lessato","lesto","letterale","leva","levigato","libero","lido","lievito","lilla","limatura","limitare","limpido","lineare","lingua","liquido","lira","lirica","lisca","lite","litigio","livrea","locanda","lode","logica","lombare","londra","longevo","loquace","lorenzo","loto","lotteria","luce","lucidato","lumaca","luminoso","lungo","lupo","luppolo","lusinga","lusso","lutto","macabro","macchina","macero","macinato","madama","magico","maglia","magnete","magro","maiolica","malafede","malgrado","malinteso","malsano","malto","malumore","mana","mancia","mandorla","mangiare","manifesto","mannaro","manovra","mansarda","mantide","manubrio","mappa","maratona","marcire","maretta","marmo","marsupio","maschera","massaia","mastino","materasso","matricola","mattone","maturo","mazurca","meandro","meccanico","mecenate","medesimo","meditare","mega","melassa","melis","melodia","meninge","meno","mensola","mercurio","merenda","merlo","meschino","mese","messere","mestolo","metallo","metodo","mettere","miagolare","mica","micelio","michele","microbo","midollo","miele","migliore","milano","milite","mimosa","minerale","mini","minore","mirino","mirtillo","miscela","missiva","misto","misurare","mitezza","mitigare","mitra","mittente","mnemonico","modello","modifica","modulo","mogano","mogio","mole","molosso","monastero","monco","mondina","monetario","monile","monotono","monsone","montato","monviso","mora","mordere","morsicato","mostro","motivato","motosega","motto","movenza","movimento","mozzo","mucca","mucosa","muffa","mughetto","mugnaio","mulatto","mulinello","multiplo","mummia","munto","muovere","murale","musa","muscolo","musica","mutevole","muto","nababbo","nafta","nanometro","narciso","narice","narrato","nascere","nastrare","naturale","nautica","naviglio","nebulosa","necrosi","negativo","negozio","nemmeno","neofita","neretto","nervo","nessuno","nettuno","neutrale","neve","nevrotico","nicchia","ninfa","nitido","nobile","nocivo","nodo","nome","nomina","nordico","normale","norvegese","nostrano","notare","notizia","notturno","novella","nucleo","nulla","numero","nuovo","nutrire","nuvola","nuziale","oasi","obbedire","obbligo","obelisco","oblio","obolo","obsoleto","occasione","occhio","occidente","occorrere","occultare","ocra","oculato","odierno","odorare","offerta","offrire","offuscato","oggetto","oggi","ognuno","olandese","olfatto","oliato","oliva","ologramma","oltre","omaggio","ombelico","ombra","omega","omissione","ondoso","onere","onice","onnivoro","onorevole","onta","operato","opinione","opposto","oracolo","orafo","ordine","orecchino","orefice","orfano","organico","origine","orizzonte","orma","ormeggio","ornativo","orologio","orrendo","orribile","ortensia","ortica","orzata","orzo","osare","oscurare","osmosi","ospedale","ospite","ossa","ossidare","ostacolo","oste","otite","otre","ottagono","ottimo","ottobre","ovale","ovest","ovino","oviparo","ovocito","ovunque","ovviare","ozio","pacchetto","pace","pacifico","padella","padrone","paese","paga","pagina","palazzina","palesare","pallido","palo","palude","pandoro","pannello","paolo","paonazzo","paprica","parabola","parcella","parere","pargolo","pari","parlato","parola","partire","parvenza","parziale","passivo","pasticca","patacca","patologia","pattume","pavone","peccato","pedalare","pedonale","peggio","peloso","penare","pendice","penisola","pennuto","penombra","pensare","pentola","pepe","pepita","perbene","percorso","perdonato","perforare","pergamena","periodo","permesso","perno","perplesso","persuaso","pertugio","pervaso","pesatore","pesista","peso","pestifero","petalo","pettine","petulante","pezzo","piacere","pianta","piattino","piccino","picozza","piega","pietra","piffero","pigiama","pigolio","pigro","pila","pilifero","pillola","pilota","pimpante","pineta","pinna","pinolo","pioggia","piombo","piramide","piretico","pirite","pirolisi","pitone","pizzico","placebo","planare","plasma","platano","plenario","pochezza","poderoso","podismo","poesia","poggiare","polenta","poligono","pollice","polmonite","polpetta","polso","poltrona","polvere","pomice","pomodoro","ponte","popoloso","porfido","poroso","porpora","porre","portata","posa","positivo","possesso","postulato","potassio","potere","pranzo","prassi","pratica","precluso","predica","prefisso","pregiato","prelievo","premere","prenotare","preparato","presenza","pretesto","prevalso","prima","principe","privato","problema","procura","produrre","profumo","progetto","prolunga","promessa","pronome","proposta","proroga","proteso","prova","prudente","prugna","prurito","psiche","pubblico","pudica","pugilato","pugno","pulce","pulito","pulsante","puntare","pupazzo","pupilla","puro","quadro","qualcosa","quasi","querela","quota","raccolto","raddoppio","radicale","radunato","raffica","ragazzo","ragione","ragno","ramarro","ramingo","ramo","randagio","rantolare","rapato","rapina","rappreso","rasatura","raschiato","rasente","rassegna","rastrello","rata","ravveduto","reale","recepire","recinto","recluta","recondito","recupero","reddito","redimere","regalato","registro","regola","regresso","relazione","remare","remoto","renna","replica","reprimere","reputare","resa","residente","responso","restauro","rete","retina","retorica","rettifica","revocato","riassunto","ribadire","ribelle","ribrezzo","ricarica","ricco","ricevere","riciclato","ricordo","ricreduto","ridicolo","ridurre","rifasare","riflesso","riforma","rifugio","rigare","rigettato","righello","rilassato","rilevato","rimanere","rimbalzo","rimedio","rimorchio","rinascita","rincaro","rinforzo","rinnovo","rinomato","rinsavito","rintocco","rinuncia","rinvenire","riparato","ripetuto","ripieno","riportare","ripresa","ripulire","risata","rischio","riserva","risibile","riso","rispetto","ristoro","risultato","risvolto","ritardo","ritegno","ritmico","ritrovo","riunione","riva","riverso","rivincita","rivolto","rizoma","roba","robotico","robusto","roccia","roco","rodaggio","rodere","roditore","rogito","rollio","romantico","rompere","ronzio","rosolare","rospo","rotante","rotondo","rotula","rovescio","rubizzo","rubrica","ruga","rullino","rumine","rumoroso","ruolo","rupe","russare","rustico","sabato","sabbiare","sabotato","sagoma","salasso","saldatura","salgemma","salivare","salmone","salone","saltare","saluto","salvo","sapere","sapido","saporito","saraceno","sarcasmo","sarto","sassoso","satellite","satira","satollo","saturno","savana","savio","saziato","sbadiglio","sbalzo","sbancato","sbarra","sbattere","sbavare","sbendare","sbirciare","sbloccato","sbocciato","sbrinare","sbruffone","sbuffare","scabroso","scadenza","scala","scambiare","scandalo","scapola","scarso","scatenare","scavato","scelto","scenico","scettro","scheda","schiena","sciarpa","scienza","scindere","scippo","sciroppo","scivolo","sclerare","scodella","scolpito","scomparto","sconforto","scoprire","scorta","scossone","scozzese","scriba","scrollare","scrutinio","scuderia","scultore","scuola","scuro","scusare","sdebitare","sdoganare","seccatura","secondo","sedano","seggiola","segnalato","segregato","seguito","selciato","selettivo","sella","selvaggio","semaforo","sembrare","seme","seminato","sempre","senso","sentire","sepolto","sequenza","serata","serbato","sereno","serio","serpente","serraglio","servire","sestina","setola","settimana","sfacelo","sfaldare","sfamato","sfarzoso","sfaticato","sfera","sfida","sfilato","sfinge","sfocato","sfoderare","sfogo","sfoltire","sforzato","sfratto","sfruttato","sfuggito","sfumare","sfuso","sgabello","sgarbato","sgonfiare","sgorbio","sgrassato","sguardo","sibilo","siccome","sierra","sigla","signore","silenzio","sillaba","simbolo","simpatico","simulato","sinfonia","singolo","sinistro","sino","sintesi","sinusoide","sipario","sisma","sistole","situato","slitta","slogatura","sloveno","smarrito","smemorato","smentito","smeraldo","smilzo","smontare","smottato","smussato","snellire","snervato","snodo","sobbalzo","sobrio","soccorso","sociale","sodale","soffitto","sogno","soldato","solenne","solido","sollazzo","solo","solubile","solvente","somatico","somma","sonda","sonetto","sonnifero","sopire","soppeso","sopra","sorgere","sorpasso","sorriso","sorso","sorteggio","sorvolato","sospiro","sosta","sottile","spada","spalla","spargere","spatola","spavento","spazzola","specie","spedire","spegnere","spelatura","speranza","spessore","spettrale","spezzato","spia","spigoloso","spillato","spinoso","spirale","splendido","sportivo","sposo","spranga","sprecare","spronato","spruzzo","spuntino","squillo","sradicare","srotolato","stabile","stacco","staffa","stagnare","stampato","stantio","starnuto","stasera","statuto","stelo","steppa","sterzo","stiletto","stima","stirpe","stivale","stizzoso","stonato","storico","strappo","stregato","stridulo","strozzare","strutto","stuccare","stufo","stupendo","subentro","succoso","sudore","suggerito","sugo","sultano","suonare","superbo","supporto","surgelato","surrogato","sussurro","sutura","svagare","svedese","sveglio","svelare","svenuto","svezia","sviluppo","svista","svizzera","svolta","svuotare","tabacco","tabulato","tacciare","taciturno","tale","talismano","tampone","tannino","tara","tardivo","targato","tariffa","tarpare","tartaruga","tasto","tattico","taverna","tavolata","tazza","teca","tecnico","telefono","temerario","tempo","temuto","tendone","tenero","tensione","tentacolo","teorema","terme","terrazzo","terzetto","tesi","tesserato","testato","tetro","tettoia","tifare","tigella","timbro","tinto","tipico","tipografo","tiraggio","tiro","titanio","titolo","titubante","tizio","tizzone","toccare","tollerare","tolto","tombola","tomo","tonfo","tonsilla","topazio","topologia","toppa","torba","tornare","torrone","tortora","toscano","tossire","tostatura","totano","trabocco","trachea","trafila","tragedia","tralcio","tramonto","transito","trapano","trarre","trasloco","trattato","trave","treccia","tremolio","trespolo","tributo","tricheco","trifoglio","trillo","trincea","trio","tristezza","triturato","trivella","tromba","trono","troppo","trottola","trovare","truccato","tubatura","tuffato","tulipano","tumulto","tunisia","turbare","turchino","tuta","tutela","ubicato","uccello","uccisore","udire","uditivo","uffa","ufficio","uguale","ulisse","ultimato","umano","umile","umorismo","uncinetto","ungere","ungherese","unicorno","unificato","unisono","unitario","unte","uovo","upupa","uragano","urgenza","urlo","usanza","usato","uscito","usignolo","usuraio","utensile","utilizzo","utopia","vacante","vaccinato","vagabondo","vagliato","valanga","valgo","valico","valletta","valoroso","valutare","valvola","vampata","vangare","vanitoso","vano","vantaggio","vanvera","vapore","varano","varcato","variante","vasca","vedetta","vedova","veduto","vegetale","veicolo","velcro","velina","velluto","veloce","venato","vendemmia","vento","verace","verbale","vergogna","verifica","vero","verruca","verticale","vescica","vessillo","vestale","veterano","vetrina","vetusto","viandante","vibrante","vicenda","vichingo","vicinanza","vidimare","vigilia","vigneto","vigore","vile","villano","vimini","vincitore","viola","vipera","virgola","virologo","virulento","viscoso","visione","vispo","vissuto","visura","vita","vitello","vittima","vivanda","vivido","viziare","voce","voga","volatile","volere","volpe","voragine","vulcano","zampogna","zanna","zappato","zattera","zavorra","zefiro","zelante","zelo","zenzero","zerbino","zibetto","zinco","zircone","zitto","zolla","zotico","zucchero","zufolo","zulu","zuppa"]},function(e){e.exports=["あいこくしん","あいさつ","あいだ","あおぞら","あかちゃん","あきる","あけがた","あける","あこがれる","あさい","あさひ","あしあと","あじわう","あずかる","あずき","あそぶ","あたえる","あたためる","あたりまえ","あたる","あつい","あつかう","あっしゅく","あつまり","あつめる","あてな","あてはまる","あひる","あぶら","あぶる","あふれる","あまい","あまど","あまやかす","あまり","あみもの","あめりか","あやまる","あゆむ","あらいぐま","あらし","あらすじ","あらためる","あらゆる","あらわす","ありがとう","あわせる","あわてる","あんい","あんがい","あんこ","あんぜん","あんてい","あんない","あんまり","いいだす","いおん","いがい","いがく","いきおい","いきなり","いきもの","いきる","いくじ","いくぶん","いけばな","いけん","いこう","いこく","いこつ","いさましい","いさん","いしき","いじゅう","いじょう","いじわる","いずみ","いずれ","いせい","いせえび","いせかい","いせき","いぜん","いそうろう","いそがしい","いだい","いだく","いたずら","いたみ","いたりあ","いちおう","いちじ","いちど","いちば","いちぶ","いちりゅう","いつか","いっしゅん","いっせい","いっそう","いったん","いっち","いってい","いっぽう","いてざ","いてん","いどう","いとこ","いない","いなか","いねむり","いのち","いのる","いはつ","いばる","いはん","いびき","いひん","いふく","いへん","いほう","いみん","いもうと","いもたれ","いもり","いやがる","いやす","いよかん","いよく","いらい","いらすと","いりぐち","いりょう","いれい","いれもの","いれる","いろえんぴつ","いわい","いわう","いわかん","いわば","いわゆる","いんげんまめ","いんさつ","いんしょう","いんよう","うえき","うえる","うおざ","うがい","うかぶ","うかべる","うきわ","うくらいな","うくれれ","うけたまわる","うけつけ","うけとる","うけもつ","うける","うごかす","うごく","うこん","うさぎ","うしなう","うしろがみ","うすい","うすぎ","うすぐらい","うすめる","うせつ","うちあわせ","うちがわ","うちき","うちゅう","うっかり","うつくしい","うったえる","うつる","うどん","うなぎ","うなじ","うなずく","うなる","うねる","うのう","うぶげ","うぶごえ","うまれる","うめる","うもう","うやまう","うよく","うらがえす","うらぐち","うらない","うりあげ","うりきれ","うるさい","うれしい","うれゆき","うれる","うろこ","うわき","うわさ","うんこう","うんちん","うんてん","うんどう","えいえん","えいが","えいきょう","えいご","えいせい","えいぶん","えいよう","えいわ","えおり","えがお","えがく","えきたい","えくせる","えしゃく","えすて","えつらん","えのぐ","えほうまき","えほん","えまき","えもじ","えもの","えらい","えらぶ","えりあ","えんえん","えんかい","えんぎ","えんげき","えんしゅう","えんぜつ","えんそく","えんちょう","えんとつ","おいかける","おいこす","おいしい","おいつく","おうえん","おうさま","おうじ","おうせつ","おうたい","おうふく","おうべい","おうよう","おえる","おおい","おおう","おおどおり","おおや","おおよそ","おかえり","おかず","おがむ","おかわり","おぎなう","おきる","おくさま","おくじょう","おくりがな","おくる","おくれる","おこす","おこなう","おこる","おさえる","おさない","おさめる","おしいれ","おしえる","おじぎ","おじさん","おしゃれ","おそらく","おそわる","おたがい","おたく","おだやか","おちつく","おっと","おつり","おでかけ","おとしもの","おとなしい","おどり","おどろかす","おばさん","おまいり","おめでとう","おもいで","おもう","おもたい","おもちゃ","おやつ","おやゆび","およぼす","おらんだ","おろす","おんがく","おんけい","おんしゃ","おんせん","おんだん","おんちゅう","おんどけい","かあつ","かいが","がいき","がいけん","がいこう","かいさつ","かいしゃ","かいすいよく","かいぜん","かいぞうど","かいつう","かいてん","かいとう","かいふく","がいへき","かいほう","かいよう","がいらい","かいわ","かえる","かおり","かかえる","かがく","かがし","かがみ","かくご","かくとく","かざる","がぞう","かたい","かたち","がちょう","がっきゅう","がっこう","がっさん","がっしょう","かなざわし","かのう","がはく","かぶか","かほう","かほご","かまう","かまぼこ","かめれおん","かゆい","かようび","からい","かるい","かろう","かわく","かわら","がんか","かんけい","かんこう","かんしゃ","かんそう","かんたん","かんち","がんばる","きあい","きあつ","きいろ","ぎいん","きうい","きうん","きえる","きおう","きおく","きおち","きおん","きかい","きかく","きかんしゃ","ききて","きくばり","きくらげ","きけんせい","きこう","きこえる","きこく","きさい","きさく","きさま","きさらぎ","ぎじかがく","ぎしき","ぎじたいけん","ぎじにってい","ぎじゅつしゃ","きすう","きせい","きせき","きせつ","きそう","きぞく","きぞん","きたえる","きちょう","きつえん","ぎっちり","きつつき","きつね","きてい","きどう","きどく","きない","きなが","きなこ","きぬごし","きねん","きのう","きのした","きはく","きびしい","きひん","きふく","きぶん","きぼう","きほん","きまる","きみつ","きむずかしい","きめる","きもだめし","きもち","きもの","きゃく","きやく","ぎゅうにく","きよう","きょうりゅう","きらい","きらく","きりん","きれい","きれつ","きろく","ぎろん","きわめる","ぎんいろ","きんかくじ","きんじょ","きんようび","ぐあい","くいず","くうかん","くうき","くうぐん","くうこう","ぐうせい","くうそう","ぐうたら","くうふく","くうぼ","くかん","くきょう","くげん","ぐこう","くさい","くさき","くさばな","くさる","くしゃみ","くしょう","くすのき","くすりゆび","くせげ","くせん","ぐたいてき","くださる","くたびれる","くちこみ","くちさき","くつした","ぐっすり","くつろぐ","くとうてん","くどく","くなん","くねくね","くのう","くふう","くみあわせ","くみたてる","くめる","くやくしょ","くらす","くらべる","くるま","くれる","くろう","くわしい","ぐんかん","ぐんしょく","ぐんたい","ぐんて","けあな","けいかく","けいけん","けいこ","けいさつ","げいじゅつ","けいたい","げいのうじん","けいれき","けいろ","けおとす","けおりもの","げきか","げきげん","げきだん","げきちん","げきとつ","げきは","げきやく","げこう","げこくじょう","げざい","けさき","げざん","けしき","けしごむ","けしょう","げすと","けたば","けちゃっぷ","けちらす","けつあつ","けつい","けつえき","けっこん","けつじょ","けっせき","けってい","けつまつ","げつようび","げつれい","けつろん","げどく","けとばす","けとる","けなげ","けなす","けなみ","けぬき","げねつ","けねん","けはい","げひん","けぶかい","げぼく","けまり","けみかる","けむし","けむり","けもの","けらい","けろけろ","けわしい","けんい","けんえつ","けんお","けんか","げんき","けんげん","けんこう","けんさく","けんしゅう","けんすう","げんそう","けんちく","けんてい","けんとう","けんない","けんにん","げんぶつ","けんま","けんみん","けんめい","けんらん","けんり","こあくま","こいぬ","こいびと","ごうい","こうえん","こうおん","こうかん","ごうきゅう","ごうけい","こうこう","こうさい","こうじ","こうすい","ごうせい","こうそく","こうたい","こうちゃ","こうつう","こうてい","こうどう","こうない","こうはい","ごうほう","ごうまん","こうもく","こうりつ","こえる","こおり","ごかい","ごがつ","ごかん","こくご","こくさい","こくとう","こくない","こくはく","こぐま","こけい","こける","ここのか","こころ","こさめ","こしつ","こすう","こせい","こせき","こぜん","こそだて","こたい","こたえる","こたつ","こちょう","こっか","こつこつ","こつばん","こつぶ","こてい","こてん","ことがら","ことし","ことば","ことり","こなごな","こねこね","このまま","このみ","このよ","ごはん","こひつじ","こふう","こふん","こぼれる","ごまあぶら","こまかい","ごますり","こまつな","こまる","こむぎこ","こもじ","こもち","こもの","こもん","こやく","こやま","こゆう","こゆび","こよい","こよう","こりる","これくしょん","ころっけ","こわもて","こわれる","こんいん","こんかい","こんき","こんしゅう","こんすい","こんだて","こんとん","こんなん","こんびに","こんぽん","こんまけ","こんや","こんれい","こんわく","ざいえき","さいかい","さいきん","ざいげん","ざいこ","さいしょ","さいせい","ざいたく","ざいちゅう","さいてき","ざいりょう","さうな","さかいし","さがす","さかな","さかみち","さがる","さぎょう","さくし","さくひん","さくら","さこく","さこつ","さずかる","ざせき","さたん","さつえい","ざつおん","ざっか","ざつがく","さっきょく","ざっし","さつじん","ざっそう","さつたば","さつまいも","さてい","さといも","さとう","さとおや","さとし","さとる","さのう","さばく","さびしい","さべつ","さほう","さほど","さます","さみしい","さみだれ","さむけ","さめる","さやえんどう","さゆう","さよう","さよく","さらだ","ざるそば","さわやか","さわる","さんいん","さんか","さんきゃく","さんこう","さんさい","ざんしょ","さんすう","さんせい","さんそ","さんち","さんま","さんみ","さんらん","しあい","しあげ","しあさって","しあわせ","しいく","しいん","しうち","しえい","しおけ","しかい","しかく","じかん","しごと","しすう","じだい","したうけ","したぎ","したて","したみ","しちょう","しちりん","しっかり","しつじ","しつもん","してい","してき","してつ","じてん","じどう","しなぎれ","しなもの","しなん","しねま","しねん","しのぐ","しのぶ","しはい","しばかり","しはつ","しはらい","しはん","しひょう","しふく","じぶん","しへい","しほう","しほん","しまう","しまる","しみん","しむける","じむしょ","しめい","しめる","しもん","しゃいん","しゃうん","しゃおん","じゃがいも","しやくしょ","しゃくほう","しゃけん","しゃこ","しゃざい","しゃしん","しゃせん","しゃそう","しゃたい","しゃちょう","しゃっきん","じゃま","しゃりん","しゃれい","じゆう","じゅうしょ","しゅくはく","じゅしん","しゅっせき","しゅみ","しゅらば","じゅんばん","しょうかい","しょくたく","しょっけん","しょどう","しょもつ","しらせる","しらべる","しんか","しんこう","じんじゃ","しんせいじ","しんちく","しんりん","すあげ","すあし","すあな","ずあん","すいえい","すいか","すいとう","ずいぶん","すいようび","すうがく","すうじつ","すうせん","すおどり","すきま","すくう","すくない","すける","すごい","すこし","ずさん","すずしい","すすむ","すすめる","すっかり","ずっしり","ずっと","すてき","すてる","すねる","すのこ","すはだ","すばらしい","ずひょう","ずぶぬれ","すぶり","すふれ","すべて","すべる","ずほう","すぼん","すまい","すめし","すもう","すやき","すらすら","するめ","すれちがう","すろっと","すわる","すんぜん","すんぽう","せあぶら","せいかつ","せいげん","せいじ","せいよう","せおう","せかいかん","せきにん","せきむ","せきゆ","せきらんうん","せけん","せこう","せすじ","せたい","せたけ","せっかく","せっきゃく","ぜっく","せっけん","せっこつ","せっさたくま","せつぞく","せつだん","せつでん","せっぱん","せつび","せつぶん","せつめい","せつりつ","せなか","せのび","せはば","せびろ","せぼね","せまい","せまる","せめる","せもたれ","せりふ","ぜんあく","せんい","せんえい","せんか","せんきょ","せんく","せんげん","ぜんご","せんさい","せんしゅ","せんすい","せんせい","せんぞ","せんたく","せんちょう","せんてい","せんとう","せんぬき","せんねん","せんぱい","ぜんぶ","ぜんぽう","せんむ","せんめんじょ","せんもん","せんやく","せんゆう","せんよう","ぜんら","ぜんりゃく","せんれい","せんろ","そあく","そいとげる","そいね","そうがんきょう","そうき","そうご","そうしん","そうだん","そうなん","そうび","そうめん","そうり","そえもの","そえん","そがい","そげき","そこう","そこそこ","そざい","そしな","そせい","そせん","そそぐ","そだてる","そつう","そつえん","そっかん","そつぎょう","そっけつ","そっこう","そっせん","そっと","そとがわ","そとづら","そなえる","そなた","そふぼ","そぼく","そぼろ","そまつ","そまる","そむく","そむりえ","そめる","そもそも","そよかぜ","そらまめ","そろう","そんかい","そんけい","そんざい","そんしつ","そんぞく","そんちょう","ぞんび","ぞんぶん","そんみん","たあい","たいいん","たいうん","たいえき","たいおう","だいがく","たいき","たいぐう","たいけん","たいこ","たいざい","だいじょうぶ","だいすき","たいせつ","たいそう","だいたい","たいちょう","たいてい","だいどころ","たいない","たいねつ","たいのう","たいはん","だいひょう","たいふう","たいへん","たいほ","たいまつばな","たいみんぐ","たいむ","たいめん","たいやき","たいよう","たいら","たいりょく","たいる","たいわん","たうえ","たえる","たおす","たおる","たおれる","たかい","たかね","たきび","たくさん","たこく","たこやき","たさい","たしざん","だじゃれ","たすける","たずさわる","たそがれ","たたかう","たたく","ただしい","たたみ","たちばな","だっかい","だっきゃく","だっこ","だっしゅつ","だったい","たてる","たとえる","たなばた","たにん","たぬき","たのしみ","たはつ","たぶん","たべる","たぼう","たまご","たまる","だむる","ためいき","ためす","ためる","たもつ","たやすい","たよる","たらす","たりきほんがん","たりょう","たりる","たると","たれる","たれんと","たろっと","たわむれる","だんあつ","たんい","たんおん","たんか","たんき","たんけん","たんご","たんさん","たんじょうび","だんせい","たんそく","たんたい","だんち","たんてい","たんとう","だんな","たんにん","だんねつ","たんのう","たんぴん","だんぼう","たんまつ","たんめい","だんれつ","だんろ","だんわ","ちあい","ちあん","ちいき","ちいさい","ちえん","ちかい","ちから","ちきゅう","ちきん","ちけいず","ちけん","ちこく","ちさい","ちしき","ちしりょう","ちせい","ちそう","ちたい","ちたん","ちちおや","ちつじょ","ちてき","ちてん","ちぬき","ちぬり","ちのう","ちひょう","ちへいせん","ちほう","ちまた","ちみつ","ちみどろ","ちめいど","ちゃんこなべ","ちゅうい","ちゆりょく","ちょうし","ちょさくけん","ちらし","ちらみ","ちりがみ","ちりょう","ちるど","ちわわ","ちんたい","ちんもく","ついか","ついたち","つうか","つうじょう","つうはん","つうわ","つかう","つかれる","つくね","つくる","つけね","つける","つごう","つたえる","つづく","つつじ","つつむ","つとめる","つながる","つなみ","つねづね","つのる","つぶす","つまらない","つまる","つみき","つめたい","つもり","つもる","つよい","つるぼ","つるみく","つわもの","つわり","てあし","てあて","てあみ","ていおん","ていか","ていき","ていけい","ていこく","ていさつ","ていし","ていせい","ていたい","ていど","ていねい","ていひょう","ていへん","ていぼう","てうち","ておくれ","てきとう","てくび","でこぼこ","てさぎょう","てさげ","てすり","てそう","てちがい","てちょう","てつがく","てつづき","でっぱ","てつぼう","てつや","でぬかえ","てぬき","てぬぐい","てのひら","てはい","てぶくろ","てふだ","てほどき","てほん","てまえ","てまきずし","てみじか","てみやげ","てらす","てれび","てわけ","てわたし","でんあつ","てんいん","てんかい","てんき","てんぐ","てんけん","てんごく","てんさい","てんし","てんすう","でんち","てんてき","てんとう","てんない","てんぷら","てんぼうだい","てんめつ","てんらんかい","でんりょく","でんわ","どあい","といれ","どうかん","とうきゅう","どうぐ","とうし","とうむぎ","とおい","とおか","とおく","とおす","とおる","とかい","とかす","ときおり","ときどき","とくい","とくしゅう","とくてん","とくに","とくべつ","とけい","とける","とこや","とさか","としょかん","とそう","とたん","とちゅう","とっきゅう","とっくん","とつぜん","とつにゅう","とどける","ととのえる","とない","となえる","となり","とのさま","とばす","どぶがわ","とほう","とまる","とめる","ともだち","ともる","どようび","とらえる","とんかつ","どんぶり","ないかく","ないこう","ないしょ","ないす","ないせん","ないそう","なおす","ながい","なくす","なげる","なこうど","なさけ","なたでここ","なっとう","なつやすみ","ななおし","なにごと","なにもの","なにわ","なのか","なふだ","なまいき","なまえ","なまみ","なみだ","なめらか","なめる","なやむ","ならう","ならび","ならぶ","なれる","なわとび","なわばり","にあう","にいがた","にうけ","におい","にかい","にがて","にきび","にくしみ","にくまん","にげる","にさんかたんそ","にしき","にせもの","にちじょう","にちようび","にっか","にっき","にっけい","にっこう","にっさん","にっしょく","にっすう","にっせき","にってい","になう","にほん","にまめ","にもつ","にやり","にゅういん","にりんしゃ","にわとり","にんい","にんか","にんき","にんげん","にんしき","にんずう","にんそう","にんたい","にんち","にんてい","にんにく","にんぷ","にんまり","にんむ","にんめい","にんよう","ぬいくぎ","ぬかす","ぬぐいとる","ぬぐう","ぬくもり","ぬすむ","ぬまえび","ぬめり","ぬらす","ぬんちゃく","ねあげ","ねいき","ねいる","ねいろ","ねぐせ","ねくたい","ねくら","ねこぜ","ねこむ","ねさげ","ねすごす","ねそべる","ねだん","ねつい","ねっしん","ねつぞう","ねったいぎょ","ねぶそく","ねふだ","ねぼう","ねほりはほり","ねまき","ねまわし","ねみみ","ねむい","ねむたい","ねもと","ねらう","ねわざ","ねんいり","ねんおし","ねんかん","ねんきん","ねんぐ","ねんざ","ねんし","ねんちゃく","ねんど","ねんぴ","ねんぶつ","ねんまつ","ねんりょう","ねんれい","のいず","のおづま","のがす","のきなみ","のこぎり","のこす","のこる","のせる","のぞく","のぞむ","のたまう","のちほど","のっく","のばす","のはら","のべる","のぼる","のみもの","のやま","のらいぬ","のらねこ","のりもの","のりゆき","のれん","のんき","ばあい","はあく","ばあさん","ばいか","ばいく","はいけん","はいご","はいしん","はいすい","はいせん","はいそう","はいち","ばいばい","はいれつ","はえる","はおる","はかい","ばかり","はかる","はくしゅ","はけん","はこぶ","はさみ","はさん","はしご","ばしょ","はしる","はせる","ぱそこん","はそん","はたん","はちみつ","はつおん","はっかく","はづき","はっきり","はっくつ","はっけん","はっこう","はっさん","はっしん","はったつ","はっちゅう","はってん","はっぴょう","はっぽう","はなす","はなび","はにかむ","はぶらし","はみがき","はむかう","はめつ","はやい","はやし","はらう","はろうぃん","はわい","はんい","はんえい","はんおん","はんかく","はんきょう","ばんぐみ","はんこ","はんしゃ","はんすう","はんだん","ぱんち","ぱんつ","はんてい","はんとし","はんのう","はんぱ","はんぶん","はんぺん","はんぼうき","はんめい","はんらん","はんろん","ひいき","ひうん","ひえる","ひかく","ひかり","ひかる","ひかん","ひくい","ひけつ","ひこうき","ひこく","ひさい","ひさしぶり","ひさん","びじゅつかん","ひしょ","ひそか","ひそむ","ひたむき","ひだり","ひたる","ひつぎ","ひっこし","ひっし","ひつじゅひん","ひっす","ひつぜん","ぴったり","ぴっちり","ひつよう","ひてい","ひとごみ","ひなまつり","ひなん","ひねる","ひはん","ひびく","ひひょう","ひほう","ひまわり","ひまん","ひみつ","ひめい","ひめじし","ひやけ","ひやす","ひよう","びょうき","ひらがな","ひらく","ひりつ","ひりょう","ひるま","ひるやすみ","ひれい","ひろい","ひろう","ひろき","ひろゆき","ひんかく","ひんけつ","ひんこん","ひんしゅ","ひんそう","ぴんち","ひんぱん","びんぼう","ふあん","ふいうち","ふうけい","ふうせん","ぷうたろう","ふうとう","ふうふ","ふえる","ふおん","ふかい","ふきん","ふくざつ","ふくぶくろ","ふこう","ふさい","ふしぎ","ふじみ","ふすま","ふせい","ふせぐ","ふそく","ぶたにく","ふたん","ふちょう","ふつう","ふつか","ふっかつ","ふっき","ふっこく","ぶどう","ふとる","ふとん","ふのう","ふはい","ふひょう","ふへん","ふまん","ふみん","ふめつ","ふめん","ふよう","ふりこ","ふりる","ふるい","ふんいき","ぶんがく","ぶんぐ","ふんしつ","ぶんせき","ふんそう","ぶんぽう","へいあん","へいおん","へいがい","へいき","へいげん","へいこう","へいさ","へいしゃ","へいせつ","へいそ","へいたく","へいてん","へいねつ","へいわ","へきが","へこむ","べにいろ","べにしょうが","へらす","へんかん","べんきょう","べんごし","へんさい","へんたい","べんり","ほあん","ほいく","ぼうぎょ","ほうこく","ほうそう","ほうほう","ほうもん","ほうりつ","ほえる","ほおん","ほかん","ほきょう","ぼきん","ほくろ","ほけつ","ほけん","ほこう","ほこる","ほしい","ほしつ","ほしゅ","ほしょう","ほせい","ほそい","ほそく","ほたて","ほたる","ぽちぶくろ","ほっきょく","ほっさ","ほったん","ほとんど","ほめる","ほんい","ほんき","ほんけ","ほんしつ","ほんやく","まいにち","まかい","まかせる","まがる","まける","まこと","まさつ","まじめ","ますく","まぜる","まつり","まとめ","まなぶ","まぬけ","まねく","まほう","まもる","まゆげ","まよう","まろやか","まわす","まわり","まわる","まんが","まんきつ","まんぞく","まんなか","みいら","みうち","みえる","みがく","みかた","みかん","みけん","みこん","みじかい","みすい","みすえる","みせる","みっか","みつかる","みつける","みてい","みとめる","みなと","みなみかさい","みねらる","みのう","みのがす","みほん","みもと","みやげ","みらい","みりょく","みわく","みんか","みんぞく","むいか","むえき","むえん","むかい","むかう","むかえ","むかし","むぎちゃ","むける","むげん","むさぼる","むしあつい","むしば","むじゅん","むしろ","むすう","むすこ","むすぶ","むすめ","むせる","むせん","むちゅう","むなしい","むのう","むやみ","むよう","むらさき","むりょう","むろん","めいあん","めいうん","めいえん","めいかく","めいきょく","めいさい","めいし","めいそう","めいぶつ","めいれい","めいわく","めぐまれる","めざす","めした","めずらしい","めだつ","めまい","めやす","めんきょ","めんせき","めんどう","もうしあげる","もうどうけん","もえる","もくし","もくてき","もくようび","もちろん","もどる","もらう","もんく","もんだい","やおや","やける","やさい","やさしい","やすい","やすたろう","やすみ","やせる","やそう","やたい","やちん","やっと","やっぱり","やぶる","やめる","ややこしい","やよい","やわらかい","ゆうき","ゆうびんきょく","ゆうべ","ゆうめい","ゆけつ","ゆしゅつ","ゆせん","ゆそう","ゆたか","ゆちゃく","ゆでる","ゆにゅう","ゆびわ","ゆらい","ゆれる","ようい","ようか","ようきゅう","ようじ","ようす","ようちえん","よかぜ","よかん","よきん","よくせい","よくぼう","よけい","よごれる","よさん","よしゅう","よそう","よそく","よっか","よてい","よどがわく","よねつ","よやく","よゆう","よろこぶ","よろしい","らいう","らくがき","らくご","らくさつ","らくだ","らしんばん","らせん","らぞく","らたい","らっか","られつ","りえき","りかい","りきさく","りきせつ","りくぐん","りくつ","りけん","りこう","りせい","りそう","りそく","りてん","りねん","りゆう","りゅうがく","りよう","りょうり","りょかん","りょくちゃ","りょこう","りりく","りれき","りろん","りんご","るいけい","るいさい","るいじ","るいせき","るすばん","るりがわら","れいかん","れいぎ","れいせい","れいぞうこ","れいとう","れいぼう","れきし","れきだい","れんあい","れんけい","れんこん","れんさい","れんしゅう","れんぞく","れんらく","ろうか","ろうご","ろうじん","ろうそく","ろくが","ろこつ","ろじうら","ろしゅつ","ろせん","ろてん","ろめん","ろれつ","ろんぎ","ろんぱ","ろんぶん","ろんり","わかす","わかめ","わかやま","わかれる","わしつ","わじまし","わすれもの","わらう","われる"]},function(e){e.exports=["가격","가끔","가난","가능","가득","가르침","가뭄","가방","가상","가슴","가운데","가을","가이드","가입","가장","가정","가족","가죽","각오","각자","간격","간부","간섭","간장","간접","간판","갈등","갈비","갈색","갈증","감각","감기","감소","감수성","감자","감정","갑자기","강남","강당","강도","강력히","강변","강북","강사","강수량","강아지","강원도","강의","강제","강조","같이","개구리","개나리","개방","개별","개선","개성","개인","객관적","거실","거액","거울","거짓","거품","걱정","건강","건물","건설","건조","건축","걸음","검사","검토","게시판","게임","겨울","견해","결과","결국","결론","결석","결승","결심","결정","결혼","경계","경고","경기","경력","경복궁","경비","경상도","경영","경우","경쟁","경제","경주","경찰","경치","경향","경험","계곡","계단","계란","계산","계속","계약","계절","계층","계획","고객","고구려","고궁","고급","고등학생","고무신","고민","고양이","고장","고전","고집","고춧가루","고통","고향","곡식","골목","골짜기","골프","공간","공개","공격","공군","공급","공기","공동","공무원","공부","공사","공식","공업","공연","공원","공장","공짜","공책","공통","공포","공항","공휴일","과목","과일","과장","과정","과학","관객","관계","관광","관념","관람","관련","관리","관습","관심","관점","관찰","광경","광고","광장","광주","괴로움","굉장히","교과서","교문","교복","교실","교양","교육","교장","교직","교통","교환","교훈","구경","구름","구멍","구별","구분","구석","구성","구속","구역","구입","구청","구체적","국가","국기","국내","국립","국물","국민","국수","국어","국왕","국적","국제","국회","군대","군사","군인","궁극적","권리","권위","권투","귀국","귀신","규정","규칙","균형","그날","그냥","그늘","그러나","그룹","그릇","그림","그제서야","그토록","극복","극히","근거","근교","근래","근로","근무","근본","근원","근육","근처","글씨","글자","금강산","금고","금년","금메달","금액","금연","금요일","금지","긍정적","기간","기관","기념","기능","기독교","기둥","기록","기름","기법","기본","기분","기쁨","기숙사","기술","기억","기업","기온","기운","기원","기적","기준","기침","기혼","기획","긴급","긴장","길이","김밥","김치","김포공항","깍두기","깜빡","깨달음","깨소금","껍질","꼭대기","꽃잎","나들이","나란히","나머지","나물","나침반","나흘","낙엽","난방","날개","날씨","날짜","남녀","남대문","남매","남산","남자","남편","남학생","낭비","낱말","내년","내용","내일","냄비","냄새","냇물","냉동","냉면","냉방","냉장고","넥타이","넷째","노동","노란색","노력","노인","녹음","녹차","녹화","논리","논문","논쟁","놀이","농구","농담","농민","농부","농업","농장","농촌","높이","눈동자","눈물","눈썹","뉴욕","느낌","늑대","능동적","능력","다방","다양성","다음","다이어트","다행","단계","단골","단독","단맛","단순","단어","단위","단점","단체","단추","단편","단풍","달걀","달러","달력","달리","닭고기","담당","담배","담요","담임","답변","답장","당근","당분간","당연히","당장","대규모","대낮","대단히","대답","대도시","대략","대량","대륙","대문","대부분","대신","대응","대장","대전","대접","대중","대책","대출","대충","대통령","대학","대한민국","대합실","대형","덩어리","데이트","도대체","도덕","도둑","도망","도서관","도심","도움","도입","도자기","도저히","도전","도중","도착","독감","독립","독서","독일","독창적","동화책","뒷모습","뒷산","딸아이","마누라","마늘","마당","마라톤","마련","마무리","마사지","마약","마요네즈","마을","마음","마이크","마중","마지막","마찬가지","마찰","마흔","막걸리","막내","막상","만남","만두","만세","만약","만일","만점","만족","만화","많이","말기","말씀","말투","맘대로","망원경","매년","매달","매력","매번","매스컴","매일","매장","맥주","먹이","먼저","먼지","멀리","메일","며느리","며칠","면담","멸치","명단","명령","명예","명의","명절","명칭","명함","모금","모니터","모델","모든","모범","모습","모양","모임","모조리","모집","모퉁이","목걸이","목록","목사","목소리","목숨","목적","목표","몰래","몸매","몸무게","몸살","몸속","몸짓","몸통","몹시","무관심","무궁화","무더위","무덤","무릎","무슨","무엇","무역","무용","무조건","무지개","무척","문구","문득","문법","문서","문제","문학","문화","물가","물건","물결","물고기","물론","물리학","물음","물질","물체","미국","미디어","미사일","미술","미역","미용실","미움","미인","미팅","미혼","민간","민족","민주","믿음","밀가루","밀리미터","밑바닥","바가지","바구니","바나나","바늘","바닥","바닷가","바람","바이러스","바탕","박물관","박사","박수","반대","반드시","반말","반발","반성","반응","반장","반죽","반지","반찬","받침","발가락","발걸음","발견","발달","발레","발목","발바닥","발생","발음","발자국","발전","발톱","발표","밤하늘","밥그릇","밥맛","밥상","밥솥","방금","방면","방문","방바닥","방법","방송","방식","방안","방울","방지","방학","방해","방향","배경","배꼽","배달","배드민턴","백두산","백색","백성","백인","백제","백화점","버릇","버섯","버튼","번개","번역","번지","번호","벌금","벌레","벌써","범위","범인","범죄","법률","법원","법적","법칙","베이징","벨트","변경","변동","변명","변신","변호사","변화","별도","별명","별일","병실","병아리","병원","보관","보너스","보라색","보람","보름","보상","보안","보자기","보장","보전","보존","보통","보편적","보험","복도","복사","복숭아","복습","볶음","본격적","본래","본부","본사","본성","본인","본질","볼펜","봉사","봉지","봉투","부근","부끄러움","부담","부동산","부문","부분","부산","부상","부엌","부인","부작용","부장","부정","부족","부지런히","부친","부탁","부품","부회장","북부","북한","분노","분량","분리","분명","분석","분야","분위기","분필","분홍색","불고기","불과","불교","불꽃","불만","불법","불빛","불안","불이익","불행","브랜드","비극","비난","비닐","비둘기","비디오","비로소","비만","비명","비밀","비바람","비빔밥","비상","비용","비율","비중","비타민","비판","빌딩","빗물","빗방울","빗줄기","빛깔","빨간색","빨래","빨리","사건","사계절","사나이","사냥","사람","사랑","사립","사모님","사물","사방","사상","사생활","사설","사슴","사실","사업","사용","사월","사장","사전","사진","사촌","사춘기","사탕","사투리","사흘","산길","산부인과","산업","산책","살림","살인","살짝","삼계탕","삼국","삼십","삼월","삼촌","상관","상금","상대","상류","상반기","상상","상식","상업","상인","상자","상점","상처","상추","상태","상표","상품","상황","새벽","색깔","색연필","생각","생명","생물","생방송","생산","생선","생신","생일","생활","서랍","서른","서명","서민","서비스","서양","서울","서적","서점","서쪽","서클","석사","석유","선거","선물","선배","선생","선수","선원","선장","선전","선택","선풍기","설거지","설날","설렁탕","설명","설문","설사","설악산","설치","설탕","섭씨","성공","성당","성명","성별","성인","성장","성적","성질","성함","세금","세미나","세상","세월","세종대왕","세탁","센터","센티미터","셋째","소규모","소극적","소금","소나기","소년","소득","소망","소문","소설","소속","소아과","소용","소원","소음","소중히","소지품","소질","소풍","소형","속담","속도","속옷","손가락","손길","손녀","손님","손등","손목","손뼉","손실","손질","손톱","손해","솔직히","솜씨","송아지","송이","송편","쇠고기","쇼핑","수건","수년","수단","수돗물","수동적","수면","수명","수박","수상","수석","수술","수시로","수업","수염","수영","수입","수준","수집","수출","수컷","수필","수학","수험생","수화기","숙녀","숙소","숙제","순간","순서","순수","순식간","순위","숟가락","술병","술집","숫자","스님","스물","스스로","스승","스웨터","스위치","스케이트","스튜디오","스트레스","스포츠","슬쩍","슬픔","습관","습기","승객","승리","승부","승용차","승진","시각","시간","시골","시금치","시나리오","시댁","시리즈","시멘트","시민","시부모","시선","시설","시스템","시아버지","시어머니","시월","시인","시일","시작","시장","시절","시점","시중","시즌","시집","시청","시합","시험","식구","식기","식당","식량","식료품","식물","식빵","식사","식생활","식초","식탁","식품","신고","신규","신념","신문","신발","신비","신사","신세","신용","신제품","신청","신체","신화","실감","실내","실력","실례","실망","실수","실습","실시","실장","실정","실질적","실천","실체","실컷","실태","실패","실험","실현","심리","심부름","심사","심장","심정","심판","쌍둥이","씨름","씨앗","아가씨","아나운서","아드님","아들","아쉬움","아스팔트","아시아","아울러","아저씨","아줌마","아직","아침","아파트","아프리카","아픔","아홉","아흔","악기","악몽","악수","안개","안경","안과","안내","안녕","안동","안방","안부","안주","알루미늄","알코올","암시","암컷","압력","앞날","앞문","애인","애정","액수","앨범","야간","야단","야옹","약간","약국","약속","약수","약점","약품","약혼녀","양념","양력","양말","양배추","양주","양파","어둠","어려움","어른","어젯밤","어쨌든","어쩌다가","어쩐지","언니","언덕","언론","언어","얼굴","얼른","얼음","얼핏","엄마","업무","업종","업체","엉덩이","엉망","엉터리","엊그제","에너지","에어컨","엔진","여건","여고생","여관","여군","여권","여대생","여덟","여동생","여든","여론","여름","여섯","여성","여왕","여인","여전히","여직원","여학생","여행","역사","역시","역할","연결","연구","연극","연기","연락","연설","연세","연속","연습","연애","연예인","연인","연장","연주","연출","연필","연합","연휴","열기","열매","열쇠","열심히","열정","열차","열흘","염려","엽서","영국","영남","영상","영양","영역","영웅","영원히","영하","영향","영혼","영화","옆구리","옆방","옆집","예감","예금","예방","예산","예상","예선","예술","예습","예식장","예약","예전","예절","예정","예컨대","옛날","오늘","오락","오랫동안","오렌지","오로지","오른발","오븐","오십","오염","오월","오전","오직","오징어","오페라","오피스텔","오히려","옥상","옥수수","온갖","온라인","온몸","온종일","온통","올가을","올림픽","올해","옷차림","와이셔츠","와인","완성","완전","왕비","왕자","왜냐하면","왠지","외갓집","외국","외로움","외삼촌","외출","외침","외할머니","왼발","왼손","왼쪽","요금","요일","요즘","요청","용기","용서","용어","우산","우선","우승","우연히","우정","우체국","우편","운동","운명","운반","운전","운행","울산","울음","움직임","웃어른","웃음","워낙","원고","원래","원서","원숭이","원인","원장","원피스","월급","월드컵","월세","월요일","웨이터","위반","위법","위성","위원","위험","위협","윗사람","유난히","유럽","유명","유물","유산","유적","유치원","유학","유행","유형","육군","육상","육십","육체","은행","음력","음료","음반","음성","음식","음악","음주","의견","의논","의문","의복","의식","의심","의외로","의욕","의원","의학","이것","이곳","이념","이놈","이달","이대로","이동","이렇게","이력서","이론적","이름","이민","이발소","이별","이불","이빨","이상","이성","이슬","이야기","이용","이웃","이월","이윽고","이익","이전","이중","이튿날","이틀","이혼","인간","인격","인공","인구","인근","인기","인도","인류","인물","인생","인쇄","인연","인원","인재","인종","인천","인체","인터넷","인하","인형","일곱","일기","일단","일대","일등","일반","일본","일부","일상","일생","일손","일요일","일월","일정","일종","일주일","일찍","일체","일치","일행","일회용","임금","임무","입대","입력","입맛","입사","입술","입시","입원","입장","입학","자가용","자격","자극","자동","자랑","자부심","자식","자신","자연","자원","자율","자전거","자정","자존심","자판","작가","작년","작성","작업","작용","작은딸","작품","잔디","잔뜩","잔치","잘못","잠깐","잠수함","잠시","잠옷","잠자리","잡지","장관","장군","장기간","장래","장례","장르","장마","장면","장모","장미","장비","장사","장소","장식","장애인","장인","장점","장차","장학금","재능","재빨리","재산","재생","재작년","재정","재채기","재판","재학","재활용","저것","저고리","저곳","저녁","저런","저렇게","저번","저울","저절로","저축","적극","적당히","적성","적용","적응","전개","전공","전기","전달","전라도","전망","전문","전반","전부","전세","전시","전용","전자","전쟁","전주","전철","전체","전통","전혀","전후","절대","절망","절반","절약","절차","점검","점수","점심","점원","점점","점차","접근","접시","접촉","젓가락","정거장","정도","정류장","정리","정말","정면","정문","정반대","정보","정부","정비","정상","정성","정오","정원","정장","정지","정치","정확히","제공","제과점","제대로","제목","제발","제법","제삿날","제안","제일","제작","제주도","제출","제품","제한","조각","조건","조금","조깅","조명","조미료","조상","조선","조용히","조절","조정","조직","존댓말","존재","졸업","졸음","종교","종로","종류","종소리","종업원","종종","종합","좌석","죄인","주관적","주름","주말","주머니","주먹","주문","주민","주방","주변","주식","주인","주일","주장","주전자","주택","준비","줄거리","줄기","줄무늬","중간","중계방송","중국","중년","중단","중독","중반","중부","중세","중소기업","중순","중앙","중요","중학교","즉석","즉시","즐거움","증가","증거","증권","증상","증세","지각","지갑","지경","지극히","지금","지급","지능","지름길","지리산","지방","지붕","지식","지역","지우개","지원","지적","지점","지진","지출","직선","직업","직원","직장","진급","진동","진로","진료","진리","진짜","진찰","진출","진통","진행","질문","질병","질서","짐작","집단","집안","집중","짜증","찌꺼기","차남","차라리","차량","차림","차별","차선","차츰","착각","찬물","찬성","참가","참기름","참새","참석","참여","참외","참조","찻잔","창가","창고","창구","창문","창밖","창작","창조","채널","채점","책가방","책방","책상","책임","챔피언","처벌","처음","천국","천둥","천장","천재","천천히","철도","철저히","철학","첫날","첫째","청년","청바지","청소","청춘","체계","체력","체온","체육","체중","체험","초등학생","초반","초밥","초상화","초순","초여름","초원","초저녁","초점","초청","초콜릿","촛불","총각","총리","총장","촬영","최근","최상","최선","최신","최악","최종","추석","추억","추진","추천","추측","축구","축소","축제","축하","출근","출발","출산","출신","출연","출입","출장","출판","충격","충고","충돌","충분히","충청도","취업","취직","취향","치약","친구","친척","칠십","칠월","칠판","침대","침묵","침실","칫솔","칭찬","카메라","카운터","칼국수","캐릭터","캠퍼스","캠페인","커튼","컨디션","컬러","컴퓨터","코끼리","코미디","콘서트","콜라","콤플렉스","콩나물","쾌감","쿠데타","크림","큰길","큰딸","큰소리","큰아들","큰어머니","큰일","큰절","클래식","클럽","킬로","타입","타자기","탁구","탁자","탄생","태권도","태양","태풍","택시","탤런트","터널","터미널","테니스","테스트","테이블","텔레비전","토론","토마토","토요일","통계","통과","통로","통신","통역","통일","통장","통제","통증","통합","통화","퇴근","퇴원","퇴직금","튀김","트럭","특급","특별","특성","특수","특징","특히","튼튼히","티셔츠","파란색","파일","파출소","판결","판단","판매","판사","팔십","팔월","팝송","패션","팩스","팩시밀리","팬티","퍼센트","페인트","편견","편의","편지","편히","평가","평균","평생","평소","평양","평일","평화","포스터","포인트","포장","포함","표면","표정","표준","표현","품목","품질","풍경","풍속","풍습","프랑스","프린터","플라스틱","피곤","피망","피아노","필름","필수","필요","필자","필통","핑계","하느님","하늘","하드웨어","하룻밤","하반기","하숙집","하순","하여튼","하지만","하천","하품","하필","학과","학교","학급","학기","학년","학력","학번","학부모","학비","학생","학술","학습","학용품","학원","학위","학자","학점","한계","한글","한꺼번에","한낮","한눈","한동안","한때","한라산","한마디","한문","한번","한복","한식","한여름","한쪽","할머니","할아버지","할인","함께","함부로","합격","합리적","항공","항구","항상","항의","해결","해군","해답","해당","해물","해석","해설","해수욕장","해안","핵심","핸드백","햄버거","햇볕","햇살","행동","행복","행사","행운","행위","향기","향상","향수","허락","허용","헬기","현관","현금","현대","현상","현실","현장","현재","현지","혈액","협력","형부","형사","형수","형식","형제","형태","형편","혜택","호기심","호남","호랑이","호박","호텔","호흡","혹시","홀로","홈페이지","홍보","홍수","홍차","화면","화분","화살","화요일","화장","화학","확보","확인","확장","확정","환갑","환경","환영","환율","환자","활기","활동","활발히","활용","활짝","회견","회관","회복","회색","회원","회장","회전","횟수","횡단보도","효율적","후반","후춧가루","훈련","훨씬","휴식","휴일","흉내","흐름","흑백","흑인","흔적","흔히","흥미","흥분","희곡","희망","희생","흰색","힘껏"]},function(e){e.exports=["ábaco","abdomen","abeja","abierto","abogado","abono","aborto","abrazo","abrir","abuelo","abuso","acabar","academia","acceso","acción","aceite","acelga","acento","aceptar","ácido","aclarar","acné","acoger","acoso","activo","acto","actriz","actuar","acudir","acuerdo","acusar","adicto","admitir","adoptar","adorno","aduana","adulto","aéreo","afectar","afición","afinar","afirmar","ágil","agitar","agonía","agosto","agotar","agregar","agrio","agua","agudo","águila","aguja","ahogo","ahorro","aire","aislar","ajedrez","ajeno","ajuste","alacrán","alambre","alarma","alba","álbum","alcalde","aldea","alegre","alejar","alerta","aleta","alfiler","alga","algodón","aliado","aliento","alivio","alma","almeja","almíbar","altar","alteza","altivo","alto","altura","alumno","alzar","amable","amante","amapola","amargo","amasar","ámbar","ámbito","ameno","amigo","amistad","amor","amparo","amplio","ancho","anciano","ancla","andar","andén","anemia","ángulo","anillo","ánimo","anís","anotar","antena","antiguo","antojo","anual","anular","anuncio","añadir","añejo","año","apagar","aparato","apetito","apio","aplicar","apodo","aporte","apoyo","aprender","aprobar","apuesta","apuro","arado","araña","arar","árbitro","árbol","arbusto","archivo","arco","arder","ardilla","arduo","área","árido","aries","armonía","arnés","aroma","arpa","arpón","arreglo","arroz","arruga","arte","artista","asa","asado","asalto","ascenso","asegurar","aseo","asesor","asiento","asilo","asistir","asno","asombro","áspero","astilla","astro","astuto","asumir","asunto","atajo","ataque","atar","atento","ateo","ático","atleta","átomo","atraer","atroz","atún","audaz","audio","auge","aula","aumento","ausente","autor","aval","avance","avaro","ave","avellana","avena","avestruz","avión","aviso","ayer","ayuda","ayuno","azafrán","azar","azote","azúcar","azufre","azul","baba","babor","bache","bahía","baile","bajar","balanza","balcón","balde","bambú","banco","banda","baño","barba","barco","barniz","barro","báscula","bastón","basura","batalla","batería","batir","batuta","baúl","bazar","bebé","bebida","bello","besar","beso","bestia","bicho","bien","bingo","blanco","bloque","blusa","boa","bobina","bobo","boca","bocina","boda","bodega","boina","bola","bolero","bolsa","bomba","bondad","bonito","bono","bonsái","borde","borrar","bosque","bote","botín","bóveda","bozal","bravo","brazo","brecha","breve","brillo","brinco","brisa","broca","broma","bronce","brote","bruja","brusco","bruto","buceo","bucle","bueno","buey","bufanda","bufón","búho","buitre","bulto","burbuja","burla","burro","buscar","butaca","buzón","caballo","cabeza","cabina","cabra","cacao","cadáver","cadena","caer","café","caída","caimán","caja","cajón","cal","calamar","calcio","caldo","calidad","calle","calma","calor","calvo","cama","cambio","camello","camino","campo","cáncer","candil","canela","canguro","canica","canto","caña","cañón","caoba","caos","capaz","capitán","capote","captar","capucha","cara","carbón","cárcel","careta","carga","cariño","carne","carpeta","carro","carta","casa","casco","casero","caspa","castor","catorce","catre","caudal","causa","cazo","cebolla","ceder","cedro","celda","célebre","celoso","célula","cemento","ceniza","centro","cerca","cerdo","cereza","cero","cerrar","certeza","césped","cetro","chacal","chaleco","champú","chancla","chapa","charla","chico","chiste","chivo","choque","choza","chuleta","chupar","ciclón","ciego","cielo","cien","cierto","cifra","cigarro","cima","cinco","cine","cinta","ciprés","circo","ciruela","cisne","cita","ciudad","clamor","clan","claro","clase","clave","cliente","clima","clínica","cobre","cocción","cochino","cocina","coco","código","codo","cofre","coger","cohete","cojín","cojo","cola","colcha","colegio","colgar","colina","collar","colmo","columna","combate","comer","comida","cómodo","compra","conde","conejo","conga","conocer","consejo","contar","copa","copia","corazón","corbata","corcho","cordón","corona","correr","coser","cosmos","costa","cráneo","cráter","crear","crecer","creído","crema","cría","crimen","cripta","crisis","cromo","crónica","croqueta","crudo","cruz","cuadro","cuarto","cuatro","cubo","cubrir","cuchara","cuello","cuento","cuerda","cuesta","cueva","cuidar","culebra","culpa","culto","cumbre","cumplir","cuna","cuneta","cuota","cupón","cúpula","curar","curioso","curso","curva","cutis","dama","danza","dar","dardo","dátil","deber","débil","década","decir","dedo","defensa","definir","dejar","delfín","delgado","delito","demora","denso","dental","deporte","derecho","derrota","desayuno","deseo","desfile","desnudo","destino","desvío","detalle","detener","deuda","día","diablo","diadema","diamante","diana","diario","dibujo","dictar","diente","dieta","diez","difícil","digno","dilema","diluir","dinero","directo","dirigir","disco","diseño","disfraz","diva","divino","doble","doce","dolor","domingo","don","donar","dorado","dormir","dorso","dos","dosis","dragón","droga","ducha","duda","duelo","dueño","dulce","dúo","duque","durar","dureza","duro","ébano","ebrio","echar","eco","ecuador","edad","edición","edificio","editor","educar","efecto","eficaz","eje","ejemplo","elefante","elegir","elemento","elevar","elipse","élite","elixir","elogio","eludir","embudo","emitir","emoción","empate","empeño","empleo","empresa","enano","encargo","enchufe","encía","enemigo","enero","enfado","enfermo","engaño","enigma","enlace","enorme","enredo","ensayo","enseñar","entero","entrar","envase","envío","época","equipo","erizo","escala","escena","escolar","escribir","escudo","esencia","esfera","esfuerzo","espada","espejo","espía","esposa","espuma","esquí","estar","este","estilo","estufa","etapa","eterno","ética","etnia","evadir","evaluar","evento","evitar","exacto","examen","exceso","excusa","exento","exigir","exilio","existir","éxito","experto","explicar","exponer","extremo","fábrica","fábula","fachada","fácil","factor","faena","faja","falda","fallo","falso","faltar","fama","familia","famoso","faraón","farmacia","farol","farsa","fase","fatiga","fauna","favor","fax","febrero","fecha","feliz","feo","feria","feroz","fértil","fervor","festín","fiable","fianza","fiar","fibra","ficción","ficha","fideo","fiebre","fiel","fiera","fiesta","figura","fijar","fijo","fila","filete","filial","filtro","fin","finca","fingir","finito","firma","flaco","flauta","flecha","flor","flota","fluir","flujo","flúor","fobia","foca","fogata","fogón","folio","folleto","fondo","forma","forro","fortuna","forzar","fosa","foto","fracaso","frágil","franja","frase","fraude","freír","freno","fresa","frío","frito","fruta","fuego","fuente","fuerza","fuga","fumar","función","funda","furgón","furia","fusil","fútbol","futuro","gacela","gafas","gaita","gajo","gala","galería","gallo","gamba","ganar","gancho","ganga","ganso","garaje","garza","gasolina","gastar","gato","gavilán","gemelo","gemir","gen","género","genio","gente","geranio","gerente","germen","gesto","gigante","gimnasio","girar","giro","glaciar","globo","gloria","gol","golfo","goloso","golpe","goma","gordo","gorila","gorra","gota","goteo","gozar","grada","gráfico","grano","grasa","gratis","grave","grieta","grillo","gripe","gris","grito","grosor","grúa","grueso","grumo","grupo","guante","guapo","guardia","guerra","guía","guiño","guion","guiso","guitarra","gusano","gustar","haber","hábil","hablar","hacer","hacha","hada","hallar","hamaca","harina","haz","hazaña","hebilla","hebra","hecho","helado","helio","hembra","herir","hermano","héroe","hervir","hielo","hierro","hígado","higiene","hijo","himno","historia","hocico","hogar","hoguera","hoja","hombre","hongo","honor","honra","hora","hormiga","horno","hostil","hoyo","hueco","huelga","huerta","hueso","huevo","huida","huir","humano","húmedo","humilde","humo","hundir","huracán","hurto","icono","ideal","idioma","ídolo","iglesia","iglú","igual","ilegal","ilusión","imagen","imán","imitar","impar","imperio","imponer","impulso","incapaz","índice","inerte","infiel","informe","ingenio","inicio","inmenso","inmune","innato","insecto","instante","interés","íntimo","intuir","inútil","invierno","ira","iris","ironía","isla","islote","jabalí","jabón","jamón","jarabe","jardín","jarra","jaula","jazmín","jefe","jeringa","jinete","jornada","joroba","joven","joya","juerga","jueves","juez","jugador","jugo","juguete","juicio","junco","jungla","junio","juntar","júpiter","jurar","justo","juvenil","juzgar","kilo","koala","labio","lacio","lacra","lado","ladrón","lagarto","lágrima","laguna","laico","lamer","lámina","lámpara","lana","lancha","langosta","lanza","lápiz","largo","larva","lástima","lata","látex","latir","laurel","lavar","lazo","leal","lección","leche","lector","leer","legión","legumbre","lejano","lengua","lento","leña","león","leopardo","lesión","letal","letra","leve","leyenda","libertad","libro","licor","líder","lidiar","lienzo","liga","ligero","lima","límite","limón","limpio","lince","lindo","línea","lingote","lino","linterna","líquido","liso","lista","litera","litio","litro","llaga","llama","llanto","llave","llegar","llenar","llevar","llorar","llover","lluvia","lobo","loción","loco","locura","lógica","logro","lombriz","lomo","lonja","lote","lucha","lucir","lugar","lujo","luna","lunes","lupa","lustro","luto","luz","maceta","macho","madera","madre","maduro","maestro","mafia","magia","mago","maíz","maldad","maleta","malla","malo","mamá","mambo","mamut","manco","mando","manejar","manga","maniquí","manjar","mano","manso","manta","mañana","mapa","máquina","mar","marco","marea","marfil","margen","marido","mármol","marrón","martes","marzo","masa","máscara","masivo","matar","materia","matiz","matriz","máximo","mayor","mazorca","mecha","medalla","medio","médula","mejilla","mejor","melena","melón","memoria","menor","mensaje","mente","menú","mercado","merengue","mérito","mes","mesón","meta","meter","método","metro","mezcla","miedo","miel","miembro","miga","mil","milagro","militar","millón","mimo","mina","minero","mínimo","minuto","miope","mirar","misa","miseria","misil","mismo","mitad","mito","mochila","moción","moda","modelo","moho","mojar","molde","moler","molino","momento","momia","monarca","moneda","monja","monto","moño","morada","morder","moreno","morir","morro","morsa","mortal","mosca","mostrar","motivo","mover","móvil","mozo","mucho","mudar","mueble","muela","muerte","muestra","mugre","mujer","mula","muleta","multa","mundo","muñeca","mural","muro","músculo","museo","musgo","música","muslo","nácar","nación","nadar","naipe","naranja","nariz","narrar","nasal","natal","nativo","natural","náusea","naval","nave","navidad","necio","néctar","negar","negocio","negro","neón","nervio","neto","neutro","nevar","nevera","nicho","nido","niebla","nieto","niñez","niño","nítido","nivel","nobleza","noche","nómina","noria","norma","norte","nota","noticia","novato","novela","novio","nube","nuca","núcleo","nudillo","nudo","nuera","nueve","nuez","nulo","número","nutria","oasis","obeso","obispo","objeto","obra","obrero","observar","obtener","obvio","oca","ocaso","océano","ochenta","ocho","ocio","ocre","octavo","octubre","oculto","ocupar","ocurrir","odiar","odio","odisea","oeste","ofensa","oferta","oficio","ofrecer","ogro","oído","oír","ojo","ola","oleada","olfato","olivo","olla","olmo","olor","olvido","ombligo","onda","onza","opaco","opción","ópera","opinar","oponer","optar","óptica","opuesto","oración","orador","oral","órbita","orca","orden","oreja","órgano","orgía","orgullo","oriente","origen","orilla","oro","orquesta","oruga","osadía","oscuro","osezno","oso","ostra","otoño","otro","oveja","óvulo","óxido","oxígeno","oyente","ozono","pacto","padre","paella","página","pago","país","pájaro","palabra","palco","paleta","pálido","palma","paloma","palpar","pan","panal","pánico","pantera","pañuelo","papá","papel","papilla","paquete","parar","parcela","pared","parir","paro","párpado","parque","párrafo","parte","pasar","paseo","pasión","paso","pasta","pata","patio","patria","pausa","pauta","pavo","payaso","peatón","pecado","pecera","pecho","pedal","pedir","pegar","peine","pelar","peldaño","pelea","peligro","pellejo","pelo","peluca","pena","pensar","peñón","peón","peor","pepino","pequeño","pera","percha","perder","pereza","perfil","perico","perla","permiso","perro","persona","pesa","pesca","pésimo","pestaña","pétalo","petróleo","pez","pezuña","picar","pichón","pie","piedra","pierna","pieza","pijama","pilar","piloto","pimienta","pino","pintor","pinza","piña","piojo","pipa","pirata","pisar","piscina","piso","pista","pitón","pizca","placa","plan","plata","playa","plaza","pleito","pleno","plomo","pluma","plural","pobre","poco","poder","podio","poema","poesía","poeta","polen","policía","pollo","polvo","pomada","pomelo","pomo","pompa","poner","porción","portal","posada","poseer","posible","poste","potencia","potro","pozo","prado","precoz","pregunta","premio","prensa","preso","previo","primo","príncipe","prisión","privar","proa","probar","proceso","producto","proeza","profesor","programa","prole","promesa","pronto","propio","próximo","prueba","público","puchero","pudor","pueblo","puerta","puesto","pulga","pulir","pulmón","pulpo","pulso","puma","punto","puñal","puño","pupa","pupila","puré","quedar","queja","quemar","querer","queso","quieto","química","quince","quitar","rábano","rabia","rabo","ración","radical","raíz","rama","rampa","rancho","rango","rapaz","rápido","rapto","rasgo","raspa","rato","rayo","raza","razón","reacción","realidad","rebaño","rebote","recaer","receta","rechazo","recoger","recreo","recto","recurso","red","redondo","reducir","reflejo","reforma","refrán","refugio","regalo","regir","regla","regreso","rehén","reino","reír","reja","relato","relevo","relieve","relleno","reloj","remar","remedio","remo","rencor","rendir","renta","reparto","repetir","reposo","reptil","res","rescate","resina","respeto","resto","resumen","retiro","retorno","retrato","reunir","revés","revista","rey","rezar","rico","riego","rienda","riesgo","rifa","rígido","rigor","rincón","riñón","río","riqueza","risa","ritmo","rito","rizo","roble","roce","rociar","rodar","rodeo","rodilla","roer","rojizo","rojo","romero","romper","ron","ronco","ronda","ropa","ropero","rosa","rosca","rostro","rotar","rubí","rubor","rudo","rueda","rugir","ruido","ruina","ruleta","rulo","rumbo","rumor","ruptura","ruta","rutina","sábado","saber","sabio","sable","sacar","sagaz","sagrado","sala","saldo","salero","salir","salmón","salón","salsa","salto","salud","salvar","samba","sanción","sandía","sanear","sangre","sanidad","sano","santo","sapo","saque","sardina","sartén","sastre","satán","sauna","saxofón","sección","seco","secreto","secta","sed","seguir","seis","sello","selva","semana","semilla","senda","sensor","señal","señor","separar","sepia","sequía","ser","serie","sermón","servir","sesenta","sesión","seta","setenta","severo","sexo","sexto","sidra","siesta","siete","siglo","signo","sílaba","silbar","silencio","silla","símbolo","simio","sirena","sistema","sitio","situar","sobre","socio","sodio","sol","solapa","soldado","soledad","sólido","soltar","solución","sombra","sondeo","sonido","sonoro","sonrisa","sopa","soplar","soporte","sordo","sorpresa","sorteo","sostén","sótano","suave","subir","suceso","sudor","suegra","suelo","sueño","suerte","sufrir","sujeto","sultán","sumar","superar","suplir","suponer","supremo","sur","surco","sureño","surgir","susto","sutil","tabaco","tabique","tabla","tabú","taco","tacto","tajo","talar","talco","talento","talla","talón","tamaño","tambor","tango","tanque","tapa","tapete","tapia","tapón","taquilla","tarde","tarea","tarifa","tarjeta","tarot","tarro","tarta","tatuaje","tauro","taza","tazón","teatro","techo","tecla","técnica","tejado","tejer","tejido","tela","teléfono","tema","temor","templo","tenaz","tender","tener","tenis","tenso","teoría","terapia","terco","término","ternura","terror","tesis","tesoro","testigo","tetera","texto","tez","tibio","tiburón","tiempo","tienda","tierra","tieso","tigre","tijera","tilde","timbre","tímido","timo","tinta","tío","típico","tipo","tira","tirón","titán","títere","título","tiza","toalla","tobillo","tocar","tocino","todo","toga","toldo","tomar","tono","tonto","topar","tope","toque","tórax","torero","tormenta","torneo","toro","torpedo","torre","torso","tortuga","tos","tosco","toser","tóxico","trabajo","tractor","traer","tráfico","trago","traje","tramo","trance","trato","trauma","trazar","trébol","tregua","treinta","tren","trepar","tres","tribu","trigo","tripa","triste","triunfo","trofeo","trompa","tronco","tropa","trote","trozo","truco","trueno","trufa","tubería","tubo","tuerto","tumba","tumor","túnel","túnica","turbina","turismo","turno","tutor","ubicar","úlcera","umbral","unidad","unir","universo","uno","untar","uña","urbano","urbe","urgente","urna","usar","usuario","útil","utopía","uva","vaca","vacío","vacuna","vagar","vago","vaina","vajilla","vale","válido","valle","valor","válvula","vampiro","vara","variar","varón","vaso","vecino","vector","vehículo","veinte","vejez","vela","velero","veloz","vena","vencer","venda","veneno","vengar","venir","venta","venus","ver","verano","verbo","verde","vereda","verja","verso","verter","vía","viaje","vibrar","vicio","víctima","vida","vídeo","vidrio","viejo","viernes","vigor","vil","villa","vinagre","vino","viñedo","violín","viral","virgo","virtud","visor","víspera","vista","vitamina","viudo","vivaz","vivero","vivir","vivo","volcán","volumen","volver","voraz","votar","voto","voz","vuelo","vulgar","yacer","yate","yegua","yema","yerno","yeso","yodo","yoga","yogur","zafiro","zanja","zapato","zarza","zona","zorro","zumo","zurdo"]},function(e,a,r){"use strict";var i=this&&this.__awaiter||function(e,a,r,i){return new(r||(r=Promise))(function(t,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function s(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){e.done?t(e.value):new r(function(a){a(e.value)}).then(o,s)}l((i=i.apply(e,a||[])).next())})},t=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var a={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(a[r]=e[r]);return a.default=e,a};Object.defineProperty(a,"__esModule",{value:!0});const n=t(r(213)),o=r(17),s=r(13);!function(e){function a(e,a,t){return i(this,void 0,void 0,function*(){const i=JSON.stringify(a.identities),l=yield o.CryptoUtils.generateSaltForPwHash(),c=yield o.CryptoUtils.encryptMessage(i,t,l),u={version:"1",salt:s.TezosMessageUtils.readBufferWithHint(l,""),ciphertext:s.TezosMessageUtils.readBufferWithHint(c,""),kdf:"Argon2"},d=new Promise((a,r)=>{n.writeFile(e,JSON.stringify(u),e=>{e?r(e):a()})});return yield d,r(e,t)})}function r(e,a){return i(this,void 0,void 0,function*(){const r=new Promise((a,r)=>{n.readFile(e,(e,i)=>{if(e)return void r(e);const t=JSON.parse(i.toString());a(t)})}),i=yield r,t=s.TezosMessageUtils.writeBufferWithHint(i.ciphertext),l=s.TezosMessageUtils.writeBufferWithHint(i.salt);return{identities:JSON.parse(yield o.CryptoUtils.decryptMessage(t,a,l))}})}e.saveWallet=a,e.loadWallet=r,e.createWallet=function(e,r){return i(this,void 0,void 0,function*(){const i={identities:[]};return yield a(e,i,r),i})}}(a.TezosFileWallet||(a.TezosFileWallet={}))},function(e,a){},function(e,a,r){"use strict";var i=this&&this.__awaiter||function(e,a,r,i){return new(r||(r=Promise))(function(t,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function s(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){e.done?t(e.value):new r(function(a){a(e.value)}).then(o,s)}l((i=i.apply(e,a||[])).next())})};Object.defineProperty(a,"__esModule",{value:!0});const t=r(90),n=r(44),o=r(91);!function(e){const a="blocks",r="accounts",s="operation_groups",l="operations",c="fees",u="proposals",d="bakers",h="ballots";function A(e,a,r,t){return i(this,void 0,void 0,function*(){return o.ConseilDataClient.executeEntityQuery(e,"tezos",a,r,t)})}e.getTezosEntityData=A,e.getBlockHead=function(e,r){return i(this,void 0,void 0,function*(){const i=t.ConseilQueryBuilder.setLimit(t.ConseilQueryBuilder.addOrdering(t.ConseilQueryBuilder.blankQuery(),"level",n.ConseilSortDirection.DESC),1);return A(e,r,a,i)})},e.getBlock=function(e,r,o){return i(this,void 0,void 0,function*(){const i=t.ConseilQueryBuilder.setLimit(t.ConseilQueryBuilder.addPredicate(t.ConseilQueryBuilder.blankQuery(),"hash",n.ConseilOperator.EQ,[o],!1),1);return A(e,r,a,i)})},e.getAccount=function(e,a,o){return i(this,void 0,void 0,function*(){const i=t.ConseilQueryBuilder.setLimit(t.ConseilQueryBuilder.addPredicate(t.ConseilQueryBuilder.blankQuery(),"account_id",n.ConseilOperator.EQ,[o],!1),1);return A(e,a,r,i)})},e.getOperationGroup=function(e,a,r){return i(this,void 0,void 0,function*(){const i=t.ConseilQueryBuilder.setLimit(t.ConseilQueryBuilder.addPredicate(t.ConseilQueryBuilder.blankQuery(),"operation_id",n.ConseilOperator.EQ,[r],!1),1);return A(e,a,s,i)})},e.getBlocks=function(e,r,t){return i(this,void 0,void 0,function*(){return A(e,r,a,t)})},e.getAccounts=function(e,a,t){return i(this,void 0,void 0,function*(){return A(e,a,r,t)})},e.getOperationGroups=function(e,a,r){return i(this,void 0,void 0,function*(){return A(e,a,s,r)})},e.getOperations=function(e,a,r){return i(this,void 0,void 0,function*(){return A(e,a,l,r)})},e.getFeeStatistics=function(e,a,r){return i(this,void 0,void 0,function*(){let i=t.ConseilQueryBuilder.blankQuery();return i=t.ConseilQueryBuilder.addPredicate(i,"kind",n.ConseilOperator.EQ,[r]),i=t.ConseilQueryBuilder.addOrdering(i,"timestamp",n.ConseilSortDirection.DESC),i=t.ConseilQueryBuilder.setLimit(i,1),A(e,a,c,i)})},e.getProposals=function(e,a,r){return i(this,void 0,void 0,function*(){return A(e,a,u,r)})},e.getBakers=function(e,a,r){return i(this,void 0,void 0,function*(){return A(e,a,d,r)})},e.getBallots=function(e,a,r){return i(this,void 0,void 0,function*(){return A(e,a,h,r)})}}(a.TezosConseilClient||(a.TezosConseilClient={}))},function(e,a,r){"use strict";var i=this&&this.__awaiter||function(e,a,r,i){return new(r||(r=Promise))(function(t,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function s(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){e.done?t(e.value):new r(function(a){a(e.value)}).then(o,s)}l((i=i.apply(e,a||[])).next())})},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});const n=t(r(15)).default.getFetch();!function(e){function a(e,a){return i(this,void 0,void 0,function*(){return n(`${e.url}/v2/metadata/${a}`,{method:"GET",headers:{apiKey:e.apiKey}}).then(e=>e.json())})}e.executeMetadataQuery=a,e.getPlatforms=function(e){return i(this,void 0,void 0,function*(){return a(e,"platforms")})},e.getNetworks=function(e,r){return i(this,void 0,void 0,function*(){return a(e,`${r}/networks`)})},e.getEntities=function(e,r,t){return i(this,void 0,void 0,function*(){return a(e,`${r}/${t}/entities`)})},e.getAttributes=function(e,r,t,n){return i(this,void 0,void 0,function*(){return a(e,`${r}/${t}/${n}/attributes`)})},e.getAttributeValues=function(e,r,t,n,o){return i(this,void 0,void 0,function*(){return a(e,`${r}/${t}/${n}/${o}`)})},e.getAttributeValuesForPrefix=function(e,r,t,n,o,s){return i(this,void 0,void 0,function*(){return a(e,`${r}/${t}/${n}/${o}/${encodeURIComponent(s)}`)})}}(a.ConseilMetadataClient||(a.ConseilMetadataClient={}))}])}); \ No newline at end of file diff --git a/dist/chain/tezos/TezosLanguageUtil.d.ts b/dist/chain/tezos/TezosLanguageUtil.d.ts deleted file mode 100644 index 8ddf6875..00000000 --- a/dist/chain/tezos/TezosLanguageUtil.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export declare namespace TezosLanguageUtil { - function hexToMicheline(hex: string): codeEnvelope; - function translateMichelsonToMicheline(code: string): string; - function translateMichelsonToHex(code: string): string; - function translateMichelineToHex(code: string): string; - function preProcessMichelsonScript(code: string): string[]; - function normalizeMichelineWhiteSpace(fragment: string): string; - interface codeEnvelope { - code: string; - consumed: number; - } -} diff --git a/dist/chain/tezos/TezosLanguageUtil.js b/dist/chain/tezos/TezosLanguageUtil.js deleted file mode 100644 index d2a7b78f..00000000 --- a/dist/chain/tezos/TezosLanguageUtil.js +++ /dev/null @@ -1,231 +0,0 @@ -"use strict"; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const Micheline = __importStar(require("./lexer/Micheline")); -const Michelson = __importStar(require("./lexer/Michelson")); -const nearley = __importStar(require("nearley")); -const TezosMessageUtil_1 = require("./TezosMessageUtil"); -const MichelineKeywords = ['"parameter"', '"storage"', '"code"', '"False"', '"Elt"', '"Left"', '"None"', '"Pair"', '"Right"', '"Some"', '"True"', '"Unit"', '"PACK"', '"UNPACK"', '"BLAKE2B"', '"SHA256"', '"SHA512"', '"ABS"', '"ADD"', '"AMOUNT"', '"AND"', '"BALANCE"', '"CAR"', '"CDR"', '"CHECK_SIGNATURE"', '"COMPARE"', '"CONCAT"', '"CONS"', '"CREATE_ACCOUNT"', '"CREATE_CONTRACT"', '"IMPLICIT_ACCOUNT"', '"DIP"', '"DROP"', '"DUP"', '"EDIV"', '"EMPTY_MAP"', '"EMPTY_SET"', '"EQ"', '"EXEC"', '"FAILWITH"', '"GE"', '"GET"', '"GT"', '"HASH_KEY"', '"IF"', '"IF_CONS"', '"IF_LEFT"', '"IF_NONE"', '"INT"', '"LAMBDA"', '"LE"', '"LEFT"', '"LOOP"', '"LSL"', '"LSR"', '"LT"', '"MAP"', '"MEM"', '"MUL"', '"NEG"', '"NEQ"', '"NIL"', '"NONE"', '"NOT"', '"NOW"', '"OR"', '"PAIR"', '"PUSH"', '"RIGHT"', '"SIZE"', '"SOME"', '"SOURCE"', '"SENDER"', '"SELF"', '"STEPS_TO_QUOTA"', '"SUB"', '"SWAP"', '"TRANSFER_TOKENS"', '"SET_DELEGATE"', '"UNIT"', '"UPDATE"', '"XOR"', '"ITER"', '"LOOP_LEFT"', '"ADDRESS"', '"CONTRACT"', '"ISNAT"', '"CAST"', '"RENAME"', '"bool"', '"contract"', '"int"', '"key"', '"key_hash"', '"lambda"', '"list"', '"map"', '"big_map"', '"nat"', '"option"', '"or"', '"pair"', '"set"', '"signature"', '"string"', '"bytes"', '"mutez"', '"timestamp"', '"unit"', '"operation"', '"address"', '"SLICE"', '"DEFAULT_ACCOUNT"', '"tez"']; -var TezosLanguageUtil; -(function (TezosLanguageUtil) { - function hexToMicheline(hex) { - if (hex.length < 2) { - throw new Error(`Malformed Micheline fragment '${hex}'`); - } - let code = ''; - let offset = 0; - let fieldType = hex.substring(offset, offset + 2); - offset += 2; - switch (fieldType) { - case '00': { - const value = TezosMessageUtil_1.TezosMessageUtils.findInt(hex.substring(offset), 0, true); - code += `{ "int": "${value.value}" }`; - offset += value.length; - break; - } - case '01': { - const stringEnvelope = michelineHexToString(hex.substring(offset)); - code += `{ "string": "${stringEnvelope.code}" }`; - offset += stringEnvelope.consumed; - break; - } - case '02': { - const length = parseInt(hex.substring(offset, offset + 8), 16); - offset += 8; - let buffer = []; - let consumed = 0; - while (consumed < length) { - let envelope = hexToMicheline(hex.substring(offset)); - buffer.push(envelope.code); - consumed += envelope.consumed / 2; - offset += envelope.consumed; - } - if (length === 0) { - code += '[]'; - } - else { - code += `[ ${buffer.join(', ')} ]`; - } - break; - } - case '03': { - code += `{ "prim": ${michelineHexToKeyword(hex, offset)} }`; - offset += 2; - break; - } - case '04': { - code += `{ "prim": ${michelineHexToKeyword(hex, offset)}, `; - offset += 2; - const annEnvelope = michelineHexToAnnotations(hex.substring(offset)); - code += `"annots": [ ${annEnvelope.code} ] }`; - offset += annEnvelope.consumed; - break; - } - case '05': { - code += `{ "prim": ${michelineHexToKeyword(hex, offset)}, `; - offset += 2; - const envelope = hexToMicheline(hex.substring(offset)); - code += `"args": [ ${envelope.code} ] }`; - offset += envelope.consumed; - break; - } - case '06': { - code += `{ "prim": ${michelineHexToKeyword(hex, offset)}, `; - offset += 2; - const args = hexToMicheline(hex.substring(offset)); - code += `"args": [ ${args.code} ], `; - offset += args.consumed; - const anns = michelineHexToAnnotations(hex.substring(offset)); - code += `"annots": [ ${anns.code} ] }`; - offset += anns.consumed; - break; - } - case '07': { - code += `{ "prim": ${michelineHexToKeyword(hex, offset)}, `; - offset += 2; - let buffer = []; - let envelope = hexToMicheline(hex.substring(offset)); - buffer.push(envelope.code); - offset += envelope.consumed; - envelope = hexToMicheline(hex.substring(offset)); - buffer.push(envelope.code); - offset += envelope.consumed; - code += `"args": [ ${buffer.join(', ')} ] }`; - break; - } - case '08': { - code += `{ "prim": ${michelineHexToKeyword(hex, offset)}, `; - offset += 2; - const arg0 = hexToMicheline(hex.substring(offset)); - offset += arg0.consumed; - const arg1 = hexToMicheline(hex.substring(offset)); - offset += arg1.consumed; - code += `"args": [ ${arg0.code}, ${arg1.code} ], `; - const anns = michelineHexToAnnotations(hex.substring(offset)); - code += `"annots": [ ${anns.code} ] }`; - offset += anns.consumed; - break; - } - case '09': { - code += `{ "prim": ${michelineHexToKeyword(hex, offset)}, `; - offset += 2; - let envelope = hexToMicheline('02' + hex.substring(offset)); - code += `"args": ${envelope.code}`; - offset += envelope.consumed - 2; - if (hex.substring(offset, offset + 8) !== '00000000') { - const annEnvelope = michelineHexToAnnotations(hex.substring(offset)); - if (annEnvelope.code.length > 2) { - code += `, "annots": [ ${annEnvelope.code} ] }`; - } - offset += annEnvelope.consumed; - } - else { - code += ' }'; - offset += 8; - } - break; - } - case '0a': { - const length = parseInt(hex.substring(offset, offset + 8), 16); - offset += 8; - code += `{ "bytes": "${hex.substring(offset, offset + length * 2)}" }`; - offset += length * 2; - break; - } - default: { - throw new Error(`Unknown Micheline field type '${fieldType}'`); - } - } - return { code: code, consumed: offset }; - } - TezosLanguageUtil.hexToMicheline = hexToMicheline; - function translateMichelsonToMicheline(code) { - const parser = new nearley.Parser(nearley.Grammar.fromCompiled(Michelson)); - preProcessMichelsonScript(code).forEach(p => { parser.feed(p); }); - return parser.results[0]; - } - TezosLanguageUtil.translateMichelsonToMicheline = translateMichelsonToMicheline; - function translateMichelsonToHex(code) { - return preProcessMicheline(translateMichelsonToMicheline(code)) - .map(p => { var c = normalizeMichelineWhiteSpace(p); console.log(`--- C ${c}`); return c; }) - .map(p => translateMichelineToHex(p)) - .reduce((m, p) => { return m += ('0000000' + (p.length / 2).toString(16)).slice(-8) + p; }, ''); - } - TezosLanguageUtil.translateMichelsonToHex = translateMichelsonToHex; - function preProcessMicheline(code) { - const container = JSON.parse(code); - let parts = []; - parts.push(getSection(container, 'code')); - parts.push(getSection(container, 'storage')); - return parts; - } - function getSection(container, key) { - let root = container; - if (!!container.script) { - root = container.script; - } - for (let i = 0; i < root.length; i++) { - if (root[i]['prim'] === key) { - return JSON.stringify(root[i], null, 1); - } - } - throw new Error(`${key} key was not found`); - } - function translateMichelineToHex(code) { - const parser = new nearley.Parser(nearley.Grammar.fromCompiled(Micheline)); - parser.feed(normalizeMichelineWhiteSpace(code)); - return parser.results.join(''); - } - TezosLanguageUtil.translateMichelineToHex = translateMichelineToHex; - function michelineHexToString(hex) { - let offset = 0; - const length = parseInt(hex.substring(offset, offset + 8), 16); - offset += 8; - const text = Buffer.from(hex.substring(offset, offset + length * 2), 'hex').toString(); - offset += length * 2; - return { code: text, consumed: offset }; - } - function michelineHexToKeyword(hex, offset) { - return MichelineKeywords[parseInt(hex.substring(offset, offset + 2), 16)]; - } - function michelineHexToAnnotations(hex) { - const stringEnvelope = michelineHexToString(hex); - return { code: stringEnvelope.code.split(' ').map(s => `"${s}"`).join(', '), consumed: stringEnvelope.consumed }; - } - function preProcessMichelsonScript(code) { - let sections = new Map(); - sections['parameter'] = code.search(/parameter/), - sections['storage'] = code.search(/storage/), - sections['code'] = code.search(/code/); - const boundaries = Object.values(sections).sort((a, b) => Number(a) - Number(b)); - sections[Object.keys(sections).find(key => sections[key] === boundaries[0]) + ''] = code.substring(boundaries[0], boundaries[1]); - sections[Object.keys(sections).find(key => sections[key] === boundaries[1]) + ''] = code.substring(boundaries[1], boundaries[2]); - sections[Object.keys(sections).find(key => sections[key] === boundaries[2]) + ''] = code.substring(boundaries[2]); - const parts = [sections['parameter'], sections['storage'], sections['code']]; - return parts.map(p => p.trim().split('\n').map(l => l.replace(/\#[\s\S]+$/, '').trim()).filter(v => v.length > 0).join(' ')); - } - TezosLanguageUtil.preProcessMichelsonScript = preProcessMichelsonScript; - function normalizeMichelineWhiteSpace(fragment) { - return fragment.replace(/\n/g, ' ') - .replace(/ +/g, ' ') - .replace(/\[{/g, '[ {') - .replace(/}\]/g, '} ]') - .replace(/},{/g, '}, {') - .replace(/\]}/g, '] }') - .replace(/":"/g, '": "') - .replace(/":\[/g, '": [') - .replace(/{"/g, '{ "') - .replace(/"}/g, '" }') - .replace(/","/g, '", "') - .replace(/\[\[/g, '[ [') - .replace(/\]\]/g, '] ]'); - } - TezosLanguageUtil.normalizeMichelineWhiteSpace = normalizeMichelineWhiteSpace; -})(TezosLanguageUtil = exports.TezosLanguageUtil || (exports.TezosLanguageUtil = {})); -//# sourceMappingURL=TezosLanguageUtil.js.map \ No newline at end of file diff --git a/dist/chain/tezos/TezosLanguageUtil.js.map b/dist/chain/tezos/TezosLanguageUtil.js.map deleted file mode 100644 index 7d7176f1..00000000 --- a/dist/chain/tezos/TezosLanguageUtil.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosLanguageUtil.js","sourceRoot":"","sources":["../../../src/chain/tezos/TezosLanguageUtil.ts"],"names":[],"mappings":";;;;;;;;;AAAA,6DAA+C;AAC/C,6DAA+C;AAC/C,iDAAmC;AAEnC,yDAAuD;AAGvD,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;AAK7yC,IAAiB,iBAAiB,CAmRjC;AAnRD,WAAiB,iBAAiB;IAM9B,SAAgB,cAAc,CAAC,GAAW;QACtC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,GAAG,CAAC,CAAC;SAAE;QACjF,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,CAAC;QAEZ,QAAQ,SAAS,EAAE;YACf,KAAK,IAAI,CAAC,CAAC;gBACP,MAAM,KAAK,GAAG,oCAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACxE,IAAI,IAAI,aAAa,KAAK,CAAC,KAAK,KAAK,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;gBACvB,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,MAAM,cAAc,GAAG,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnE,IAAI,IAAI,gBAAgB,cAAc,CAAC,IAAI,KAAK,CAAC;gBACjD,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC;gBAClC,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,CAAC;gBACZ,IAAI,MAAM,GAAa,EAAE,CAAC;gBAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,OAAO,QAAQ,GAAG,MAAM,EAAE;oBACtB,IAAI,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;oBACrD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC3B,QAAQ,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;oBAClC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC;iBAC/B;gBACD,IAAI,MAAM,KAAK,CAAC,EAAE;oBACd,IAAI,IAAI,IAAI,CAAC;iBAChB;qBAAM;oBACH,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;iBACtC;gBACD,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,IAAI,IAAI,aAAa,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC5D,MAAM,IAAI,CAAC,CAAC;gBACZ,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,IAAI,IAAI,aAAa,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC5D,MAAM,IAAI,CAAC,CAAC;gBAEZ,MAAM,WAAW,GAAG,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrE,IAAI,IAAI,eAAe,WAAW,CAAC,IAAI,MAAM,CAAC;gBAC9C,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC;gBAC/B,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,IAAI,IAAI,aAAa,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC5D,MAAM,IAAI,CAAC,CAAC;gBACZ,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvD,IAAI,IAAI,aAAa,QAAQ,CAAC,IAAI,MAAM,CAAC;gBACzC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC;gBAC5B,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,IAAI,IAAI,aAAa,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC5D,MAAM,IAAI,CAAC,CAAC;gBAEZ,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnD,IAAI,IAAI,aAAa,IAAI,CAAC,IAAI,MAAM,CAAC;gBACrC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC;gBAExB,MAAM,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9D,IAAI,IAAI,eAAe,IAAI,CAAC,IAAI,MAAM,CAAC;gBACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC;gBACxB,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,IAAI,IAAI,aAAa,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC5D,MAAM,IAAI,CAAC,CAAC;gBAEZ,IAAI,MAAM,GAAa,EAAE,CAAC;gBAC1B,IAAI,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC;gBAC5B,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC;gBAE5B,IAAI,IAAI,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC7C,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,IAAI,IAAI,aAAa,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC5D,MAAM,IAAI,CAAC,CAAC;gBAEZ,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC;gBACxB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC;gBACxB,IAAI,IAAI,aAAa,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC;gBAEnD,MAAM,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9D,IAAI,IAAI,eAAe,IAAI,CAAC,IAAI,MAAM,CAAC;gBACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC;gBACxB,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,IAAI,IAAI,aAAa,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC5D,MAAM,IAAI,CAAC,CAAC;gBAEZ,IAAI,QAAQ,GAAG,cAAc,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5D,IAAI,IAAI,WAAW,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,MAAM,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAEhC,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,UAAU,EAAE;oBAClD,MAAM,WAAW,GAAG,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;oBACrE,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC7B,IAAI,IAAI,iBAAiB,WAAW,CAAC,IAAI,MAAM,CAAC;qBACnD;oBACD,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC;iBAClC;qBAAM;oBACH,IAAI,IAAI,IAAI,CAAC;oBACb,MAAM,IAAI,CAAC,CAAC;iBACf;gBACD,MAAM;aACT;YACD,KAAK,IAAI,CAAC,CAAC;gBACP,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,CAAC;gBACZ,IAAI,IAAI,eAAe,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;gBACvE,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;gBACrB,MAAM;aACT;YACD,OAAO,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,GAAG,CAAC,CAAC;aAAE;SAC/E;QAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IAtIe,gCAAc,iBAsI7B,CAAA;IAKD,SAAgB,6BAA6B,CAAC,IAAY;QACtD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,yBAAyB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAGlE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IANe,+CAA6B,gCAM5C,CAAA;IAQD,SAAgB,uBAAuB,CAAC,IAAY;QAChD,OAAO,mBAAmB,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAE;aAC5F,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxG,CAAC;IALe,yCAAuB,0BAKtC,CAAA;IAED,SAAS,mBAAmB,CAAC,IAAY;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,GAAa,EAAE,CAAC;QAEzB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,SAAS,UAAU,CAAC,SAAc,EAAE,GAAW;QAC3C,IAAI,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE;YAAE,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;SAAE;QAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;gBACzB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aAC3C;SACJ;QAED,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,oBAAoB,CAAC,CAAC;IAChD,CAAC;IAKD,SAAgB,uBAAuB,CAAC,IAAY;QAChD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAJe,yCAAuB,0BAItC,CAAA;IAKD,SAAS,oBAAoB,CAAC,GAAW;QACrC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvF,MAAM,IAAI,MAAM,GAAG,CAAC,CAAA;QACpB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IASD,SAAS,qBAAqB,CAAC,GAAW,EAAE,MAAc;QACtD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IASD,SAAS,yBAAyB,CAAC,GAAW;QAC1C,MAAM,cAAc,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC;IACrH,CAAC;IAKD,SAAgB,yBAAyB,CAAC,IAAY;QAClD,IAAI,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QACtC,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAChD,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YAC5C,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAEtC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC;QAClF,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAElH,MAAM,KAAK,GAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjI,CAAC;IAde,2CAAyB,4BAcxC,CAAA;IAKD,SAAgB,4BAA4B,CAAC,QAAgB;QACzD,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aAC9B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;aACtB,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;aACtB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;aACvB,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;aACtB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;aACvB,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;aACxB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;aACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;aACrB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;aACvB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;aACvB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAde,8CAA4B,+BAc3C,CAAA;AAML,CAAC,EAnRgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAmRjC"} \ No newline at end of file diff --git a/dist/chain/tezos/TezosMessageCodec.d.ts b/dist/chain/tezos/TezosMessageCodec.d.ts deleted file mode 100644 index 7cd637e4..00000000 --- a/dist/chain/tezos/TezosMessageCodec.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Activation, Ballot, Operation } from "../../types/tezos/TezosChainTypes"; -export declare namespace TezosMessageCodec { - function getOperationType(hex: string): string; - function idFirstOperation(hex: string): string; - function parseOperation(hex: string, opType: string, isFirst?: boolean): OperationEnvelope; - function encodeOperation(message: any): string; - function encodeActivation(activation: Activation): string; - function parseBallot(ballotMessage: string, isFirst?: boolean): OperationEnvelope; - function encodeBallot(ballot: Ballot): string; - function parseReveal(revealMessage: string, isFirst?: boolean): OperationEnvelope; - function encodeReveal(reveal: Operation): string; - function parseTransaction(transactionMessage: string, isFirst?: boolean): OperationEnvelope; - function encodeTransaction(transaction: Operation): string; - function parseOrigination(originationMessage: string, isFirst?: boolean): OperationEnvelope; - function encodeOrigination(origination: Operation): string; - function parseDelegation(delegationMessage: string, isFirst?: boolean): OperationEnvelope; - function encodeDelegation(delegation: Operation): string; - function parseOperationGroup(hex: string): Array; - interface OperationEnvelope { - operation: any; - branch: string; - next?: string; - nextoffset: number; - } -} diff --git a/dist/chain/tezos/TezosMessageCodec.js b/dist/chain/tezos/TezosMessageCodec.js deleted file mode 100644 index e14f39a7..00000000 --- a/dist/chain/tezos/TezosMessageCodec.js +++ /dev/null @@ -1,513 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const TezosMessageUtil_1 = require("./TezosMessageUtil"); -const TezosLanguageUtil_1 = require("./TezosLanguageUtil"); -const operationTypes = [ - "endorsement", - "seedNonceRevelation", - "doubleEndorsementEvidence", - "doubleBakingEvidence", - "accountActivation", - "proposal", - "ballot", - "reveal", - "transaction", - "origination", - "delegation" -]; -var TezosMessageCodec; -(function (TezosMessageCodec) { - function getOperationType(hex) { - return operationTypes[TezosMessageUtil_1.TezosMessageUtils.readInt(hex)]; - } - TezosMessageCodec.getOperationType = getOperationType; - function idFirstOperation(hex) { - return getOperationType(hex.substring(64, 66)); - } - TezosMessageCodec.idFirstOperation = idFirstOperation; - function parseOperation(hex, opType, isFirst = true) { - switch (opType) { - case "endorsement": - throw new Error(`Unsupported operation type: ${opType}`); - case "seedNonceRevelation": - throw new Error(`Unsupported operation type: ${opType}`); - case "doubleEndorsementEvidence": - throw new Error(`Unsupported operation type: ${opType}`); - case "doubleBakingEvidence": - throw new Error(`Unsupported operation type: ${opType}`); - case "accountActivation": - throw new Error(`Unsupported operation type: ${opType}`); - case "proposal": - throw new Error(`Unsupported operation type: ${opType}`); - case "ballot": - return parseBallot(hex, isFirst); - case "reveal": - return parseReveal(hex, isFirst); - case "transaction": - return parseTransaction(hex, isFirst); - case "origination": - return parseOrigination(hex, isFirst); - case "delegation": - return parseDelegation(hex, isFirst); - default: - throw new Error(`Unsupported operation type: ${opType}`); - } - } - TezosMessageCodec.parseOperation = parseOperation; - function encodeOperation(message) { - if (message.hasOwnProperty('pkh') && message.hasOwnProperty('secret')) { - return encodeActivation(message); - } - if (message.hasOwnProperty('kind')) { - const operation = message; - if (operation.kind === 'reveal') { - return encodeReveal(operation); - } - if (operation.kind === 'transaction') { - return encodeTransaction(operation); - } - if (operation.kind === 'origination') { - return encodeOrigination(operation); - } - if (operation.kind === 'delegation') { - return encodeDelegation(operation); - } - } - if (message.hasOwnProperty('vote')) { - return encodeBallot(message); - } - throw new Error('Unsupported message type'); - } - TezosMessageCodec.encodeOperation = encodeOperation; - function encodeActivation(activation) { - let hex = TezosMessageUtil_1.TezosMessageUtils.writeInt(operationTypes.indexOf('accountActivation')); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(activation.pkh).slice(4); - hex += activation.secret; - return hex; - } - TezosMessageCodec.encodeActivation = encodeActivation; - function parseBallot(ballotMessage, isFirst = true) { - let hexOperationType = isFirst ? ballotMessage.substring(64, 66) : ballotMessage.substring(0, 2); - if (getOperationType(hexOperationType) !== 'ballot') { - throw new Error('Provided operation is not a ballot'); - } - let fieldoffset = 0; - let branch = ''; - if (isFirst) { - branch = TezosMessageUtil_1.TezosMessageUtils.readBranch(ballotMessage.substring(fieldoffset, fieldoffset + 64)); - fieldoffset += 64 + 2; - } - else { - fieldoffset += 2; - } - const source = TezosMessageUtil_1.TezosMessageUtils.readAddress(ballotMessage.substring(fieldoffset, fieldoffset + 42)); - fieldoffset += 42; - const period = parseInt(ballotMessage.substring(fieldoffset, fieldoffset + 8), 16); - fieldoffset += 8; - const proposal = TezosMessageUtil_1.TezosMessageUtils.readBufferWithHint(Buffer.from(ballotMessage.substring(fieldoffset, fieldoffset + 64), 'hex'), 'p'); - fieldoffset += 64; - const vote = parseInt(ballotMessage.substring(fieldoffset, fieldoffset + 1), 16); - fieldoffset += 2; - let next; - if (ballotMessage.length > fieldoffset) { - next = getOperationType(ballotMessage.substring(fieldoffset, fieldoffset + 2)); - } - const ballot = { - source: source, - period: period, - proposal: proposal, - vote: vote - }; - const envelope = { - operation: ballot, - branch: branch, - next: next, - nextoffset: next ? fieldoffset : -1 - }; - return envelope; - } - TezosMessageCodec.parseBallot = parseBallot; - function encodeBallot(ballot) { - let hex = TezosMessageUtil_1.TezosMessageUtils.writeInt(operationTypes.indexOf('ballot')); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(ballot.source).slice(2); - hex += ('00000000' + ballot.period.toString(16)).slice(-8); - hex += TezosMessageUtil_1.TezosMessageUtils.writeBufferWithHint(ballot.proposal).toString('hex').slice(4); - hex += ('00' + ballot.vote.toString(16)).slice(-2); - return hex; - } - TezosMessageCodec.encodeBallot = encodeBallot; - function parseReveal(revealMessage, isFirst = true) { - let hexOperationType = isFirst ? revealMessage.substring(64, 66) : revealMessage.substring(0, 2); - if (getOperationType(hexOperationType) !== 'reveal') { - throw new Error('Provided operation is not a reveal.'); - } - let fieldoffset = 0; - let branch = ''; - if (isFirst) { - branch = TezosMessageUtil_1.TezosMessageUtils.readBranch(revealMessage.substring(fieldoffset, fieldoffset + 64)); - fieldoffset += 64 + 2; - } - else { - fieldoffset += 2; - } - let source = TezosMessageUtil_1.TezosMessageUtils.readAddress(revealMessage.substring(fieldoffset, fieldoffset + 44)); - fieldoffset += 44; - let feeInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(revealMessage, fieldoffset); - fieldoffset += feeInfo.length; - let counterInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(revealMessage, fieldoffset); - fieldoffset += counterInfo.length; - let gasInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(revealMessage, fieldoffset); - fieldoffset += gasInfo.length; - let storageInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(revealMessage, fieldoffset); - fieldoffset += storageInfo.length; - let publickey = TezosMessageUtil_1.TezosMessageUtils.readPublicKey(revealMessage.substring(fieldoffset, fieldoffset + 66)); - fieldoffset += 66; - let next; - if (revealMessage.length > fieldoffset) { - next = getOperationType(revealMessage.substring(fieldoffset, fieldoffset + 2)); - } - const reveal = { - kind: "reveal", - source: source, - public_key: publickey, - fee: feeInfo.value + "", - gas_limit: gasInfo.value + "", - storage_limit: storageInfo.value + "", - counter: counterInfo.value + "" - }; - const envelope = { - operation: reveal, - branch: branch, - next: next, - nextoffset: next ? fieldoffset : -1 - }; - return envelope; - } - TezosMessageCodec.parseReveal = parseReveal; - function encodeReveal(reveal) { - if (reveal.kind !== 'reveal') { - throw new Error('Incorrect operation type.'); - } - if (reveal.public_key === undefined) { - throw new Error('Missing public key.'); - } - let hex = TezosMessageUtil_1.TezosMessageUtils.writeInt(operationTypes.indexOf('reveal')); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(reveal.source); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(reveal.fee)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(reveal.counter)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(reveal.gas_limit)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(reveal.storage_limit)); - hex += TezosMessageUtil_1.TezosMessageUtils.writePublicKey(reveal.public_key); - return hex; - } - TezosMessageCodec.encodeReveal = encodeReveal; - function parseTransaction(transactionMessage, isFirst = true) { - let hexOperationType = isFirst ? transactionMessage.substring(64, 66) : transactionMessage.substring(0, 2); - if (getOperationType(hexOperationType) !== "transaction") { - throw new Error("Provided operation is not a transaction."); - } - let fieldoffset = 0; - let branch = ""; - if (isFirst) { - branch = TezosMessageUtil_1.TezosMessageUtils.readBranch(transactionMessage.substring(fieldoffset, fieldoffset + 64)); - fieldoffset += 64 + 2; - } - else { - fieldoffset += 2; - } - let source = TezosMessageUtil_1.TezosMessageUtils.readAddress(transactionMessage.substring(fieldoffset, fieldoffset + 44)); - fieldoffset += 44; - let feeInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(transactionMessage, fieldoffset); - fieldoffset += feeInfo.length; - let counterInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(transactionMessage, fieldoffset); - fieldoffset += counterInfo.length; - let gasInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(transactionMessage, fieldoffset); - fieldoffset += gasInfo.length; - let storageInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(transactionMessage, fieldoffset); - fieldoffset += storageInfo.length; - let amountInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(transactionMessage, fieldoffset); - fieldoffset += amountInfo.length; - let target = TezosMessageUtil_1.TezosMessageUtils.readAddress(transactionMessage.substring(fieldoffset, fieldoffset + 44)); - fieldoffset += 44; - let hasParameters = TezosMessageUtil_1.TezosMessageUtils.readBoolean(transactionMessage.substring(fieldoffset, fieldoffset + 2)); - fieldoffset += 2; - let parameters = ''; - if (hasParameters) { - const paramLength = parseInt(transactionMessage.substring(fieldoffset, fieldoffset + 8), 16); - fieldoffset += 8; - const codeEnvelope = TezosLanguageUtil_1.TezosLanguageUtil.hexToMicheline(transactionMessage.substring(fieldoffset)); - parameters = codeEnvelope.code; - if (codeEnvelope.consumed !== paramLength * 2) { - throw new Error('Failed to parse transaction parameters: length mismatch'); - } - fieldoffset += paramLength * 2; - } - let next; - if (transactionMessage.length > fieldoffset) { - next = getOperationType(transactionMessage.substring(fieldoffset, fieldoffset + 2)); - } - const transaction = { - kind: "transaction", - source: source, - destination: target, - amount: amountInfo.value.toString(), - fee: feeInfo.value.toString(), - gas_limit: gasInfo.value.toString(), - storage_limit: storageInfo.value.toString(), - counter: counterInfo.value.toString(), - parameters: parameters - }; - const envelope = { - operation: transaction, - branch: branch, - next: next, - nextoffset: next ? fieldoffset : -1 - }; - return envelope; - } - TezosMessageCodec.parseTransaction = parseTransaction; - function encodeTransaction(transaction) { - if (transaction.kind !== 'transaction') { - throw new Error('Incorrect operation type'); - } - if (transaction.amount === undefined) { - throw new Error('Missing amount'); - } - if (transaction.destination === undefined) { - throw new Error('Missing destination'); - } - let hex = TezosMessageUtil_1.TezosMessageUtils.writeInt(operationTypes.indexOf('transaction')); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(transaction.source); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(transaction.fee)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(transaction.counter)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(transaction.gas_limit)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(transaction.storage_limit)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(transaction.amount)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(transaction.destination); - if (!!transaction.parameters) { - const code = TezosLanguageUtil_1.TezosLanguageUtil.normalizeMichelineWhiteSpace(JSON.stringify(transaction.parameters)); - const result = TezosLanguageUtil_1.TezosLanguageUtil.translateMichelineToHex(code); - hex += 'ff' + ('0000000' + (result.length / 2).toString(16)).slice(-8) + result; - } - else { - hex += '00'; - } - return hex; - } - TezosMessageCodec.encodeTransaction = encodeTransaction; - function parseOrigination(originationMessage, isFirst = true) { - let hexOperationType = isFirst ? originationMessage.substring(64, 66) : originationMessage.substring(0, 2); - if (getOperationType(hexOperationType) !== "origination") { - throw new Error("Provided operation is not an origination."); - } - let fieldoffset = 0; - let branch = ""; - if (isFirst) { - branch = TezosMessageUtil_1.TezosMessageUtils.readBranch(originationMessage.substring(fieldoffset, fieldoffset + 64)); - fieldoffset += 64 + 2; - } - else { - fieldoffset += 2; - } - let source = TezosMessageUtil_1.TezosMessageUtils.readAddress(originationMessage.substring(fieldoffset, fieldoffset + 44)); - fieldoffset += 44; - let feeInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(originationMessage, fieldoffset); - fieldoffset += feeInfo.length; - let counterInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(originationMessage, fieldoffset); - fieldoffset += counterInfo.length; - let gasInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(originationMessage, fieldoffset); - fieldoffset += gasInfo.length; - let storageInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(originationMessage, fieldoffset); - fieldoffset += storageInfo.length; - let publickeyhash = TezosMessageUtil_1.TezosMessageUtils.readAddress(originationMessage.substring(fieldoffset, fieldoffset + 42)); - fieldoffset += 42; - let balanceInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(originationMessage, fieldoffset); - fieldoffset += balanceInfo.length; - let spendable = TezosMessageUtil_1.TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); - fieldoffset += 2; - let delegatable = TezosMessageUtil_1.TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); - fieldoffset += 2; - let hasDelegate = TezosMessageUtil_1.TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); - fieldoffset += 2; - let delegate = ''; - if (hasDelegate) { - delegate = TezosMessageUtil_1.TezosMessageUtils.readAddress(originationMessage.substring(fieldoffset, fieldoffset + 42)); - fieldoffset += 42; - } - let hasScript = TezosMessageUtil_1.TezosMessageUtils.readBoolean(originationMessage.substring(fieldoffset, fieldoffset + 2)); - fieldoffset += 2; - let script = ''; - if (hasScript) { - let codesize = parseInt(originationMessage.substring(fieldoffset, fieldoffset + 8), 16); - fieldoffset += 8; - const code = TezosLanguageUtil_1.TezosLanguageUtil.hexToMicheline(originationMessage.substring(fieldoffset, fieldoffset + codesize * 2)).code; - fieldoffset += codesize * 2; - let storagesize = parseInt(originationMessage.substring(fieldoffset, fieldoffset + 8), 16); - fieldoffset += 8; - const storage = TezosLanguageUtil_1.TezosLanguageUtil.hexToMicheline(originationMessage.substring(fieldoffset, fieldoffset + storagesize * 2)).code; - fieldoffset += storagesize * 2; - script = `{ "script": [ ${code}, ${storage} ] }`; - } - let next; - if (originationMessage.length > fieldoffset) { - next = getOperationType(originationMessage.substring(fieldoffset, fieldoffset + 2)); - } - const origination = { - kind: "origination", - source: source, - managerPubkey: publickeyhash, - balance: balanceInfo.value + "", - spendable: spendable, - delegatable: delegatable, - delegate: hasDelegate ? delegate : undefined, - fee: feeInfo.value + "", - gas_limit: gasInfo.value + "", - storage_limit: storageInfo.value + "", - counter: counterInfo.value + "", - script: hasScript ? script : undefined, - }; - const envelope = { - operation: origination, - branch: branch, - next: next, - nextoffset: next ? fieldoffset : -1 - }; - return envelope; - } - TezosMessageCodec.parseOrigination = parseOrigination; - function encodeOrigination(origination) { - if (origination.kind !== 'origination') { - throw new Error('Incorrect operation type'); - } - if (origination.managerPubkey === undefined) { - throw new Error('Missing manager address'); - } - if (origination.balance === undefined) { - throw new Error('Missing balance'); - } - let hex = TezosMessageUtil_1.TezosMessageUtils.writeInt(operationTypes.indexOf('origination')); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(origination.source); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(origination.fee)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(origination.counter)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(origination.gas_limit)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(origination.storage_limit)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(origination.managerPubkey).slice(2); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(origination.balance)); - hex += origination.spendable !== undefined ? TezosMessageUtil_1.TezosMessageUtils.writeBoolean(origination.spendable) : '00'; - hex += origination.delegatable !== undefined ? TezosMessageUtil_1.TezosMessageUtils.writeBoolean(origination.delegatable) : '00'; - if (origination.delegate !== undefined) { - hex += TezosMessageUtil_1.TezosMessageUtils.writeBoolean(true); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(origination.delegate).slice(2); - } - else { - hex += TezosMessageUtil_1.TezosMessageUtils.writeBoolean(false); - } - if (!!origination.script) { - hex += 'ff'; - let container = origination.script; - try { - container = JSON.parse(origination.script); - } - catch (_a) { } - let parts = []; - parts.push(JSON.stringify(container['code'], null, 1)); - parts.push(JSON.stringify(container['storage'], null, 1)); - hex += parts - .map(p => TezosLanguageUtil_1.TezosLanguageUtil.normalizeMichelineWhiteSpace(p)) - .map(p => TezosLanguageUtil_1.TezosLanguageUtil.translateMichelineToHex(p)) - .reduce((m, p) => { return m += ('0000000' + (p.length / 2).toString(16)).slice(-8) + p; }, ''); - } - else { - hex += '00'; - } - return hex; - } - TezosMessageCodec.encodeOrigination = encodeOrigination; - function parseDelegation(delegationMessage, isFirst = true) { - let hexOperationType = isFirst ? delegationMessage.substring(64, 66) : delegationMessage.substring(0, 2); - if (getOperationType(hexOperationType) !== "delegation") { - throw new Error("Provided operation is not a delegation."); - } - let fieldoffset = 0; - let branch = ""; - if (isFirst) { - branch = TezosMessageUtil_1.TezosMessageUtils.readBranch(delegationMessage.substring(fieldoffset, fieldoffset + 64)); - fieldoffset += 64 + 2; - } - else { - fieldoffset += 2; - } - let source = TezosMessageUtil_1.TezosMessageUtils.readAddress(delegationMessage.substring(fieldoffset, fieldoffset + 44)); - fieldoffset += 44; - let feeInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(delegationMessage, fieldoffset); - fieldoffset += feeInfo.length; - let counterInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(delegationMessage, fieldoffset); - fieldoffset += counterInfo.length; - let gasInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(delegationMessage, fieldoffset); - fieldoffset += gasInfo.length; - let storageInfo = TezosMessageUtil_1.TezosMessageUtils.findInt(delegationMessage, fieldoffset); - fieldoffset += storageInfo.length; - let hasDelegate = TezosMessageUtil_1.TezosMessageUtils.readBoolean(delegationMessage.substring(fieldoffset, fieldoffset + 2)); - fieldoffset += 2; - let delegate = ''; - if (hasDelegate) { - delegate = TezosMessageUtil_1.TezosMessageUtils.readAddress(delegationMessage.substring(fieldoffset, fieldoffset + 42)); - fieldoffset += 42; - } - let next; - if (delegationMessage.length > fieldoffset) { - next = getOperationType(delegationMessage.substring(fieldoffset, fieldoffset + 2)); - } - const delegation = { - kind: "delegation", - source: source, - delegate: hasDelegate ? delegate : undefined, - fee: feeInfo.value + "", - gas_limit: gasInfo.value + "", - storage_limit: storageInfo.value + "", - counter: counterInfo.value + "" - }; - const envelope = { - operation: delegation, - branch: branch, - next: next, - nextoffset: next ? fieldoffset : -1 - }; - return envelope; - } - TezosMessageCodec.parseDelegation = parseDelegation; - function encodeDelegation(delegation) { - if (delegation.kind !== 'delegation') { - throw new Error('Incorrect operation type'); - } - let hex = TezosMessageUtil_1.TezosMessageUtils.writeInt(operationTypes.indexOf('delegation')); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(delegation.source); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(delegation.fee)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(delegation.counter)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(delegation.gas_limit)); - hex += TezosMessageUtil_1.TezosMessageUtils.writeInt(parseInt(delegation.storage_limit)); - if (delegation.delegate !== undefined) { - hex += TezosMessageUtil_1.TezosMessageUtils.writeBoolean(true); - hex += TezosMessageUtil_1.TezosMessageUtils.writeAddress(delegation.delegate).slice(2); - } - else { - hex += TezosMessageUtil_1.TezosMessageUtils.writeBoolean(false); - } - return hex; - } - TezosMessageCodec.encodeDelegation = encodeDelegation; - function parseOperationGroup(hex) { - let operations = []; - let envelope = parseOperation(hex, idFirstOperation(hex)); - operations.push(envelope.operation); - let groupOffset = 0; - while (envelope.next) { - groupOffset += envelope.nextoffset; - envelope = parseOperation(hex.substring(groupOffset), envelope.next, false); - operations.push(envelope.operation); - } - return operations; - } - TezosMessageCodec.parseOperationGroup = parseOperationGroup; -})(TezosMessageCodec = exports.TezosMessageCodec || (exports.TezosMessageCodec = {})); -//# sourceMappingURL=TezosMessageCodec.js.map \ No newline at end of file diff --git a/dist/chain/tezos/TezosMessageCodec.js.map b/dist/chain/tezos/TezosMessageCodec.js.map deleted file mode 100644 index 69a618a1..00000000 --- a/dist/chain/tezos/TezosMessageCodec.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosMessageCodec.js","sourceRoot":"","sources":["../../../src/chain/tezos/TezosMessageCodec.ts"],"names":[],"mappings":";;AAAA,yDAAuD;AACvD,2DAAwD;AAGxD,MAAM,cAAc,GAAkB;IAClC,aAAa;IACb,qBAAqB;IACrB,2BAA2B;IAC3B,sBAAsB;IACtB,mBAAmB;IACnB,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,aAAa;IACb,YAAY;CACf,CAAC;AAEF,IAAiB,iBAAiB,CA6nBjC;AA7nBD,WAAiB,iBAAiB;IAK9B,SAAgB,gBAAgB,CAAC,GAAW;QACxC,OAAO,cAAc,CAAC,oCAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAFe,kCAAgB,mBAE/B,CAAA;IAMD,SAAgB,gBAAgB,CAAC,GAAW;QACxC,OAAO,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAFe,kCAAgB,mBAE/B,CAAA;IASD,SAAgB,cAAc,CAAC,GAAW,EAAE,MAAc,EAAE,UAAmB,IAAI;QAC/E,QAAQ,MAAM,EAAE;YACZ,KAAK,aAAa;gBACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,qBAAqB;gBACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,2BAA2B;gBAC5B,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,sBAAsB;gBACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,mBAAmB;gBACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,UAAU;gBACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,QAAQ;gBACT,OAAO,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrC,KAAK,QAAQ;gBACT,OAAO,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrC,KAAK,aAAa;gBACd,OAAO,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC1C,KAAK,aAAa;gBACd,OAAO,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC1C,KAAK,YAAY;gBACb,OAAO,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACzC;gBACI,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;SAChE;IACL,CAAC;IA3Be,gCAAc,iBA2B7B,CAAA;IASD,SAAgB,eAAe,CAAC,OAAY;QACxC,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;YACnE,OAAO,gBAAgB,CAAC,OAAqB,CAAC,CAAC;SAClD;QAED,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,SAAS,GAAG,OAAoB,CAAC;YACvC,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAAE,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;aAAE;YACpE,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE;gBAAE,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;aAAE;YAC9E,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE;gBAAE,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;aAAE;YAC9E,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE;gBAAE,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;aAAE;SAC/E;QAED,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YAChC,OAAO,YAAY,CAAC,OAAiB,CAAC,CAAC;SAC1C;QAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAlBe,iCAAe,kBAkB9B,CAAA;IAOD,SAAgB,gBAAgB,CAAC,UAAsB;QACnD,IAAI,GAAG,GAAG,oCAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAClF,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/D,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;QAEzB,OAAO,GAAG,CAAC;IACf,CAAC;IANe,kCAAgB,mBAM/B,CAAA;IAQD,SAAgB,WAAW,CAAC,aAAqB,EAAE,UAAmB,IAAI;QACtE,IAAI,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,QAAQ,EAAE;YACjD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACzD;QAED,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,OAAO,EAAE;YACT,MAAM,GAAG,oCAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;YAC9F,WAAW,IAAI,EAAE,GAAG,CAAC,CAAC;SACzB;aAAM;YACH,WAAW,IAAI,CAAC,CAAC;SACpB;QAED,MAAM,MAAM,GAAG,oCAAiB,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;QACrG,WAAW,IAAI,EAAE,CAAC;QAElB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,WAAW,IAAI,CAAC,CAAC;QAEjB,MAAM,QAAQ,GAAG,oCAAiB,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QACvI,WAAW,IAAI,EAAE,CAAC;QAElB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAe,CAAC;QAC/F,WAAW,IAAI,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC;QACT,IAAI,aAAa,CAAC,MAAM,GAAG,WAAW,EAAE;YACpC,IAAI,GAAG,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SAClF;QAED,MAAM,MAAM,GAAW;YACnB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,IAAI;SACb,CAAC;QAEF,MAAM,QAAQ,GAAsB;YAChC,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC,CAAA;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IA/Ce,6BAAW,cA+C1B,CAAA;IAOD,SAAgB,YAAY,CAAC,MAAc;QACvC,IAAI,GAAG,GAAG,oCAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9D,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,GAAG,IAAI,oCAAiB,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvF,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnD,OAAO,GAAG,CAAC;IACf,CAAC;IARe,8BAAY,eAQ3B,CAAA;IAQD,SAAgB,WAAW,CAAC,aAAqB,EAAE,UAAmB,IAAI;QACtE,IAAI,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,QAAQ,EAAE;YACjD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SAC1D;QAED,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,OAAO,EAAE;YACT,MAAM,GAAG,oCAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;YAC9F,WAAW,IAAI,EAAE,GAAG,CAAC,CAAC;SACzB;aAAM;YACH,WAAW,IAAI,CAAC,CAAC;SACpB;QAED,IAAI,MAAM,GAAG,oCAAiB,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;QACnG,WAAW,IAAI,EAAE,CAAC;QAElB,IAAI,OAAO,GAAG,oCAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAEpE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,oCAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAExE,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAClC,IAAI,OAAO,GAAG,oCAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAEpE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,oCAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACxE,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAElC,IAAI,SAAS,GAAG,oCAAiB,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;QACxG,WAAW,IAAI,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC;QACT,IAAI,aAAa,CAAC,MAAM,GAAG,WAAW,EAAE;YACpC,IAAI,GAAG,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SAClF;QAED,MAAM,MAAM,GAAc;YACtB,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,SAAS;YACrB,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE;YACvB,SAAS,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE;YAC7B,aAAa,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE;YACrC,OAAO,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE;SAClC,CAAC;QAEF,MAAM,QAAQ,GAAsB;YAChC,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC,CAAA;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAxDe,6BAAW,cAwD1B,CAAA;IAOD,SAAgB,YAAY,CAAC,MAAiB;QAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAAE;QAC/E,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SAAE;QAEhF,IAAI,GAAG,GAAG,oCAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9D,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAClE,GAAG,IAAI,oCAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE3D,OAAO,GAAG,CAAC;IACf,CAAC;IAbe,8BAAY,eAa3B,CAAA;IAQD,SAAgB,gBAAgB,CAAC,kBAA0B,EAAE,UAAmB,IAAI;QAChF,IAAI,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3G,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,aAAa,EAAE;YACtD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;SAC/D;QAED,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,OAAO,EAAE;YACT,MAAM,GAAG,oCAAiB,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;YACnG,WAAW,IAAI,EAAE,GAAG,CAAC,CAAC;SACzB;aAAM;YACH,WAAW,IAAI,CAAC,CAAC;SACpB;QAED,IAAI,MAAM,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;QACxG,WAAW,IAAI,EAAE,CAAC;QAElB,IAAI,OAAO,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAEzE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAE7E,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAClC,IAAI,OAAO,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAEzE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAE7E,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAClC,IAAI,UAAU,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAE5E,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC;QACjC,IAAI,MAAM,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;QACxG,WAAW,IAAI,EAAE,CAAC;QAElB,IAAI,aAAa,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9G,WAAW,IAAI,CAAC,CAAC;QACjB,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,aAAa,EAAE;YACf,MAAM,WAAW,GAAG,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7F,WAAW,IAAI,CAAC,CAAC;YACjB,MAAM,YAAY,GAAG,qCAAiB,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACjG,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;YAC/B,IAAI,YAAY,CAAC,QAAQ,KAAK,WAAW,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;aAAE;YAC9H,WAAW,IAAI,WAAW,GAAG,CAAC,CAAC;SAClC;QAED,IAAI,IAAI,CAAC;QACT,IAAI,kBAAkB,CAAC,MAAM,GAAG,WAAW,EAAE;YACzC,IAAI,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SACvF;QAED,MAAM,WAAW,GAAc;YAC3B,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC7B,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC3C,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE;YACrC,UAAU,EAAE,UAAU;SACzB,CAAC;QAEF,MAAM,QAAQ,GAAsB;YAChC,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC,CAAA;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAzEe,kCAAgB,mBAyE/B,CAAA;IAUD,SAAgB,iBAAiB,CAAC,WAAsB;QACpD,IAAI,WAAW,CAAC,IAAI,KAAK,aAAa,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAAE;QACxF,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SAAE;QAC5E,IAAI,WAAW,CAAC,WAAW,KAAK,SAAS,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SAAE;QAEtF,IAAI,GAAG,GAAG,oCAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAC5E,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1D,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QACnE,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;QACvE,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAE/D,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE;YAC1B,MAAM,IAAI,GAAG,qCAAiB,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;YACpG,MAAM,MAAM,GAAG,qCAAiB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC/D,GAAG,IAAI,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACnF;aAAM;YACH,GAAG,IAAI,IAAI,CAAC;SACf;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAvBe,mCAAiB,oBAuBhC,CAAA;IAQD,SAAgB,gBAAgB,CAAC,kBAA0B,EAAE,UAAmB,IAAI;QAChF,IAAI,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3G,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,aAAa,EAAE;YACtD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAChE;QAED,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,OAAO,EAAE;YACT,MAAM,GAAG,oCAAiB,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;YACnG,WAAW,IAAI,EAAE,GAAG,CAAC,CAAC;SACzB;aAAM;YACH,WAAW,IAAI,CAAC,CAAC;SACpB;QAED,IAAI,MAAM,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;QACxG,WAAW,IAAI,EAAE,CAAC;QAElB,IAAI,OAAO,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAEzE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAE7E,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAClC,IAAI,OAAO,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAEzE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAC7E,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAElC,IAAI,aAAa,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/G,WAAW,IAAI,EAAE,CAAC;QAElB,IAAI,WAAW,GAAG,oCAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAE7E,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAClC,IAAI,SAAS,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QAE1G,WAAW,IAAI,CAAC,CAAC;QACjB,IAAI,WAAW,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QAE5G,WAAW,IAAI,CAAC,CAAC;QACjB,IAAI,WAAW,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QAE5G,WAAW,IAAI,CAAC,CAAC;QACjB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,WAAW,EAAE;YACb,QAAQ,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;YACtG,WAAW,IAAI,EAAE,CAAC;SACrB;QAED,IAAI,SAAS,GAAG,oCAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1G,WAAW,IAAI,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,SAAS,EAAE;YACX,IAAI,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxF,WAAW,IAAI,CAAC,CAAC;YAEjB,MAAM,IAAI,GAAG,qCAAiB,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1H,WAAW,IAAI,QAAQ,GAAG,CAAC,CAAC;YAE5B,IAAI,WAAW,GAAG,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3F,WAAW,IAAI,CAAC,CAAC;YAEjB,MAAM,OAAO,GAAG,qCAAiB,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChI,WAAW,IAAI,WAAW,GAAG,CAAC,CAAC;YAE/B,MAAM,GAAG,iBAAiB,IAAI,KAAK,OAAO,MAAM,CAAC;SACpD;QAED,IAAI,IAAI,CAAC;QACT,IAAI,kBAAkB,CAAC,MAAM,GAAG,WAAW,EAAE;YACzC,IAAI,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SACvF;QAED,MAAM,WAAW,GAAc;YAC3B,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;YACd,aAAa,EAAE,aAAa;YAC5B,OAAO,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE;YAC/B,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC5C,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE;YACvB,SAAS,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE;YAC7B,aAAa,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE;YACrC,OAAO,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE;YAC/B,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACzC,CAAC;QAEF,MAAM,QAAQ,GAAsB;YAChC,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC,CAAA;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAlGe,kCAAgB,mBAkG/B,CAAA;IAOD,SAAgB,iBAAiB,CAAC,WAAsB;QACpD,IAAI,WAAW,CAAC,IAAI,KAAK,aAAa,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAAE;QACxF,IAAI,WAAW,CAAC,aAAa,KAAK,SAAS,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAAE;QAC5F,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SAAE;QAE9E,IAAI,GAAG,GAAG,oCAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAC5E,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1D,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QACnE,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;QACvE,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,GAAG,IAAI,WAAW,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,oCAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1G,GAAG,IAAI,WAAW,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,oCAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE9G,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,EAAE;YACpC,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5C,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACxE;aAAM;YACH,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE;YACtB,GAAG,IAAI,IAAI,CAAC;YACZ,IAAI,SAAS,GAAQ,WAAW,CAAC,MAAM,CAAC;YACxC,IAAI;gBAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAgB,CAAC,CAAC;aAAE;YAAC,WAAM,GAAG;YAEvE,IAAI,KAAK,GAAa,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE1D,GAAG,IAAI,KAAK;iBACP,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,qCAAiB,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;iBAC3D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,qCAAiB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;iBACvD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACvG;aAAM;YACH,GAAG,IAAI,IAAI,CAAC;SACf;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAzCe,mCAAiB,oBAyChC,CAAA;IAQD,SAAgB,eAAe,CAAC,iBAAyB,EAAE,UAAmB,IAAI;QAC9E,IAAI,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,YAAY,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC9D;QAED,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,OAAO,EAAE;YACT,MAAM,GAAG,oCAAiB,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;YAClG,WAAW,IAAI,EAAE,GAAG,CAAC,CAAC;SACzB;aAAM;YACH,WAAW,IAAI,CAAC,CAAC;SACpB;QAED,IAAI,MAAM,GAAG,oCAAiB,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;QACvG,WAAW,IAAI,EAAE,CAAC;QAElB,IAAI,OAAO,GAAG,oCAAiB,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAExE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,oCAAiB,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAE5E,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAClC,IAAI,OAAO,GAAG,oCAAiB,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAExE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,WAAW,GAAG,oCAAiB,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAE5E,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAClC,IAAI,WAAW,GAAG,oCAAiB,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QAE3G,WAAW,IAAI,CAAC,CAAC;QACjB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,WAAW,EAAE;YACb,QAAQ,GAAG,oCAAiB,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;YACrG,WAAW,IAAI,EAAE,CAAC;SACrB;QAED,IAAI,IAAI,CAAC;QACT,IAAI,iBAAiB,CAAC,MAAM,GAAG,WAAW,EAAE;YACxC,IAAI,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SACtF;QAED,MAAM,UAAU,GAAc;YAC1B,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC5C,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE;YACvB,SAAS,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE;YAC7B,aAAa,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE;YACrC,OAAO,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE;SAClC,CAAC;QAEF,MAAM,QAAQ,GAAsB;YAChC,SAAS,EAAE,UAAU;YACrB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC,CAAA;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IA9De,iCAAe,kBA8D9B,CAAA;IAOD,SAAgB,gBAAgB,CAAC,UAAqB;QAClD,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAAE;QAEtF,IAAI,GAAG,GAAG,oCAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3E,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzD,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAChE,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAClE,GAAG,IAAI,oCAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;QAEtE,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;YACnC,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5C,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACvE;aAAM;YACH,GAAG,IAAI,oCAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAChD;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAlBe,kCAAgB,mBAkB/B,CAAA;IAOD,SAAgB,mBAAmB,CAAC,GAAW;QAC3C,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1D,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,OAAO,QAAQ,CAAC,IAAI,EAAE;YAClB,WAAW,IAAI,QAAQ,CAAC,UAAU,CAAC;YACnC,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAE5E,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SACvC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAde,qCAAmB,sBAclC,CAAA;AAQL,CAAC,EA7nBgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QA6nBjC"} \ No newline at end of file diff --git a/dist/chain/tezos/TezosMessageUtil.d.ts b/dist/chain/tezos/TezosMessageUtil.d.ts deleted file mode 100644 index 380fd034..00000000 --- a/dist/chain/tezos/TezosMessageUtil.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/// -import { SignedOperationGroup } from '../../types/tezos/TezosChainTypes'; -export declare namespace TezosMessageUtils { - function writeBoolean(value: boolean): string; - function readBoolean(hex: string): boolean; - function writeInt(value: number): string; - function writeSignedInt(value: number): string; - function readInt(hex: string): number; - function readSignedInt(hex: string): number; - function findInt(hex: string, offset: number, signed?: boolean): { - value: number; - length: number; - }; - function readAddress(hex: string): string; - function readAddressWithHint(b: Buffer | Uint8Array, hint: string): string; - function writeAddress(address: string): string; - function readBranch(hex: string): string; - function writeBranch(branch: string): string; - function readPublicKey(hex: string): string; - function writePublicKey(publicKey: string): string; - function readKeyWithHint(b: Buffer | Uint8Array, hint: string): string; - function writeKeyWithHint(key: string, hint: string): Buffer; - function readSignatureWithHint(b: Buffer | Uint8Array, hint: string): string; - function readBufferWithHint(b: Buffer | Uint8Array, hint: string): string; - function writeBufferWithHint(b: string): Buffer; - function computeOperationHash(signedOpGroup: SignedOperationGroup): string; - function computeKeyHash(key: Buffer, prefix?: string): string; -} diff --git a/dist/chain/tezos/TezosMessageUtil.js b/dist/chain/tezos/TezosMessageUtil.js deleted file mode 100644 index 3781ea76..00000000 --- a/dist/chain/tezos/TezosMessageUtil.js +++ /dev/null @@ -1,267 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const bs58check_1 = __importDefault(require("bs58check")); -const base_n_1 = __importDefault(require("base-n")); -const big_integer_1 = __importDefault(require("big-integer")); -const CryptoUtils_1 = require("../../utils/CryptoUtils"); -const base128 = base_n_1.default.create({ - characters: [...Array(128).keys()].map(k => ('0' + k.toString(16)).slice(-2)) -}); -var TezosMessageUtils; -(function (TezosMessageUtils) { - function writeBoolean(value) { - return value ? "ff" : "00"; - } - TezosMessageUtils.writeBoolean = writeBoolean; - function readBoolean(hex) { - return parseInt(hex, 16) > 0 ? true : false; - } - TezosMessageUtils.readBoolean = readBoolean; - function writeInt(value) { - if (value < 0) { - throw new Error('Use writeSignedInt to encode negative numbers'); - } - return Buffer.from(Buffer.from(base128.encode(value), 'hex').map((v, i) => { return i === 0 ? v : v ^ 0x80; }).reverse()).toString('hex'); - } - TezosMessageUtils.writeInt = writeInt; - function writeSignedInt(value) { - if (value === 0) { - return '00'; - } - const n = big_integer_1.default(value).abs(); - const l = n.bitLength().toJSNumber(); - let arr = []; - let v = n; - for (let i = 0; i < l; i += 7) { - let byte = big_integer_1.default.zero; - if (i === 0) { - byte = v.and(0x3f); - v = v.shiftRight(6); - } - else { - byte = v.and(0x7f); - v = v.shiftRight(7); - } - if (value < 0 && i === 0) { - byte = byte.or(0x40); - } - if (i + 7 < l) { - byte = byte.or(0x80); - } - arr.push(byte.toJSNumber()); - } - if (l % 7 === 0) { - arr[arr.length - 1] = arr[arr.length - 1] | 0x80; - arr.push(1); - } - return arr.map(v => ('0' + v.toString(16)).slice(-2)).join(''); - } - TezosMessageUtils.writeSignedInt = writeSignedInt; - function readInt(hex) { - return base128.decode(Buffer.from(Buffer.from(hex, 'hex').reverse().map((v, i) => { return i === 0 ? v : v & 0x7f; })).toString('hex')); - } - TezosMessageUtils.readInt = readInt; - function readSignedInt(hex) { - const positive = (Buffer.from(hex.slice(0, 2), 'hex')[0] & 0x40) ? false : true; - const arr = Buffer.from(hex, 'hex').map((v, i) => i === 0 ? v & 0x3f : v & 0x7f); - let n = big_integer_1.default.zero; - for (let i = arr.length - 1; i >= 0; i--) { - if (i === 0) { - n = n.or(arr[i]); - } - else { - n = n.or(big_integer_1.default(arr[i]).shiftLeft(7 * i - 1)); - } - } - return positive ? n.toJSNumber() : n.negate().toJSNumber(); - } - TezosMessageUtils.readSignedInt = readSignedInt; - function findInt(hex, offset, signed = false) { - let buffer = ""; - let i = 0; - while (offset + i * 2 < hex.length) { - let start = offset + i * 2; - let end = start + 2; - let part = hex.substring(start, end); - buffer += part; - i += 1; - if (parseInt(part, 16) < 127) { - break; - } - } - return signed ? { value: readSignedInt(buffer), length: i * 2 } : { value: readInt(buffer), length: i * 2 }; - } - TezosMessageUtils.findInt = findInt; - function readAddress(hex) { - if (hex.length !== 44 && hex.length !== 42) { - throw new Error("Incorrect hex length to parse an address"); - } - let implicitHint = hex.length === 44 ? hex.substring(0, 4) : "00" + hex.substring(0, 2); - let implicitPrefixLength = hex.length === 44 ? 4 : 2; - if (implicitHint === "0000") { - return bs58check_1.default.encode(Buffer.from("06a19f" + hex.substring(implicitPrefixLength), "hex")); - } - else if (implicitHint === "0001") { - return bs58check_1.default.encode(Buffer.from("06a1a1" + hex.substring(implicitPrefixLength), "hex")); - } - else if (implicitHint === "0002") { - return bs58check_1.default.encode(Buffer.from("06a1a4" + hex.substring(implicitPrefixLength), "hex")); - } - else if (hex.substring(0, 2) === "01" && hex.length === 44) { - return bs58check_1.default.encode(Buffer.from("025a79" + hex.substring(2, 42), "hex")); - } - else { - throw new Error("Unrecognized address type"); - } - } - TezosMessageUtils.readAddress = readAddress; - function readAddressWithHint(b, hint) { - const address = !(b instanceof Buffer) ? Buffer.from(b) : b; - if (hint === 'tz1') { - return readAddress(`0000${address.toString('hex')}`); - } - else if (hint === 'tz2') { - return readAddress(`0001${address.toString('hex')}`); - } - else if (hint === 'tz3') { - return readAddress(`0002${address.toString('hex')}`); - } - else if (hint === 'kt1') { - return readAddress(`01${address.toString('hex')}00`); - } - else { - throw new Error(`Unrecognized address hint, '${hint}'`); - } - } - TezosMessageUtils.readAddressWithHint = readAddressWithHint; - function writeAddress(address) { - const hex = bs58check_1.default.decode(address).slice(3).toString("hex"); - if (address.startsWith("tz1")) { - return "0000" + hex; - } - else if (address.startsWith("tz2")) { - return "0001" + hex; - } - else if (address.startsWith("tz3")) { - return "0002" + hex; - } - else if (address.startsWith("KT1")) { - return "01" + hex + "00"; - } - else { - throw new Error("Unrecognized address type"); - } - } - TezosMessageUtils.writeAddress = writeAddress; - function readBranch(hex) { - if (hex.length !== 64) { - throw new Error('Incorrect hex length to parse a branch hash'); - } - return bs58check_1.default.encode(Buffer.from('0134' + hex, 'hex')); - } - TezosMessageUtils.readBranch = readBranch; - function writeBranch(branch) { - return bs58check_1.default.decode(branch).toString("hex").slice(4); - } - TezosMessageUtils.writeBranch = writeBranch; - function readPublicKey(hex) { - if (hex.length !== 66 && hex.length !== 68) { - throw new Error(`Incorrect hex length, ${hex.length} to parse a key`); - } - let hint = hex.substring(0, 2); - if (hint === "00") { - return bs58check_1.default.encode(Buffer.from("0d0f25d9" + hex.substring(2), "hex")); - } - else if (hint === "01" && hex.length === 68) { - return bs58check_1.default.encode(Buffer.from("03fee256" + hex.substring(2), "hex")); - } - else if (hint === "02" && hex.length === 68) { - return bs58check_1.default.encode(Buffer.from("03b28b7f" + hex.substring(2), "hex")); - } - else { - throw new Error('Unrecognized key type'); - } - } - TezosMessageUtils.readPublicKey = readPublicKey; - function writePublicKey(publicKey) { - if (publicKey.startsWith("edpk")) { - return "00" + bs58check_1.default.decode(publicKey).slice(4).toString("hex"); - } - else if (publicKey.startsWith("sppk")) { - return "01" + bs58check_1.default.decode(publicKey).slice(4).toString("hex"); - } - else if (publicKey.startsWith("p2pk")) { - return "02" + bs58check_1.default.decode(publicKey).slice(4).toString("hex"); - } - else { - throw new Error('Unrecognized key type'); - } - } - TezosMessageUtils.writePublicKey = writePublicKey; - function readKeyWithHint(b, hint) { - const key = !(b instanceof Buffer) ? Buffer.from(b) : b; - if (hint === 'edsk') { - return bs58check_1.default.encode(Buffer.from('2bf64e07' + key.toString('hex'), 'hex')); - } - else if (hint === 'edpk') { - return readPublicKey(`00${key.toString('hex')}`); - } - else { - throw new Error(`Unrecognized key hint, '${hint}'`); - } - } - TezosMessageUtils.readKeyWithHint = readKeyWithHint; - function writeKeyWithHint(key, hint) { - if (hint === 'edsk' || hint === 'edpk') { - return bs58check_1.default.decode(key).slice(4); - } - else { - throw new Error(`Unrecognized key hint, '${hint}'`); - } - } - TezosMessageUtils.writeKeyWithHint = writeKeyWithHint; - function readSignatureWithHint(b, hint) { - const sig = !(b instanceof Buffer) ? Buffer.from(b) : b; - if (hint === 'edsig') { - return bs58check_1.default.encode(Buffer.from('09f5cd8612' + sig.toString('hex'), 'hex')); - } - else { - throw new Error(`Unrecognized signature hint, '${hint}'`); - } - } - TezosMessageUtils.readSignatureWithHint = readSignatureWithHint; - function readBufferWithHint(b, hint) { - const buffer = !(b instanceof Buffer) ? Buffer.from(b) : b; - if (hint === 'op') { - return bs58check_1.default.encode(Buffer.from('0574' + buffer.toString('hex'), 'hex')); - } - else if (hint === 'p') { - return bs58check_1.default.encode(Buffer.from('02aa' + buffer.toString('hex'), 'hex')); - } - else if (hint === '') { - return bs58check_1.default.encode(buffer); - } - else { - throw new Error(`Unsupported hint, '${hint}'`); - } - } - TezosMessageUtils.readBufferWithHint = readBufferWithHint; - function writeBufferWithHint(b) { - return bs58check_1.default.decode(b); - } - TezosMessageUtils.writeBufferWithHint = writeBufferWithHint; - function computeOperationHash(signedOpGroup) { - const hash = CryptoUtils_1.CryptoUtils.simpleHash(signedOpGroup.bytes, 32); - return readBufferWithHint(hash, "op"); - } - TezosMessageUtils.computeOperationHash = computeOperationHash; - function computeKeyHash(key, prefix = 'tz1') { - const hash = CryptoUtils_1.CryptoUtils.simpleHash(key, 20); - return readAddressWithHint(hash, prefix); - } - TezosMessageUtils.computeKeyHash = computeKeyHash; -})(TezosMessageUtils = exports.TezosMessageUtils || (exports.TezosMessageUtils = {})); -//# sourceMappingURL=TezosMessageUtil.js.map \ No newline at end of file diff --git a/dist/chain/tezos/TezosMessageUtil.js.map b/dist/chain/tezos/TezosMessageUtil.js.map deleted file mode 100644 index f943d56a..00000000 --- a/dist/chain/tezos/TezosMessageUtil.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosMessageUtil.js","sourceRoot":"","sources":["../../../src/chain/tezos/TezosMessageUtil.ts"],"names":[],"mappings":";;;;;AACA,0DAAoC;AACpC,oDAA2B;AAC3B,8DAAiC;AAGjC,yDAAsD;AAEtD,MAAM,OAAO,GAAG,gBAAK,CAAC,MAAM,CAAC;IACzB,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CAChF,CAAC,CAAC;AAKH,IAAiB,iBAAiB,CA6UjC;AA7UD,WAAiB,iBAAiB;IAK9B,SAAgB,YAAY,CAAC,KAAc;QACvC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/B,CAAC;IAFe,8BAAY,eAE3B,CAAA;IAMD,SAAgB,WAAW,CAAC,GAAW;QACnC,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAChD,CAAC;IAFe,6BAAW,cAE1B,CAAA;IAMD,SAAgB,QAAQ,CAAC,KAAa;QAClC,IAAI,KAAK,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;SAAE;QAEpF,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9I,CAAC;IAJe,0BAAQ,WAIvB,CAAA;IAMD,SAAgB,cAAc,CAAC,KAAa;QACxC,IAAI,KAAK,KAAK,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;SAAE;QAEjC,MAAM,CAAC,GAAG,qBAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,GAAG,GAAa,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,IAAI,GAAG,qBAAM,CAAC,IAAI,CAAC;YAEvB,IAAI,CAAC,KAAK,CAAC,EAAE;gBACT,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACvB;iBAAM;gBACH,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACvB;YAED,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAAE;YAEnD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAAE;YACxC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACb,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACf;QAED,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IA9Be,gCAAc,iBA8B7B,CAAA;IAMD,SAAgB,OAAO,CAAC,GAAW;QAC/B,OAAO,OAAO,CAAC,MAAM,CAEjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACnH,CAAC;IACN,CAAC;IALe,yBAAO,UAKtB,CAAA;IAED,SAAgB,aAAa,CAAC,GAAW;QACrC,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,GAAG,qBAAM,CAAC,IAAI,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACT,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACpB;iBAAM;gBACH,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,qBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACjD;SACJ;QAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;IAC/D,CAAC;IAde,+BAAa,gBAc5B,CAAA;IAOD,SAAgB,OAAO,CAAC,GAAW,EAAE,MAAc,EAAE,SAAkB,KAAK;QACxE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;YAChC,IAAI,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;YACpB,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACrC,MAAM,IAAI,IAAI,CAAC;YACf,CAAC,IAAI,CAAC,CAAC;YAEP,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE;gBAAE,MAAM;aAAE;SAC3C;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAChH,CAAC;IAde,yBAAO,UActB,CAAA;IAQD,SAAgB,WAAW,CAAC,GAAW;QACnC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;SAAE;QAE5G,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxF,IAAI,oBAAoB,GAAG,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,YAAY,KAAK,MAAM,EAAE;YACzB,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SACjG;aAAM,IAAI,YAAY,KAAK,MAAM,EAAE;YAChC,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SACjG;aAAM,IAAI,YAAY,KAAK,MAAM,EAAE;YAChC,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SACjG;aAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;YAC1D,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAClF;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAChD;IACL,CAAC;IAjBe,6BAAW,cAiB1B,CAAA;IAQD,SAAgB,mBAAmB,CAAC,CAAsB,EAAE,IAAY;QACpE,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,IAAI,KAAK,KAAK,EAAE;YAChB,OAAO,WAAW,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACxD;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE;YACvB,OAAO,WAAW,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACxD;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE;YACvB,OAAO,WAAW,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACxD;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE;YACvB,OAAO,WAAW,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACxD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,GAAG,CAAC,CAAC;SAC3D;IACL,CAAC;IAde,qCAAmB,sBAclC,CAAA;IAQD,SAAgB,YAAY,CAAC,OAAe;QACxC,MAAM,GAAG,GAAG,mBAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,MAAM,GAAG,GAAG,CAAC;SACvB;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO,MAAM,GAAG,GAAG,CAAC;SACvB;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO,MAAM,GAAG,GAAG,CAAC;SACvB;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SAC5B;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAChD;IACL,CAAC;IAbe,8BAAY,eAa3B,CAAA;IAMD,SAAgB,UAAU,CAAC,GAAW;QAClC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAAE;QAC1F,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAHe,4BAAU,aAGzB,CAAA;IAQD,SAAgB,WAAW,CAAC,MAAc;QACtC,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAFe,6BAAW,cAE1B,CAAA;IAQD,SAAgB,aAAa,CAAC,GAAW;QACrC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,iBAAiB,CAAC,CAAC;SAAE;QAEtH,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAChF;aAAM,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;YAC3C,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAChF;aAAM,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;YAC3C,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAChF;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC5C;IACL,CAAC;IAbe,+BAAa,gBAa5B,CAAA;IAKD,SAAgB,cAAc,CAAC,SAAiB;QAC5C,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC9B,OAAO,IAAI,GAAG,mBAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACxE;aAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACrC,OAAO,IAAI,GAAG,mBAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACxE;aAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACrC,OAAO,IAAI,GAAG,mBAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACxE;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC5C;IACL,CAAC;IAVe,gCAAc,iBAU7B,CAAA;IAQD,SAAgB,eAAe,CAAC,CAAsB,EAAE,IAAY;QAChE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,IAAI,KAAK,MAAM,EAAE;YACjB,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SACnF;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YACxB,OAAO,aAAa,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACpD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,GAAG,CAAC,CAAC;SACvD;IACL,CAAC;IAVe,iCAAe,kBAU9B,CAAA;IAQD,SAAgB,gBAAgB,CAAC,GAAW,EAAE,IAAY;QACtD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YACpC,OAAO,mBAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3C;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,GAAG,CAAC,CAAC;SACvD;IACL,CAAC;IANe,kCAAgB,mBAM/B,CAAA;IAQD,SAAgB,qBAAqB,CAAC,CAAsB,EAAE,IAAY;QACtE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,IAAI,KAAK,OAAO,EAAE;YAClB,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SACrF;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,GAAG,CAAC,CAAC;SAC7D;IACL,CAAC;IARe,uCAAqB,wBAQpC,CAAA;IAQD,SAAgB,kBAAkB,CAAC,CAAsB,EAAE,IAAY;QACnE,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3D,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAClF;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE;YACrB,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAClF;aAAM,IAAI,IAAI,KAAK,EAAE,EAAE;YACpB,OAAO,mBAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACrC;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,GAAG,CAAC,CAAC;SAClD;IACL,CAAC;IAZe,oCAAkB,qBAYjC,CAAA;IAOD,SAAgB,mBAAmB,CAAC,CAAS;QACzC,OAAO,mBAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAFe,qCAAmB,sBAElC,CAAA;IAQD,SAAgB,oBAAoB,CAAC,aAAmC;QACpE,MAAM,IAAI,GAAG,yBAAW,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7D,OAAO,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAHe,sCAAoB,uBAGnC,CAAA;IASD,SAAgB,cAAc,CAAC,GAAW,EAAE,SAAiB,KAAK;QAC9D,MAAM,IAAI,GAAG,yBAAW,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAHe,gCAAc,iBAG7B,CAAA;AACL,CAAC,EA7UgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QA6UjC"} \ No newline at end of file diff --git a/dist/chain/tezos/TezosNodeReader.d.ts b/dist/chain/tezos/TezosNodeReader.d.ts deleted file mode 100644 index 07123ae9..00000000 --- a/dist/chain/tezos/TezosNodeReader.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as TezosTypes from '../../types/tezos/TezosChainTypes'; -import { KeyStore } from "../../types/wallet/KeyStore"; -export declare namespace TezosNodeReader { - function getBlock(server: string, hash: string): Promise; - function getBlockHead(server: string): Promise; - function getAccountForBlock(server: string, blockHash: string, accountID: string): Promise; - function getAccountManagerForBlock(server: string, blockHash: string, accountID: string): Promise; - function isImplicitAndEmpty(server: string, accountHash: string): Promise; - function isManagerKeyRevealedForAccount(server: string, keyStore: KeyStore): Promise; -} diff --git a/dist/chain/tezos/TezosNodeReader.js b/dist/chain/tezos/TezosNodeReader.js deleted file mode 100644 index 3cb4b995..00000000 --- a/dist/chain/tezos/TezosNodeReader.js +++ /dev/null @@ -1,68 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ErrorTypes_1 = require("../../types/conseil/ErrorTypes"); -const FetchSelector_1 = __importDefault(require("../../utils/FetchSelector")); -const fetch = FetchSelector_1.default.getFetch(); -var TezosNodeReader; -(function (TezosNodeReader) { - function performGetRequest(server, command) { - const url = `${server}/${command}`; - return fetch(url, { method: 'get' }) - .then(response => { - if (!response.ok) { - throw new ErrorTypes_1.ServiceRequestError(response.status, response.statusText, url, null); - } - return response; - }) - .then(response => response.json()); - } - function getBlock(server, hash) { - return performGetRequest(server, `chains/main/blocks/${hash}`) - .then(json => { return json; }); - } - TezosNodeReader.getBlock = getBlock; - function getBlockHead(server) { - return getBlock(server, "head"); - } - TezosNodeReader.getBlockHead = getBlockHead; - function getAccountForBlock(server, blockHash, accountID) { - return performGetRequest(server, `chains/main/blocks/${blockHash}/context/contracts/${accountID}`) - .then(json => json); - } - TezosNodeReader.getAccountForBlock = getAccountForBlock; - function getAccountManagerForBlock(server, blockHash, accountID) { - return performGetRequest(server, `chains/main/blocks/${blockHash}/context/contracts/${accountID}/manager_key`) - .then(json => json); - } - TezosNodeReader.getAccountManagerForBlock = getAccountManagerForBlock; - function isImplicitAndEmpty(server, accountHash) { - return __awaiter(this, void 0, void 0, function* () { - const blockHead = yield TezosNodeReader.getBlockHead(server); - const account = yield TezosNodeReader.getAccountForBlock(server, blockHead.hash, accountHash); - const isImplicit = accountHash.toLowerCase().startsWith("tz"); - const isEmpty = Number(account.balance) === 0; - return (isImplicit && isEmpty); - }); - } - TezosNodeReader.isImplicitAndEmpty = isImplicitAndEmpty; - function isManagerKeyRevealedForAccount(server, keyStore) { - return __awaiter(this, void 0, void 0, function* () { - const blockHead = yield TezosNodeReader.getBlockHead(server); - const managerKey = yield TezosNodeReader.getAccountManagerForBlock(server, blockHead.hash, keyStore.publicKeyHash); - return managerKey.key != null; - }); - } - TezosNodeReader.isManagerKeyRevealedForAccount = isManagerKeyRevealedForAccount; -})(TezosNodeReader = exports.TezosNodeReader || (exports.TezosNodeReader = {})); -//# sourceMappingURL=TezosNodeReader.js.map \ No newline at end of file diff --git a/dist/chain/tezos/TezosNodeReader.js.map b/dist/chain/tezos/TezosNodeReader.js.map deleted file mode 100644 index 8e0e7ae1..00000000 --- a/dist/chain/tezos/TezosNodeReader.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosNodeReader.js","sourceRoot":"","sources":["../../../src/chain/tezos/TezosNodeReader.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAEA,+DAAmE;AACnE,8EAAqD;AAErD,MAAM,KAAK,GAAG,uBAAa,CAAC,QAAQ,EAAE,CAAC;AAKvC,IAAiB,eAAe,CAgG/B;AAhGD,WAAiB,eAAe;IAQ5B,SAAS,iBAAiB,CAAC,MAAc,EAAE,OAAe;QACtD,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;QAEnC,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aAC/B,IAAI,CAAC,QAAQ,CAAC,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAAE,MAAM,IAAI,gCAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;aAAE;YACrG,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC;aACD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IASD,SAAgB,QAAQ,CAAC,MAAc,EAAE,IAAY;QACjD,OAAO,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,IAAI,EAAE,CAAC;aACzD,IAAI,CAAC,IAAI,CAAC,EAAE,GAAE,OAAkC,IAAI,CAAA,CAAA,CAAC,CAAC,CAAA;IAC/D,CAAC;IAHe,wBAAQ,WAGvB,CAAA;IAOD,SAAgB,YAAY,CAAC,MAAc;QACvC,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAFe,4BAAY,eAE3B,CAAA;IAUD,SAAgB,kBAAkB,CAAC,MAAc,EAAE,SAAiB,EAAE,SAAiB;QACnF,OAAO,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,SAAS,sBAAsB,SAAS,EAAE,CAAC;aAC7F,IAAI,CAAC,IAAI,CAAC,EAAE,CAAsB,IAAI,CAAC,CAAC;IACjD,CAAC;IAHe,kCAAkB,qBAGjC,CAAA;IAUD,SAAgB,yBAAyB,CAAC,MAAc,EAAE,SAAiB,EAAE,SAAiB;QAC1F,OAAO,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,SAAS,sBAAsB,SAAS,cAAc,CAAC;aACzG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAyB,IAAI,CAAC,CAAC;IACpD,CAAC;IAHe,yCAAyB,4BAGxC,CAAA;IASD,SAAsB,kBAAkB,CAAC,MAAc,EAAE,WAAmB;;YACxE,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAE9F,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAE7C,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,CAAA;QAClC,CAAC;KAAA;IARqB,kCAAkB,qBAQvC,CAAA;IASD,SAAsB,8BAA8B,CAAC,MAAc,EAAE,QAAkB;;YACnF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,yBAAyB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YAEnH,OAAO,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC;QAClC,CAAC;KAAA;IALqB,8CAA8B,iCAKnD,CAAA;AACL,CAAC,EAhGgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAgG/B"} \ No newline at end of file diff --git a/dist/chain/tezos/TezosNodeWriter.d.ts b/dist/chain/tezos/TezosNodeWriter.d.ts deleted file mode 100644 index 30fd1f6b..00000000 --- a/dist/chain/tezos/TezosNodeWriter.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { KeyStore } from '../../types/wallet/KeyStore'; -import * as TezosTypes from '../../types/tezos/TezosChainTypes'; -export declare namespace TezosNodeWriter { - function signOperationGroup(forgedOperation: string, keyStore: KeyStore, derivationPath: string): Promise; - function forgeOperations(blockHead: TezosTypes.BlockMetadata, operations: object[]): string; - function applyOperation(server: string, blockHead: TezosTypes.BlockMetadata, operations: object[], signedOpGroup: TezosTypes.SignedOperationGroup): Promise; - function injectOperation(server: string, signedOpGroup: TezosTypes.SignedOperationGroup): Promise; - function sendOperation(server: string, operations: object[], keyStore: KeyStore, derivationPath: any): Promise; - function appendRevealOperation(server: string, keyStore: KeyStore, account: TezosTypes.Account, operations: TezosTypes.Operation[]): Promise; - function sendTransactionOperation(server: string, keyStore: KeyStore, to: string, amount: number, fee: number, derivationPath: string): Promise; - function sendDelegationOperation(server: string, keyStore: KeyStore, delegate: string, fee: number, derivationPath: string): Promise; - function sendAccountOriginationOperation(server: string, keyStore: KeyStore, amount: number, delegate: string | undefined, spendable: boolean, delegatable: boolean, fee: number, derivationPath: string): Promise; - function sendContractOriginationOperation(server: string, keyStore: KeyStore, amount: number, delegate: string | undefined, spendable: boolean, delegatable: boolean, fee: number, derivationPath: string, storage_limit: string, gas_limit: string, code: string, storage: string): Promise; - function sendContractInvocationOperation(server: string, keyStore: KeyStore, to: string, amount: number, fee: number, derivationPath: string, storageLimit: number, gasLimit: number, parameters?: string): Promise; - function sendKeyRevealOperation(server: string, keyStore: KeyStore, fee?: number, derivationPath?: string): Promise; - function sendIdentityActivationOperation(server: string, keyStore: KeyStore, activationCode: string, derivationPath: string): Promise; -} diff --git a/dist/chain/tezos/TezosNodeWriter.js b/dist/chain/tezos/TezosNodeWriter.js deleted file mode 100644 index 41c5c0e1..00000000 --- a/dist/chain/tezos/TezosNodeWriter.js +++ /dev/null @@ -1,257 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const KeyStore_1 = require("../../types/wallet/KeyStore"); -const TezosNodeReader_1 = require("./TezosNodeReader"); -const TezosMessageCodec_1 = require("./TezosMessageCodec"); -const TezosMessageUtil_1 = require("./TezosMessageUtil"); -const TezosLanguageUtil_1 = require("./TezosLanguageUtil"); -const CryptoUtils_1 = require("../../utils/CryptoUtils"); -const FetchSelector_1 = __importDefault(require("../../utils/FetchSelector")); -const fetch = FetchSelector_1.default.getFetch(); -const DeviceSelector_1 = __importDefault(require("../../utils/DeviceSelector")); -let LedgerUtils = DeviceSelector_1.default.getLedgerUtils(); -var TezosNodeWriter; -(function (TezosNodeWriter) { - function performPostRequest(server, command, payload = {}) { - const url = `${server}/${command}`; - const payloadStr = JSON.stringify(payload); - return fetch(url, { method: 'post', body: payloadStr, headers: { 'content-type': 'application/json' } }); - } - function signOperationGroup(forgedOperation, keyStore, derivationPath) { - return __awaiter(this, void 0, void 0, function* () { - const watermark = '03'; - const watermarkedForgedOperationBytesHex = watermark + forgedOperation; - let opSignature; - switch (keyStore.storeType) { - case KeyStore_1.StoreType.Hardware: - opSignature = yield LedgerUtils.signTezosOperation(derivationPath, watermarkedForgedOperationBytesHex); - break; - default: - const hashedWatermarkedOpBytes = CryptoUtils_1.CryptoUtils.simpleHash(Buffer.from(watermarkedForgedOperationBytesHex, 'hex'), 32); - const privateKeyBytes = TezosMessageUtil_1.TezosMessageUtils.writeKeyWithHint(keyStore.privateKey, 'edsk'); - opSignature = yield CryptoUtils_1.CryptoUtils.signDetached(hashedWatermarkedOpBytes, privateKeyBytes); - } - const hexSignature = TezosMessageUtil_1.TezosMessageUtils.readSignatureWithHint(opSignature, "edsig").toString(); - const signedOpBytes = Buffer.concat([Buffer.from(forgedOperation, 'hex'), Buffer.from(opSignature)]); - return { bytes: signedOpBytes, signature: hexSignature.toString() }; - }); - } - TezosNodeWriter.signOperationGroup = signOperationGroup; - function forgeOperations(blockHead, operations) { - let encoded = TezosMessageUtil_1.TezosMessageUtils.writeBranch(blockHead.hash); - operations.forEach(m => encoded += TezosMessageCodec_1.TezosMessageCodec.encodeOperation(m)); - return encoded; - } - TezosNodeWriter.forgeOperations = forgeOperations; - function applyOperation(server, blockHead, operations, signedOpGroup) { - return __awaiter(this, void 0, void 0, function* () { - const payload = [{ - protocol: blockHead.protocol, - branch: blockHead.hash, - contents: operations, - signature: signedOpGroup.signature - }]; - const response = yield performPostRequest(server, 'chains/main/blocks/head/helpers/preapply/operations', payload); - const text = yield response.text(); - try { - const json = JSON.parse(text); - return json; - } - catch (err) { - throw new Error(`Could not parse JSON response from chains/main/blocks/head/helpers/preapply/operation: '${text}' for ${payload}`); - } - }); - } - TezosNodeWriter.applyOperation = applyOperation; - function checkAppliedOperationResults(appliedOp) { - const validAppliedKinds = new Set(['activate_account', 'reveal', 'transaction', 'origination', 'delegation']); - const firstAppliedOp = appliedOp[0]; - if (firstAppliedOp.kind != null && !validAppliedKinds.has(firstAppliedOp.kind)) { - throw new Error(`Could not apply operation because: ${firstAppliedOp.id}`); - } - for (const op of firstAppliedOp.contents) { - if (!validAppliedKinds.has(op.kind)) { - throw new Error(`Could not apply operation because: ${op.metadata}`); - } - } - } - function injectOperation(server, signedOpGroup) { - return __awaiter(this, void 0, void 0, function* () { - const response = yield performPostRequest(server, 'injection/operation?chain=main', signedOpGroup.bytes.toString('hex')); - const injectedOperation = yield response.text(); - return injectedOperation; - }); - } - TezosNodeWriter.injectOperation = injectOperation; - function sendOperation(server, operations, keyStore, derivationPath) { - return __awaiter(this, void 0, void 0, function* () { - const blockHead = yield TezosNodeReader_1.TezosNodeReader.getBlockHead(server); - const forgedOperationGroup = forgeOperations(blockHead, operations); - const signedOpGroup = yield signOperationGroup(forgedOperationGroup, keyStore, derivationPath); - const appliedOp = yield applyOperation(server, blockHead, operations, signedOpGroup); - checkAppliedOperationResults(appliedOp); - const injectedOperation = yield injectOperation(server, signedOpGroup); - return { results: appliedOp[0], operationGroupID: injectedOperation }; - }); - } - TezosNodeWriter.sendOperation = sendOperation; - function appendRevealOperation(server, keyStore, account, operations) { - return __awaiter(this, void 0, void 0, function* () { - const isManagerKeyRevealed = yield TezosNodeReader_1.TezosNodeReader.isManagerKeyRevealedForAccount(server, keyStore); - let returnedOperations = operations; - if (!isManagerKeyRevealed) { - const revealOp = { - kind: "reveal", - source: keyStore.publicKeyHash, - fee: '0', - counter: (Number(account.counter) + 1).toString(), - gas_limit: '10000', - storage_limit: '0', - public_key: keyStore.publicKey - }; - let operation = operations[0]; - operation.counter = (Number(account.counter) + 2).toString(); - returnedOperations = [revealOp, operation]; - } - return returnedOperations; - }); - } - TezosNodeWriter.appendRevealOperation = appendRevealOperation; - function sendTransactionOperation(server, keyStore, to, amount, fee, derivationPath) { - return __awaiter(this, void 0, void 0, function* () { - const blockHead = yield TezosNodeReader_1.TezosNodeReader.getBlockHead(server); - const sourceAccount = yield TezosNodeReader_1.TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - const transaction = { - destination: to, - amount: amount.toString(), - storage_limit: "300", - gas_limit: "10300", - counter: (Number(sourceAccount.counter) + 1).toString(), - fee: fee.toString(), - source: keyStore.publicKeyHash, - kind: "transaction" - }; - const operations = yield appendRevealOperation(server, keyStore, sourceAccount, [transaction]); - return sendOperation(server, operations, keyStore, derivationPath); - }); - } - TezosNodeWriter.sendTransactionOperation = sendTransactionOperation; - function sendDelegationOperation(server, keyStore, delegate, fee, derivationPath) { - return __awaiter(this, void 0, void 0, function* () { - const blockHead = yield TezosNodeReader_1.TezosNodeReader.getBlockHead(server); - const account = yield TezosNodeReader_1.TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - const delegation = { - kind: "delegation", - source: keyStore.publicKeyHash, - fee: fee.toString(), - counter: (Number(account.counter) + 1).toString(), - storage_limit: '0', - gas_limit: '10000', - delegate: delegate - }; - const operations = yield appendRevealOperation(server, keyStore, account, [delegation]); - return sendOperation(server, operations, keyStore, derivationPath); - }); - } - TezosNodeWriter.sendDelegationOperation = sendDelegationOperation; - function sendAccountOriginationOperation(server, keyStore, amount, delegate, spendable, delegatable, fee, derivationPath) { - return __awaiter(this, void 0, void 0, function* () { - return sendOriginationOperation(server, keyStore, amount, delegate, spendable, delegatable, fee, derivationPath, '277', '10160'); - }); - } - TezosNodeWriter.sendAccountOriginationOperation = sendAccountOriginationOperation; - function sendContractOriginationOperation(server, keyStore, amount, delegate, spendable, delegatable, fee, derivationPath, storage_limit, gas_limit, code, storage) { - return __awaiter(this, void 0, void 0, function* () { - return sendOriginationOperation(server, keyStore, amount, delegate, spendable, delegatable, fee, derivationPath, storage_limit, gas_limit, code, storage); - }); - } - TezosNodeWriter.sendContractOriginationOperation = sendContractOriginationOperation; - function sendOriginationOperation(server, keyStore, amount, delegate, spendable, delegatable, fee, derivationPath, storage_limit, gas_limit, code, storage) { - return __awaiter(this, void 0, void 0, function* () { - const blockHead = yield TezosNodeReader_1.TezosNodeReader.getBlockHead(server); - const account = yield TezosNodeReader_1.TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - let parsedCode = undefined; - if (!!code) { - parsedCode = JSON.parse(TezosLanguageUtil_1.TezosLanguageUtil.translateMichelsonToMicheline(code)); - } - let parsedStorage = undefined; - if (!!storage) { - parsedStorage = JSON.parse(TezosLanguageUtil_1.TezosLanguageUtil.translateMichelsonToMicheline(storage)); - } - const origination = { - kind: "origination", - source: keyStore.publicKeyHash, - fee: fee.toString(), - counter: (Number(account.counter) + 1).toString(), - gas_limit: gas_limit, - storage_limit: storage_limit, - managerPubkey: keyStore.publicKeyHash, - balance: amount.toString(), - spendable: spendable, - delegatable: delegatable && !!delegate, - delegate: delegate, - script: code ? { code: parsedCode, storage: parsedStorage } : undefined - }; - const operations = yield appendRevealOperation(server, keyStore, account, [origination]); - return sendOperation(server, operations, keyStore, derivationPath); - }); - } - function sendContractInvocationOperation(server, keyStore, to, amount, fee, derivationPath, storageLimit, gasLimit, parameters) { - return __awaiter(this, void 0, void 0, function* () { - const blockHead = yield TezosNodeReader_1.TezosNodeReader.getBlockHead(server); - const sourceAccount = yield TezosNodeReader_1.TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - let transaction = { - destination: to, - amount: amount.toString(), - storage_limit: storageLimit.toString(), - gas_limit: gasLimit.toString(), - counter: (Number(sourceAccount.counter) + 1).toString(), - fee: fee.toString(), - source: keyStore.publicKeyHash, - kind: "transaction" - }; - if (!!parameters) { - const michelineParams = TezosLanguageUtil_1.TezosLanguageUtil.translateMichelsonToMicheline(parameters); - transaction.parameters = JSON.parse(michelineParams); - } - const operations = yield appendRevealOperation(server, keyStore, sourceAccount, [transaction]); - return sendOperation(server, operations, keyStore, derivationPath); - }); - } - TezosNodeWriter.sendContractInvocationOperation = sendContractInvocationOperation; - function sendKeyRevealOperation(server, keyStore, fee = 1300, derivationPath = '') { - return __awaiter(this, void 0, void 0, function* () { - const blockHead = yield TezosNodeReader_1.TezosNodeReader.getBlockHead(server); - const account = yield TezosNodeReader_1.TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - const revealOp = { - kind: 'reveal', - source: keyStore.publicKeyHash, - fee: fee + '', - counter: (Number(account.counter) + 1).toString(), - gas_limit: '10000', - storage_limit: '0', - public_key: keyStore.publicKey - }; - const operations = [revealOp]; - return sendOperation(server, operations, keyStore, derivationPath); - }); - } - TezosNodeWriter.sendKeyRevealOperation = sendKeyRevealOperation; - function sendIdentityActivationOperation(server, keyStore, activationCode, derivationPath) { - const activation = { kind: "activate_account", pkh: keyStore.publicKeyHash, secret: activationCode }; - return sendOperation(server, [activation], keyStore, derivationPath); - } - TezosNodeWriter.sendIdentityActivationOperation = sendIdentityActivationOperation; -})(TezosNodeWriter = exports.TezosNodeWriter || (exports.TezosNodeWriter = {})); -//# sourceMappingURL=TezosNodeWriter.js.map \ No newline at end of file diff --git a/dist/chain/tezos/TezosNodeWriter.js.map b/dist/chain/tezos/TezosNodeWriter.js.map deleted file mode 100644 index dd715081..00000000 --- a/dist/chain/tezos/TezosNodeWriter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosNodeWriter.js","sourceRoot":"","sources":["../../../src/chain/tezos/TezosNodeWriter.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,0DAAgE;AAEhE,uDAAkD;AAClD,2DAAsD;AACtD,yDAAqD;AACrD,2DAAsD;AACtD,yDAAoD;AAEpD,8EAAqD;AACrD,MAAM,KAAK,GAAG,uBAAa,CAAC,QAAQ,EAAE,CAAC;AAEvC,gFAAwD;AACxD,IAAI,WAAW,GAAG,wBAAc,CAAC,cAAc,EAAE,CAAC;AAKlD,IAAiB,eAAe,CAwc/B;AAxcD,WAAiB,eAAe;IAS5B,SAAS,kBAAkB,CAAC,MAAc,EAAE,OAAe,EAAE,OAAO,GAAG,EAAE;QACrE,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE3C,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC7G,CAAC;IAUD,SAAsB,kBAAkB,CAAC,eAAuB,EAAE,QAAkB,EAAE,cAAsB;;YACxG,MAAM,SAAS,GAAG,IAAI,CAAC;YACvB,MAAM,kCAAkC,GAAG,SAAS,GAAG,eAAe,CAAC;YAEvE,IAAI,WAAmB,CAAC;YACxB,QAAO,QAAQ,CAAC,SAAS,EAAE;gBACvB,KAAK,oBAAS,CAAC,QAAQ;oBACnB,WAAW,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,cAAc,EAAE,kCAAkC,CAAC,CAAC;oBACvG,MAAM;gBACV;oBACI,MAAM,wBAAwB,GAAG,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpH,MAAM,eAAe,GAAG,oCAAiB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAExF,WAAW,GAAG,MAAM,yBAAW,CAAC,YAAY,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;aAC/F;YAED,MAAM,YAAY,GAAW,oCAAiB,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtG,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAErG,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAC,CAAC;QACvE,CAAC;KAAA;IApBqB,kCAAkB,qBAoBvC,CAAA;IAUD,SAAgB,eAAe,CAAC,SAAmC,EAAE,UAAoB;QACrF,IAAI,OAAO,GAAG,oCAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5D,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,qCAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzE,OAAO,OAAO,CAAC;IACnB,CAAC;IALe,+BAAe,kBAK9B,CAAA;IAWD,SAAsB,cAAc,CAAC,MAAc,EAAE,SAAmC,EAAE,UAAoB,EAAE,aAA8C;;YAC1J,MAAM,OAAO,GAAG,CAAC;oBACb,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,MAAM,EAAE,SAAS,CAAC,IAAI;oBACtB,QAAQ,EAAE,UAAU;oBACpB,SAAS,EAAE,aAAa,CAAC,SAAS;iBACrC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,qDAAqD,EAAE,OAAO,CAAC,CAAC;YAClH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI;gBACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,IAAgD,CAAC;aAC3D;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,2FAA2F,IAAI,SAAS,OAAO,EAAE,CAAC,CAAC;aACtI;QACL,CAAC;KAAA;IAhBqB,8BAAc,iBAgBnC,CAAA;IAOD,SAAS,4BAA4B,CAAC,SAAmD;QACrF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;QAC9G,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAEpC,IAAI,cAAc,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC5E,MAAM,IAAI,KAAK,CAAC,sCAAsC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;SAC9E;QAED,KAAK,MAAM,EAAE,IAAI,cAAc,CAAC,QAAQ,EAAE;YACtC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;aAAE;SACjH;IACL,CAAC;IASD,SAAsB,eAAe,CAAC,MAAc,EAAE,aAA8C;;YAChG,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,gCAAgC,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACzH,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEhD,OAAO,iBAAiB,CAAC;QAC7B,CAAC;KAAA;IALqB,+BAAe,kBAKpC,CAAA;IAWD,SAAsB,aAAa,CAAC,MAAc,EAAE,UAAoB,EAAE,QAAkB,EAAE,cAAc;;YACxG,MAAM,SAAS,GAAG,MAAM,iCAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,oBAAoB,GAAG,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACpE,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YAC/F,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;YACrF,4BAA4B,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAEvE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;QAC1E,CAAC;KAAA;IATqB,6BAAa,gBASlC,CAAA;IAWD,SAAsB,qBAAqB,CAAE,MAAc,EAAE,QAAkB,EAAE,OAA2B,EAAE,UAAkC;;YAC5I,MAAM,oBAAoB,GAAG,MAAM,iCAAe,CAAC,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACnG,IAAI,kBAAkB,GAA2B,UAAU,CAAC;YAC5D,IAAI,CAAC,oBAAoB,EAAE;gBACvB,MAAM,QAAQ,GAAyB;oBACnC,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,QAAQ,CAAC,aAAa;oBAC9B,GAAG,EAAE,GAAG;oBACR,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;oBACjD,SAAS,EAAE,OAAO;oBAClB,aAAa,EAAE,GAAG;oBAClB,UAAU,EAAE,QAAQ,CAAC,SAAS;iBACjC,CAAC;gBACF,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC9B,SAAS,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC7D,kBAAkB,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;aAC9C;YAED,OAAO,kBAAkB,CAAC;QAC9B,CAAC;KAAA;IAnBqB,qCAAqB,wBAmB1C,CAAA;IAaD,SAAsB,wBAAwB,CAC1C,MAAc,EACd,QAAkB,EAClB,EAAU,EACV,MAAc,EACd,GAAW,EACX,cAAsB;;YAEtB,MAAM,SAAS,GAAG,MAAM,iCAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,MAAM,iCAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YAE/G,MAAM,WAAW,GAAyB;gBACtC,WAAW,EAAE,EAAE;gBACf,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,aAAa,EAAE,KAAK;gBACpB,SAAS,EAAE,OAAO;gBAClB,OAAO,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACvD,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACnB,MAAM,EAAE,QAAQ,CAAC,aAAa;gBAC9B,IAAI,EAAE,aAAa;aACtB,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;YAE9F,OAAO,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACvE,CAAC;KAAA;IAzBqB,wCAAwB,2BAyB7C,CAAA;IAYD,SAAsB,uBAAuB,CACzC,MAAc,EACd,QAAkB,EAClB,QAAgB,EAChB,GAAW,EACX,cAAsB;;YAEtB,MAAM,SAAS,GAAG,MAAM,iCAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,iCAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YACzG,MAAM,UAAU,GAAyB;gBACrC,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,QAAQ,CAAC,aAAa;gBAC9B,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACnB,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACjD,aAAa,EAAE,GAAG;gBAClB,SAAS,EAAE,OAAO;gBAClB,QAAQ,EAAE,QAAQ;aACrB,CAAA;YACD,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;YAEvF,OAAO,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACvE,CAAC;KAAA;IArBqB,uCAAuB,0BAqB5C,CAAA;IAeD,SAAsB,+BAA+B,CACjD,MAAc,EACd,QAAkB,EAClB,MAAc,EACd,QAA4B,EAC5B,SAAkB,EAClB,WAAoB,EACpB,GAAW,EACX,cAAsB;;YAEtB,OAAO,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrI,CAAC;KAAA;IAXqB,+CAA+B,kCAWpD,CAAA;IAkBD,SAAsB,gCAAgC,CAClD,MAAc,EACd,QAAkB,EAClB,MAAc,EACd,QAA4B,EAC5B,SAAkB,EAClB,WAAoB,EACpB,GAAW,EACX,cAAsB,EACtB,aAAqB,EACrB,SAAiB,EACjB,IAAY,EACZ,OAAe;;YAEf,OAAO,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9J,CAAC;KAAA;IAfqB,gDAAgC,mCAerD,CAAA;IAoBD,SAAe,wBAAwB,CACnC,MAAc,EACd,QAAkB,EAClB,MAAc,EACd,QAA4B,EAC5B,SAAkB,EAClB,WAAoB,EACpB,GAAW,EACX,cAAsB,EACtB,aAAqB,EACrB,SAAiB,EACjB,IAAa,EACb,OAAgB;;YAEhB,MAAM,SAAS,GAAG,MAAM,iCAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,iCAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YAEzG,IAAI,UAAU,GAAQ,SAAS,CAAC;YAChC,IAAI,CAAC,CAAC,IAAI,EAAE;gBACR,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAiB,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;aAClF;YAED,IAAI,aAAa,GAAQ,SAAS,CAAC;YACnC,IAAI,CAAC,CAAC,OAAO,EAAE;gBACX,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAiB,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC;aACxF;YAED,MAAM,WAAW,GAAyB;gBACtC,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,QAAQ,CAAC,aAAa;gBAC9B,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACnB,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACjD,SAAS,EAAE,SAAS;gBACpB,aAAa,EAAE,aAAa;gBAC5B,aAAa,EAAE,QAAQ,CAAC,aAAa;gBAErC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE;gBAC1B,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC,QAAQ;gBACtC,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS;aAC1E,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAEzF,OAAO,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACvE,CAAC;KAAA;IAeD,SAAsB,+BAA+B,CACjD,MAAc,EACd,QAAkB,EAClB,EAAU,EACV,MAAc,EACd,GAAW,EACX,cAAsB,EACtB,YAAoB,EACpB,QAAgB,EAChB,UAAmB;;YAEnB,MAAM,SAAS,GAAG,MAAM,iCAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,MAAM,iCAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YAE/G,IAAI,WAAW,GAAyB;gBACpC,WAAW,EAAE,EAAE;gBACf,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,aAAa,EAAE,YAAY,CAAC,QAAQ,EAAE;gBACtC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE;gBAC9B,OAAO,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACvD,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACnB,MAAM,EAAE,QAAQ,CAAC,aAAa;gBAC9B,IAAI,EAAE,aAAa;aACtB,CAAC;YAEF,IAAI,CAAC,CAAC,UAAU,EAAE;gBACd,MAAM,eAAe,GAAG,qCAAiB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;gBAC1C,WAAY,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;aACnG;YAED,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAC/F,OAAO,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACvE,CAAC;KAAA;IAhCqB,+CAA+B,kCAgCpD,CAAA;IAWD,SAAsB,sBAAsB,CACxC,MAAc,EACd,QAAkB,EAClB,MAAc,IAAI,EAClB,iBAAyB,EAAE;;YAC3B,MAAM,SAAS,GAAG,MAAM,iCAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,iCAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YACzG,MAAM,QAAQ,GAAyB;gBACnC,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,QAAQ,CAAC,aAAa;gBAC9B,GAAG,EAAE,GAAG,GAAG,EAAE;gBACb,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACjD,SAAS,EAAE,OAAO;gBAClB,aAAa,EAAE,GAAG;gBAClB,UAAU,EAAE,QAAQ,CAAC,SAAS;aACjC,CAAC;YACF,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE9B,OAAO,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;QACtE,CAAC;KAAA;IAnBqB,sCAAsB,yBAmB3C,CAAA;IAWD,SAAgB,+BAA+B,CAAC,MAAc,EAAE,QAAkB,EAAE,cAAsB,EAAE,cAAsB;QAC9H,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAErG,OAAO,aAAa,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzE,CAAC;IAJe,+CAA+B,kCAI9C,CAAA;AACL,CAAC,EAxcgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAwc/B"} \ No newline at end of file diff --git a/dist/chain/tezos/lexer/Micheline.js b/dist/chain/tezos/lexer/Micheline.js deleted file mode 100644 index 8ab0380f..00000000 --- a/dist/chain/tezos/lexer/Micheline.js +++ /dev/null @@ -1,317 +0,0 @@ -// Generated automatically by nearley, version 2.16.0 -// http://github.com/Hardmath123/nearley -(function () { -function id(x) { return x[0]; } - -const moo = require("moo"); -const bigInt = require("big-integer"); - -const MichelineKeywords = ['"parameter"', '"storage"', '"code"', '"False"', '"Elt"', '"Left"', '"None"', '"Pair"', '"Right"', '"Some"', '"True"', '"Unit"', '"PACK"', '"UNPACK"', '"BLAKE2B"', '"SHA256"', '"SHA512"', '"ABS"', '"ADD"', '"AMOUNT"', '"AND"', '"BALANCE"', '"CAR"', '"CDR"', '"CHECK_SIGNATURE"', '"COMPARE"', '"CONCAT"', '"CONS"', '"CREATE_ACCOUNT"', '"CREATE_CONTRACT"', '"IMPLICIT_ACCOUNT"', '"DIP"', '"DROP"', '"DUP"', '"EDIV"', '"EMPTY_MAP"', '"EMPTY_SET"', '"EQ"', '"EXEC"', '"FAILWITH"', '"GE"', '"GET"', '"GT"', '"HASH_KEY"', '"IF"', '"IF_CONS"', '"IF_LEFT"', '"IF_NONE"', '"INT"', '"LAMBDA"', '"LE"', '"LEFT"', '"LOOP"', '"LSL"', '"LSR"', '"LT"', '"MAP"', '"MEM"', '"MUL"', '"NEG"', '"NEQ"', '"NIL"', '"NONE"', '"NOT"', '"NOW"', '"OR"', '"PAIR"', '"PUSH"', '"RIGHT"', '"SIZE"', '"SOME"', '"SOURCE"', '"SENDER"', '"SELF"', '"STEPS_TO_QUOTA"', '"SUB"', '"SWAP"', '"TRANSFER_TOKENS"', '"SET_DELEGATE"', '"UNIT"', '"UPDATE"', '"XOR"', '"ITER"', '"LOOP_LEFT"', '"ADDRESS"', '"CONTRACT"', '"ISNAT"', '"CAST"', '"RENAME"', '"bool"', '"contract"', '"int"', '"key"', '"key_hash"', '"lambda"', '"list"', '"map"', '"big_map"', '"nat"', '"option"', '"or"', '"pair"', '"set"', '"signature"', '"string"', '"bytes"', '"mutez"', '"timestamp"', '"unit"', '"operation"', '"address"', '"SLICE"']; - -const lexer = moo.compile({ - keyword: MichelineKeywords, - lbrace: '{', - rbrace: '}', - lbracket: '[', - rbracket: ']', - colon: ":", - comma: ",", - _: /[ \t]+/, - quotedValue: /\"[\S\s]*?\"/ -}); - - -/** - * Encode a signed int value, add "00" prefix. - * { "int": "42" } => 002a - */ -const staticIntToHex = d => { - const prefix = '00'; - const text = d[6].toString(); - const value = writeSignedInt(parseInt(text.substring(1, text.length - 1))); // strip double quotes - - return prefix + value; -}; - -/** - * Encode a string to hex, add "01" prefix. - * { "string": "abc" } => 0100000003616263 - */ -const staticStringToHex = d => { - const prefix = '01'; - let text = d[6].toString(); - text = text.substring(1, text.length - 1); // strip double quotes - const len = encodeLength(text.length); - - text = text.split('').map(c => c.charCodeAt(0).toString(16)).join(''); - - return prefix + len + text; -}; - -const staticBytesToHex = d => { - const prefix = '0a'; - let bytes = d[6].toString(); - bytes = bytes.substring(1, bytes.length - 1); // strip double quotes - const len = encodeLength(bytes.length / 2); - - return prefix + len + bytes; -}; - -/** - * Encode an array of static values with a "02" prefix. Individual value encoding is done by staticIntToHex or staticStringToHex. - *[ { "int": "42" }, { "string": "abc" } ] => 020000000a002a0100000003616263 - */ -const staticArrayToHex = d => { - const matchedArray = d[2]; // data array starts at position 2 after the opening bracket "[ " - const prefix = '02'; - const content = matchedArray.map(a => a[0]).join(''); - const len = encodeLength(content.length / 2); - - return prefix + len + content; -}; - -/** - * Encodes a single primitive without arguments or annotations. - * { "prim": "PUSH" } => 0343 - */ -const primBareToHex = d => { - //const keywords = lexer.groups.filter(g => g.defaultType === 'keyword')[0].match; - const prefix = '03'; - const prim = encodePrimitive(d[6].toString()); - - return prefix + prim; -} - -/** - * Encodes a single primitive with an annotation - * { "prim": "PUSH", "annots": [ "@cba" ] } => 04430000000440636261 - */ -const primAnnToHex = d => { - const prefix = '04'; - const prim = encodePrimitive(d[6].toString()); - let ann = d[15].map(v => { - let t = v[0].toString(); - t = t.substring(1, t.length - 1); // strip double quotes - return t; - }).join(' '); - ann = ann.split('').map(c => c.charCodeAt(0).toString(16)).join(''); // to hex - ann = encodeLength(ann.length / 2) + ann; // prepend length - - return prefix + prim + ann; -} - -/** - * Encodes a single primitive with one or more arguments. - * { "prim": "NIL", "args": [ { "prim": "operation" } ] } => 053d036d - * { "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" } ] } => 073d036d036d - */ -const primArgToHex = d => { - let prefix = '05'; - if (d[15].length == 2) { - prefix = '07'; - } else if (d[15].length > 2) { - prefix = '09'; - } - - const prim = encodePrimitive(d[6].toString()); - let args = d[15].map(v => v[0]).join(''); - - if (prefix === '09') { - args = ('0000000' + (args.length / 2).toString(16)).slice(-8) + args; // args is implicitly an array here, array prefix (02) is missing, but 4-byte length is written - args += '00000000'; // append empty annotation to message type 09 - } - - return prefix + prim + args; -} - -/** - * Encodes a primitive with arguments and annotations - * { "prim": "NIL", "args": [ { "prim": "operation" } ], "annots": [ "@cba" ] } => 063d036d0000000440636261 - * { "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" } ], "annots": [ "@cba" ] } => 083d036d036d0000000440636261 - * - */ -const primArgAnnToHex = d => { - let prefix = '06'; - if (d[15].length == 2) { - prefix = '08'; - } else if (d[15].length > 2) { - prefix = '09'; - } - - const prim = encodePrimitive(d[6].toString()); - let args = d[15].map(v => v[0]).join(''); - let ann = d[26].map(v => { - let t = v[0].toString(); - t = t.substring(1, t.length - 1); // strip double quotes - return t; - }).join(' '); // multiple annotations are encoded as a single space-separated string - ann = ann.split('').map(c => c.charCodeAt(0).toString(16)).join(''); // to hex - ann = encodeLength(ann.length / 2) + ann; // prepend length - - if (prefix === '09') { - args = ('0000000' + (args.length / 2).toString(16)).slice(-8) + args; // args is implicitly an array here, array prefix (02) is missing, but 4-byte length is written - } - - return prefix + prim + args + ann; -} - -// 10 - -const encodePrimitive = p => { - return ('00' + MichelineKeywords.indexOf(p).toString(16)).slice(-2); -} - -const encodeLength = l => { - return ('0000000' + l.toString(16)).slice(-8); -} - -const writeSignedInt = value => { - if (value === 0) { return '00'; } - - const n = bigInt(value).abs(); - const l = n.bitLength().toJSNumber(); - let arr = []; - let v = n; - for (let i = 0; i < l; i += 7) { - let byte = bigInt.zero; - - if (i === 0) { - byte = v.and(0x3f); // first byte makes room for sign flag - v = v.shiftRight(6); - } else { - byte = v.and(0x7f); // NOT base128 encoded - v = v.shiftRight(7); - } - - if (value < 0 && i === 0) { byte = byte.or(0x40); } // set sign flag - - if (i + 7 < l) { byte = byte.or(0x80); } // set next byte flag - arr.push(byte.toJSNumber()); - } - - if (l % 7 === 0) { - arr[arr.length - 1] = arr[arr.length - 1] | 0x80; - arr.push(1); - } - - return arr.map(v => ('0' + v.toString(16)).slice(-2)).join(''); - } -var grammar = { - Lexer: lexer, - ParserRules: [ - {"name": "main", "symbols": ["staticObject"], "postprocess": id}, - {"name": "main", "symbols": ["primBare"], "postprocess": id}, - {"name": "main", "symbols": ["primArg"], "postprocess": id}, - {"name": "main", "symbols": ["primAnn"], "postprocess": id}, - {"name": "main", "symbols": ["primArgAnn"], "postprocess": id}, - {"name": "main", "symbols": ["anyArray"], "postprocess": id}, - {"name": "staticInt$ebnf$1", "symbols": []}, - {"name": "staticInt$ebnf$1", "symbols": ["staticInt$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "staticInt", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"int\""}, "staticInt$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": staticIntToHex}, - {"name": "staticString$ebnf$1", "symbols": []}, - {"name": "staticString$ebnf$1", "symbols": ["staticString$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "staticString", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"string\""}, "staticString$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": staticStringToHex}, - {"name": "staticBytes$ebnf$1", "symbols": []}, - {"name": "staticBytes$ebnf$1", "symbols": ["staticBytes$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "staticBytes", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"bytes\""}, "staticBytes$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": staticBytesToHex}, - {"name": "staticObject", "symbols": ["staticInt"], "postprocess": id}, - {"name": "staticObject", "symbols": ["staticString"], "postprocess": id}, - {"name": "staticObject", "symbols": ["staticBytes"], "postprocess": id}, - {"name": "primBare$ebnf$1", "symbols": []}, - {"name": "primBare$ebnf$1", "symbols": ["primBare$ebnf$1", (lexer.has("_") ? {type: "_"} : _)], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "primBare", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"prim\""}, "primBare$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("keyword") ? {type: "keyword"} : keyword), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": primBareToHex}, - {"name": "primArg$ebnf$1", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArg$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArg$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArg$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArg$ebnf$3$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArg$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArg$ebnf$3$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArg$ebnf$3$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArg$ebnf$3$subexpression$1", "symbols": ["any", "primArg$ebnf$3$subexpression$1$ebnf$1", "primArg$ebnf$3$subexpression$1$ebnf$2"]}, - {"name": "primArg$ebnf$3", "symbols": ["primArg$ebnf$3$subexpression$1"]}, - {"name": "primArg$ebnf$3$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArg$ebnf$3$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArg$ebnf$3$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArg$ebnf$3$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArg$ebnf$3$subexpression$2", "symbols": ["any", "primArg$ebnf$3$subexpression$2$ebnf$1", "primArg$ebnf$3$subexpression$2$ebnf$2"]}, - {"name": "primArg$ebnf$3", "symbols": ["primArg$ebnf$3", "primArg$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "primArg", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"prim\""}, "primArg$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("keyword") ? {type: "keyword"} : keyword), (lexer.has("comma") ? {type: "comma"} : comma), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"args\""}, "primArg$ebnf$2", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "primArg$ebnf$3", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": primArgToHex}, - {"name": "primAnn$ebnf$1", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primAnn$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primAnn$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primAnn$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primAnn$ebnf$3$subexpression$1", "symbols": [(lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), "primAnn$ebnf$3$subexpression$1$ebnf$1", "primAnn$ebnf$3$subexpression$1$ebnf$2"]}, - {"name": "primAnn$ebnf$3", "symbols": ["primAnn$ebnf$3$subexpression$1"]}, - {"name": "primAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primAnn$ebnf$3$subexpression$2", "symbols": [(lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), "primAnn$ebnf$3$subexpression$2$ebnf$1", "primAnn$ebnf$3$subexpression$2$ebnf$2"]}, - {"name": "primAnn$ebnf$3", "symbols": ["primAnn$ebnf$3", "primAnn$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "primAnn", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"prim\""}, "primAnn$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("keyword") ? {type: "keyword"} : keyword), (lexer.has("comma") ? {type: "comma"} : comma), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"annots\""}, "primAnn$ebnf$2", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "primAnn$ebnf$3", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": primAnnToHex}, - {"name": "primArgAnn$ebnf$1", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$3$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$3$subexpression$1", "symbols": ["any", "primArgAnn$ebnf$3$subexpression$1$ebnf$1", "primArgAnn$ebnf$3$subexpression$1$ebnf$2"]}, - {"name": "primArgAnn$ebnf$3", "symbols": ["primArgAnn$ebnf$3$subexpression$1"]}, - {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$3$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$3$subexpression$2", "symbols": ["any", "primArgAnn$ebnf$3$subexpression$2$ebnf$1", "primArgAnn$ebnf$3$subexpression$2$ebnf$2"]}, - {"name": "primArgAnn$ebnf$3", "symbols": ["primArgAnn$ebnf$3", "primArgAnn$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "primArgAnn$ebnf$4", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$4", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$5$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$5$subexpression$1", "symbols": [(lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), "primArgAnn$ebnf$5$subexpression$1$ebnf$1", "primArgAnn$ebnf$5$subexpression$1$ebnf$2"]}, - {"name": "primArgAnn$ebnf$5", "symbols": ["primArgAnn$ebnf$5$subexpression$1"]}, - {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "primArgAnn$ebnf$5$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "primArgAnn$ebnf$5$subexpression$2", "symbols": [(lexer.has("quotedValue") ? {type: "quotedValue"} : quotedValue), "primArgAnn$ebnf$5$subexpression$2$ebnf$1", "primArgAnn$ebnf$5$subexpression$2$ebnf$2"]}, - {"name": "primArgAnn$ebnf$5", "symbols": ["primArgAnn$ebnf$5", "primArgAnn$ebnf$5$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "primArgAnn", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"prim\""}, "primArgAnn$ebnf$1", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("keyword") ? {type: "keyword"} : keyword), (lexer.has("comma") ? {type: "comma"} : comma), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"args\""}, "primArgAnn$ebnf$2", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "primArgAnn$ebnf$3", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket), (lexer.has("comma") ? {type: "comma"} : comma), (lexer.has("_") ? {type: "_"} : _), {"literal":"\"annots\""}, "primArgAnn$ebnf$4", (lexer.has("colon") ? {type: "colon"} : colon), (lexer.has("_") ? {type: "_"} : _), (lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "primArgAnn$ebnf$5", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket), (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": primArgAnnToHex}, - {"name": "primAny", "symbols": ["primBare"], "postprocess": id}, - {"name": "primAny", "symbols": ["primArg"], "postprocess": id}, - {"name": "primAny", "symbols": ["primAnn"], "postprocess": id}, - {"name": "primAny", "symbols": ["primArgAnn"], "postprocess": id}, - {"name": "any", "symbols": ["primAny"], "postprocess": id}, - {"name": "any", "symbols": ["staticObject"], "postprocess": id}, - {"name": "any", "symbols": ["anyArray"], "postprocess": id}, - {"name": "anyArray", "symbols": [(lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket)], "postprocess": function(d) { return '0200000000'; }}, - {"name": "anyArray$ebnf$1$subexpression$1$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "anyArray$ebnf$1$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "anyArray$ebnf$1$subexpression$1$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "anyArray$ebnf$1$subexpression$1$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "anyArray$ebnf$1$subexpression$1", "symbols": ["any", "anyArray$ebnf$1$subexpression$1$ebnf$1", "anyArray$ebnf$1$subexpression$1$ebnf$2"]}, - {"name": "anyArray$ebnf$1", "symbols": ["anyArray$ebnf$1$subexpression$1"]}, - {"name": "anyArray$ebnf$1$subexpression$2$ebnf$1", "symbols": [(lexer.has("comma") ? {type: "comma"} : comma)], "postprocess": id}, - {"name": "anyArray$ebnf$1$subexpression$2$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "anyArray$ebnf$1$subexpression$2$ebnf$2", "symbols": [(lexer.has("_") ? {type: "_"} : _)], "postprocess": id}, - {"name": "anyArray$ebnf$1$subexpression$2$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}}, - {"name": "anyArray$ebnf$1$subexpression$2", "symbols": ["any", "anyArray$ebnf$1$subexpression$2$ebnf$1", "anyArray$ebnf$1$subexpression$2$ebnf$2"]}, - {"name": "anyArray$ebnf$1", "symbols": ["anyArray$ebnf$1", "anyArray$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "anyArray", "symbols": [(lexer.has("lbracket") ? {type: "lbracket"} : lbracket), (lexer.has("_") ? {type: "_"} : _), "anyArray$ebnf$1", (lexer.has("_") ? {type: "_"} : _), (lexer.has("rbracket") ? {type: "rbracket"} : rbracket)], "postprocess": staticArrayToHex} -] - , ParserStart: "main" -} -if (typeof module !== 'undefined'&& typeof module.exports !== 'undefined') { - module.exports = grammar; -} else { - window.grammar = grammar; -} -})(); diff --git a/dist/chain/tezos/lexer/Michelson.js b/dist/chain/tezos/lexer/Michelson.js deleted file mode 100644 index 5b56c2a0..00000000 --- a/dist/chain/tezos/lexer/Michelson.js +++ /dev/null @@ -1,996 +0,0 @@ -// Generated automatically by nearley, version 2.16.0 -// http://github.com/Hardmath123/nearley -(function () { -function id(x) { return x[0]; } - -const moo = require("moo"); - -/* - Assumptions: - - Grammar defined here: http://tezos.gitlab.io/mainnet/whitedoc/michelson.html#xii-full-grammar - - In lexer, types and instructions may have zero, one, two, or three arguments based on the keyword. - - Issue: Some keywords like "DIP" can have zero and one arguments, and the lexer is order-dependent from top to bottom. - This may impact parsing and lead to awkward parse errors, and needs to be addressed accordingly. - - Issue: Splitting instructions by number of arguments hasn't been done, so certain invalid michelson expressions like - "PAIR key key {DROP;}" will pass through even though PAIR is a constant expression. This is a false positive. - - Issue: Some macros are still not implemented: http://tezos.gitlab.io/mainnet/whitedoc/michelson.html#macros - - Issue: There is an ambiguous parsing between commands LE and LEFT. - - Issue: In general, if you have multiple Michelson instructions in a code block, all of them, no matter how nested, - need to have a semicolon at the end, unless it's a singleton code block. In regular Michelson, you can have the very - last instruction in a code block not have a semicolon. A workaround has been made, but this sometimes results - in multiple parse results that are equivalent. In this case, we postprocess to get a single entry instead - - Postprocessor functions and grammar definitions could use a proper refactor - - While the lexer has achieved a significant speedup, certain macros are defined by a grammar, and as such, have an infinitude - - of inputs, accounting for that in the lexer is necessary - - PUSH , data can be empty, but fixing this causes bugs elsewhere for unknown reasons - - We do not handle instances where parameter, storage, and code are given in a separate order - - There is a function called CREATE_CONTRACT which can create a contract inside of a contract, including the parameter, - storage, and code definitions. We do not handle this nesting, as we do a lot of preprocessing outside of the grammar. - - There may not be an exhaustive handling of annotations for types, but it should be covered for instructions -*/ - -/* - Lexer to parse keywords more efficiently. -*/ -const lexer = moo.compile({ - annot: ["%",":","@"], - lparen: '(', - rparen: ')', - lbrace: '{', - rbrace: '}', - ws: /[ \t]+/, - semicolon: ";", - comparableType: ['int', 'nat', 'string', 'bytes', 'mutez', 'bool', 'key_hash', 'timestamp'], - constantType: ['key', 'unit', 'signature', 'operation', 'address'], - singleArgType: ['option', 'list', 'set', 'contract'], - doubleArgType: ['pair', 'or', 'lambda', 'map', 'big_map'], - type: ['key', 'unit', 'signature', 'option', 'list', 'set', 'operation', 'address', 'contract', 'pair', 'or', 'lambda', 'map', 'big_map'], - instruction: ['DROP', 'DUP', 'SWAP', 'SOME', 'NONE', 'UNIT', 'IF_NONE', 'PAIR', 'CAR', 'CDR', 'LEFT', 'RIGHT', 'IF_LEFT', 'IF_RIGHT', - 'NIL', 'CONS', 'IF_CONS', 'SIZE', 'EMPTY_SET', 'EMPTY_MAP', 'MAP', 'ITER', 'MEM', 'GET', 'UPDATE', 'IF', 'LOOP', 'LOOP_LEFT', - 'LAMBDA', 'EXEC', 'DIP', 'FAILWITH', 'CAST', 'RENAME', 'CONCAT', 'SLICE', 'PACK', 'UNPACK', 'ADD', 'SUB', 'MUL', 'EDIV', 'ABS', 'NEG', - 'LSL', 'LSR', 'OR', 'AND', 'XOR', 'NOT', 'COMPARE', 'EQ', 'NEQ', 'LT', 'GT', 'LE', 'GE', 'SELF', 'CONTRACT', 'TRANSFER_TOKENS', - 'SET_DELEGATE', 'CREATE_CONTRACT', 'IMPLICIT_ACCOUNT', 'NOW', 'AMOUNT', 'BALANCE', 'CHECK_SIGNATURE', 'BLAKE2B', 'SHA256', - 'SHA512', 'HASH_KEY', 'STEPS_TO_QUOTA', 'SOURCE', 'SENDER', 'ADDRESS', 'FAIL', 'CDAR', 'CDDR', 'DUUP', 'DUUUP', 'DUUUUP', - 'DUUUUUP', 'DUUUUUUP', 'DUUUUUUUP', 'DIIP', 'DIIIP', 'DIIIIP', 'DIIIIIP', 'DIIIIIIP', 'DIIIIIIIP', 'REDUCE', 'CMPLT', 'UNPAIR', 'CMPGT', - 'CMPLE', 'CMPGE', 'UNPAPAIR', 'CAAR', 'CDDDDADR', 'CDDADDR', 'CDADDR', 'CDADAR', 'IFCMPEQ', 'CDDDADR', 'CADAR', 'CDDDAAR', - 'CADDR', 'CDDDDR', 'CDDAAR', 'CDDADAR', 'CDDDDDR', 'CDDDDAAR', 'ASSERT_CMPGE', 'CDAAR', 'CDADR', 'CDDAR', 'CDDDR', - 'CMPEQ', 'CAAR', 'CAAAR', 'CAAAAR', 'CAAAAAR', 'CAAAAAAR', 'CAAAAAAAR', 'CDDR', 'CDDDR', 'CDDDDR', 'CDDDDDR', 'CDDDDDDR', 'CDDDDDDDR', - 'ASSERT_CMPEQ', 'ASSERT_CMPLT', 'ISNAT', 'IFCMPGT', 'IFCMPGE', 'IFCMPLT', 'IFCMPLE', 'IF_SOME', 'CADR' ], - data: ['Unit', 'True', 'False', 'Left', 'Right', 'Pair', 'Some', 'None', 'instruction'], - constantData: ['Unit', 'True', 'False', 'None', 'instruction'], - singleArgData: ['Left', 'Right', 'Some'], - doubleArgData: ['Pair'], - singleArgTypeData: ['option', 'list', 'set', 'contract', 'Left', 'Right', 'Some'], - doubleArgTypeData: ['pair', 'or', 'lambda', 'map', 'big_map', 'Pair'], - elt: "Elt", - number: /-?[0-9]+/, - word: /[a-zA-z_0-9]+/, - string: /"(?:\\["\\]|[^\n"\\])*"/ -}); - - - - const checkC_R = c_r => { - var pattern = new RegExp('^C(A|D)(A|D)+R$') - return pattern.test(c_r) - } - - const mapper = a_or_d => { - switch(a_or_d) { - case "A": - return keywordToJson(['CAR']) - case "D": - return keywordToJson(['CDR']) - } - } - - const expandC_R = (c_r, annot) => { - var as_and_ds = c_r.substring(1,c_r.length-1) - var expandedC_R = as_and_ds.split('').map(x => mapper(x)) - //if annotations, put in last element of array - if (annot != null) { - const lastChar = as_and_ds[as_and_ds.length-1] - if (lastChar == 'A') { - expandedC_R[expandedC_R.length-1] = `{ "prim": "CAR", "annots": [${annot}] }` - } - if (lastChar == 'D') { - expandedC_R[expandedC_R.length-1] = `{ "prim": "CDR", "annots": [${annot}] }` - } - } - return `[${expandedC_R}]` - } - - //input: C*R - //remove first and last characters from string - //A -> keywordToJson(['CAR']) - //D -> keywordToJson(['CDR']) - // if annotations, put in last element of array - //return `${mappedArray}` - - const check_compare = cmp => - { - var pattern = new RegExp('^CMP(NEQ|EQ|GT|LT|GE|LE)$') - return pattern.test(cmp) - } - - const expand_cmp = (cmp, annot) => { - var op = cmp.substring(3) - var binary_op = keywordToJson([`${op}`]) - var compare = keywordToJson(['COMPARE']) - if (annot != null) { - binary_op = `{ "prim": "${op}", "annots": [${annot}] }`; - } - var result = [compare, binary_op] - return `[${result}]` - } - //input : CMP* - //take last characters of string that aren't CMP -> keywordToJson([last]) - // if annotations, put in last element of array - //return '${[keywordToJson(['COMPARE'])], ^} - - const check_dup = dup => - { - var pattern = new RegExp('^DUU+P$') - return pattern.test(dup) - } - - //currently does not handle annotations - const expand_dup = (dup, annot) => { - var pattern = new RegExp('^DUU+P$') - if (pattern.test(dup)) { - var newDup = dup.substring(0,1) + dup.substring(2) - var innerDup = expand_dup(newDup, annot) - return `[{ "prim": "DIP", "args": [ ${innerDup} ] },{"prim":"SWAP"}]`; - } - else { - if (annot == null) { - return `[{ "prim": "DUP" }]`; - } - else { - return `[{ "prim": "DUP", "annots": [${annot}] }]`; - } - } - /* - - if (dup == "DUP") { - return `{ "prim": "${dup}" }`; - - } - - if (dup == "DUUP") { - if (annot == null) { - - } - else { - - } - } - - - const newDup = dup.substring(1,dup.length-1) - - const dip = keywordToJson(['DIP']); - var dips = [] - - const swap = keywordToJson(['SWAP']); - var finalSwap = swap - if (annot != null) { - finalSwap = `{ "prim": "SWAP", "annots": [${annot}] }` - } - var swaps = [] - - for (let i = 0; i < newDup.length; i++) { - dips.push(dip); - swaps.push(swap); - } - - swaps[swaps.length-1] = finalSwap - - return `[${dips}, ${[keywordToJson(['DUP'])]}, ${swaps}]` - */ - - } - //input : D(U*)P - // DUP -> DUP - // DU(U+)P -> n = |U+|, repeat n keywordToJson(['DIP']); keywordToJson(['DUP']); repeat n keywordToJson(['SWAP']); - // // if no annot, return duuuup put annot in swap otherwise - - const check_assert = assert => - { - var pattern = new RegExp('^ASSERT$|^ASSERT_(EQ|NEQ|GT|LT|GE|LE|NONE|SOME|LEFT|RIGHT|CMPEQ|CMPNEQ|CMPGT|CMPLT|CMPGE|CMPLE)$') - return pattern.test(assert) - } - - const expand_assert = (assert, annot) => { - //input : ASSERT_CMP** - //ASSERT -> {"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]} - //ASSERT_* -> same as above, but [] -> expand * (comparison ops, CMP_comparison ops) - //ASSERT_NONE => IF_NONE {} {FAIL} - //ASSERT_SOME => IF_NONE {FAIL} {} - //ASSERT_LEFT => IF_LEFT {} {FAIL} - //ASSERT_RIGHT => IF_LEFT {FAIL} {} - // last five characters -> expand_cmp - // return [expand_cmp, assert] if no annot, put annot in assert otherwise - // if annotations, put in last element of array - switch (assert) { - case 'ASSERT': - if (annot == null) { - return `[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPEQ': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPGE': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPGT': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPLE': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPLT': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPNEQ': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_EQ': - if (annot == null) { - return `[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]]` - } - else { - return `[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_GE': - if (annot == null) { - return `[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_GT': - if (annot == null) { - return `[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_LE': - if (annot == null) { - return `[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_LT': - if (annot == null) { - return `[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_NEQ': - if (annot == null) { - return `[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - } - } - - const check_fail = fail => { - return fail == "FAIL"; - } - - const expand_fail = (fail, annot) => { - // if annotations, put in last element of array, if no annot, put annot in FAILWITH otherwise - if (annot == null) { - return `[ { "prim": "UNIT" }, { "prim": "FAILWITH"} ]` - } - else { - return `[ { "prim": "UNIT" }, { "prim": "FAILWITH", "annots": [${annot}]} ]` - } - } - - const check_if = ifStatement => { - var pattern = new RegExp('^IF(EQ|NEQ|GT|LT|GE|LE|CMPEQ|CMPNEQ|CMPGT|CMPLT|CMPGE|CMPLE)$') - return pattern.test(ifStatement) - } - - const expandIF = (ifInstr, ifTrue, ifFalse, annot) => { - //IFEQ, IFGE, IFGT, IFLE, IFLT : EXACTLY THE SAME AS IFCMP, JUST REMOVE COMPARE - // if annotations, put in last element of array - switch (ifInstr) { - case 'IFCMPEQ': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPGE': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPGT': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPLE': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPLT': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPNEQ': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFEQ': - if (annot == null) { - return `[{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFGE': - if (annot == null) { - return `[{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFGT': - if (annot == null) { - return `[{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFLE': - if (annot == null) { - return `[{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFLT': - if (annot == null) { - return `[{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFNEQ': - if (annot == null) { - return `[{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - } - } - - const check_dip = dip => { - var pattern = new RegExp('^DII+P$') - return pattern.test(dip) - } - - const expandDIP = (dip, instruction, annot) => { - //switch (dip) { - // case 'DIIP': - // return `[{ "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ ${instruction} ] ] } ] ] }]`; - //} - - // ANNOTATION LAST ONE - // DIP code -> return `{ "prim": "DIP", "args": [ [ ${code} ] ] }`; - // DI(I+)P code -> return `{ "prim": "DIP", "args": [ [ ${expandDIP(D(I+)P, instruction)} ] ] }`; - - var pattern = new RegExp('^DII+P$') - if (pattern.test(dip)) { - var newDip = dip.substring(0,1) + dip.substring(2) - var innerDip = expandDIP(newDip, instruction, annot) - return `[{ "prim": "DIP", "args": [ ${innerDip} ] }]`; - } - else { - //add annotation in this branch - if (annot == null) { - return `[{ "prim": "DIP", "args": [ [ ${instruction} ] ] }]`; - } - else { - return `[{ "prim": "DIP", "args": [ [ ${instruction} ] ], "annots": [${annot}] }]`; - } - } - - } - - //until we have proper checks for these cases - const check_other = word => { - return word == "UNPAIR" || word == "UNPAPAIR" - } - - const expand_other = (word, annot) => { - if (word == 'UNPAIR') { - if (annot == null) { - return '[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]' - } - else { - return `[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ], "annots": [${annot}] } ] ]` - } - } - if (word == 'UNPAPAIR') { - if (annot == null) { - return `[ [ { "prim": "DUP" }, - { "prim": "CAR" }, - { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], - {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]]}]]]}] ` - } - else { - return `[ [ { "prim": "DUP" }, - { "prim": "CAR" }, - { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], - {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]],"annots": [${annot}]}]]]}] ` - } - } - } - - const checkKeyword = word => { - return check_assert(word) - || check_compare(word) - || check_dip(word) - || check_dup(word) - || check_fail(word) - || check_if(word) - || checkC_R(word) - || check_other(word) - } - - const expandKeyword = (word, annot) => { - if (checkC_R(word)) { - return expandC_R(word, annot) - } - if (check_assert(word)) { - return expand_assert(word, annot) - } - if (check_compare(word)) { - return expand_cmp(word, annot) - } - if (check_dip(word)) { - return expandDIP(word, annot) - } - if (check_dup(word)) { - return expand_dup(word, annot) - } - if (check_fail(word)) { - return expand_fail(word, annot) - } - if (check_if(word)) { - return expandIF(word, annot) - } - if (check_other(word)) { - return expand_other(word, annot) - } - } - - /** - * Given a int, convert it to JSON. - * Example: "3" -> { "int": "3" } - */ - const intToJson = d => { return `{ "int": "${parseInt(d[0])}" }`; } - - /** - * Given a string, convert it to JSON. - * Example: "string" -> "{ "string": "blah" }" - */ - const stringToJson = d => { return `{ "string": ${d[0]} }`; } - - /** - * Given a keyword, convert it to JSON. - * Example: "int" -> "{ "prim" : "int" }" - */ - const keywordToJson = d => { - const word = d[0].toString() - if (d.length == 1) { - if (checkKeyword(word)) { - return [expandKeyword(word, null)] - } - else { - return `{ "prim": "${d[0]}" }`; - } - } - else { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - if (checkKeyword(word)) { - return [expandKeyword(word, annot)] - } - else { - return `{ "prim": "${d[0]}", "annots": [${annot}] }`; - } - } - } - - /* - const typeKeywordToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[0]}", "annots": [${annot}] }`; - } - */ - - /** - * Given a keyword with one argument, convert it to JSON. - * Example: "option int" -> "{ prim: option, args: [int] }" - */ - const singleArgKeywordToJson = d => { return `{ "prim": "${d[0]}", "args": [ ${d[2]} ] }`; } - //changed 5 secs ago - - const comparableTypeToJson = d => { - const annot = d[3].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[2]}", "annots": [${annot}] }`; - } - - const singleArgTypeKeywordWithParenToJson = d => { - const annot = d[3].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[2]}", "args": [ [ ${d[7]} ] ], "annots": [${annot}] }`; - } - - const singleArgInstrKeywordToJson = d => { - const word = `${d[0].toString()}` - if (check_dip(word)) { - return expandDIP(word, d[2]) - } - else { - return `{ "prim": "${d[0]}", "args": [ [ ${d[2]} ] ] }`; - } - } - - const singleArgTypeKeywordToJson = d => { - const word = `${d[0].toString()}` - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - if (check_dip(word)) { - return expandDIP(word, d[2], annot) - } - else { - return `{ "prim": "${d[0]}", "args": [ ${d[3]} ], "annots": [${annot}] }`; - } - } - - /** - * Given a keyword with one argument and parentheses, convert it to JSON. - * Example: "(option int)" -> "{ prim: option, args: [{prim: int}] }" - */ - const singleArgKeywordWithParenToJson = d => { return `{ "prim": "${d[2]}", "args": [ ${d[4]} ] }`; } - //changed 5 secs ago - /** - * Given a keyword with two arguments, convert it into JSON. - * Example: "Pair unit instruction" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" - */ - const doubleArgKeywordToJson = d => { return `{ "prim": "${d[0]}", "args": [${d[2]}, ${d[4]}] }`; } - - const doubleArgInstrKeywordToJson = d => { - const word = `${d[0].toString()}` - if (check_if(word)) { - return expandIF(word, d[2], d[4]) - } - else { - return `{ "prim": "${d[0]}", "args": [ [${d[2]}], [${d[4]}] ] }`; - } - } - - /** - * Given a keyword with two arguments and parentheses, convert it into JSON. - * Example: "(Pair unit instruction)" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" - */ - const doubleArgKeywordWithParenToJson = d => { return `{ "prim": "${d[2]}", "args": [ ${d[4]}, ${d[6]} ] }`; } - - /** - * Given a keyword with three arguments, convert it into JSON. - * Example: "LAMBDA key unit {DIP;}" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" - */ - const tripleArgKeyWordToJson = d => { return `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, [${d[6]}] ] }`; } - - /** - * Given a keyword with three arguments and parentheses, convert it into JSON. - * Example: "(LAMBDA key unit {DIP;})" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" - */ - const tripleArgKeyWordWithParenToJson = d => { return `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, ${d[6]} ] }`; } - - const nestedArrayChecker = x => { - if (Array.isArray(x)) { - if (Array.isArray(x[0])) { - return x[0] - } - else { - return x - } - } - else { - return x - } - } - - /** - * Given a list of michelson instructions, convert it into JSON. - * Example: "{CAR; NIL operation; PAIR;}" -> - * [ '{ prim: CAR }', - * '{ prim: NIL, args: [{ prim: operation }] }', - * '{ prim: PAIR }' ] - */ - const instructionSetToJsonNoSemi = d => { return d[2].map(x => x[0]).concat(d[3]).map(x => nestedArrayChecker(x)); } - const instructionSetToJsonSemi = d => { return d[2].map(x => x[0]).map(x => nestedArrayChecker(x)); } - - const scriptToJson = d => { - const parameterJson = d[0]; - const storageJson = d[2]; - const codeJson = `{ "prim": "code", "args": [ [ ${d[4]} ] ] }`; - return `[ ${parameterJson}, ${storageJson}, ${codeJson} ]`; - } - - const doubleArgTypeKeywordToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[0]}", "args": [ ${d[4]}, ${d[6]} ], "annots": [${annot}] }`; - } - - const doubleArgTypeKeywordWithParenToJson = d => { - const annot = d[3].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[2]}", "args": [ ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; - } - - const tripleArgTypeKeyWordToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[0]}", "args": [ ${d[3]}, ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; - } - - const pushToJson = d => { - return `{ "prim": "${d[0]}", "args": [${d[2]}, []] }`; - } - - const pushWithAnnotsToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "PUSH", "args": [ ${d[3]}, ${d[5]} ], "annots": [${annot}] }`; - } - -var grammar = { - Lexer: lexer, - ParserRules: [ - {"name": "main", "symbols": ["instruction"], "postprocess": id}, - {"name": "main", "symbols": ["data"], "postprocess": id}, - {"name": "main", "symbols": ["type"], "postprocess": id}, - {"name": "main", "symbols": ["parameter"], "postprocess": id}, - {"name": "main", "symbols": ["storage"], "postprocess": id}, - {"name": "main", "symbols": ["code"], "postprocess": id}, - {"name": "main", "symbols": ["script"], "postprocess": id}, - {"name": "main", "symbols": ["parameterValue"], "postprocess": id}, - {"name": "main", "symbols": ["storageValue"], "postprocess": id}, - {"name": "main", "symbols": ["typeData"], "postprocess": id}, - {"name": "script", "symbols": ["parameter", "_", "storage", "_", "code"], "postprocess": scriptToJson}, - {"name": "parameter", "symbols": [{"literal":"parameter"}]}, - {"name": "parameter", "symbols": [{"literal":"Parameter"}]}, - {"name": "storage", "symbols": [{"literal":"Storage"}]}, - {"name": "storage", "symbols": [{"literal":"storage"}]}, - {"name": "code", "symbols": [{"literal":"Code"}]}, - {"name": "code", "symbols": [{"literal":"code"}]}, - {"name": "parameterValue", "symbols": ["parameter", "_", "typeData", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, - {"name": "storageValue", "symbols": ["storage", "_", "typeData", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, - {"name": "parameter", "symbols": ["parameter", "_", "type", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, - {"name": "storage", "symbols": ["storage", "_", "type", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, - {"name": "code", "symbols": ["code", "_", "subInstruction", "_", "semicolons", "_"], "postprocess": d => d[2]}, - {"name": "code", "symbols": [(lexer.has("code") ? {type: "code"} : code), "_", {"literal":"{};"}], "postprocess": d => "code {}"}, - {"name": "type", "symbols": [(lexer.has("comparableType") ? {type: "comparableType"} : comparableType)], "postprocess": keywordToJson}, - {"name": "type", "symbols": [(lexer.has("constantType") ? {type: "constantType"} : constantType)], "postprocess": keywordToJson}, - {"name": "type", "symbols": [(lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "_", "type"], "postprocess": singleArgKeywordToJson}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "_", "type", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgKeywordWithParenToJson}, - {"name": "type", "symbols": [(lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "_", "type", "_", "type"], "postprocess": doubleArgKeywordToJson}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "_", "type", "_", "type", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgKeywordWithParenToJson}, - {"name": "type$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$1$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$1$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$1", "symbols": ["type$ebnf$1$subexpression$1"]}, - {"name": "type$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$1$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$1$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$1", "symbols": ["type$ebnf$1", "type$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("comparableType") ? {type: "comparableType"} : comparableType), "type$ebnf$1"], "postprocess": keywordToJson}, - {"name": "type$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$2$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$2$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$2", "symbols": ["type$ebnf$2$subexpression$1"]}, - {"name": "type$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$2$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$2$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$2", "symbols": ["type$ebnf$2", "type$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("constantType") ? {type: "constantType"} : constantType), "type$ebnf$2"], "postprocess": keywordToJson}, - {"name": "type$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$3$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$3$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$3", "symbols": ["type$ebnf$3$subexpression$1"]}, - {"name": "type$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$3$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$3$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$3", "symbols": ["type$ebnf$3", "type$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("comparableType") ? {type: "comparableType"} : comparableType), "type$ebnf$3", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": comparableTypeToJson}, - {"name": "type$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$4$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$4$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$4", "symbols": ["type$ebnf$4$subexpression$1"]}, - {"name": "type$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$4$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$4$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$4", "symbols": ["type$ebnf$4", "type$ebnf$4$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("constantType") ? {type: "constantType"} : constantType), "type$ebnf$4", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": comparableTypeToJson}, - {"name": "type$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$5$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$5$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$5", "symbols": ["type$ebnf$5$subexpression$1"]}, - {"name": "type$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$5$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$5$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$5", "symbols": ["type$ebnf$5", "type$ebnf$5$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "type$ebnf$5", "_", "type", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgTypeKeywordWithParenToJson}, - {"name": "type$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$6$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$6$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$6", "symbols": ["type$ebnf$6$subexpression$1"]}, - {"name": "type$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$6$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$6$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$6", "symbols": ["type$ebnf$6", "type$ebnf$6$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "type$ebnf$6", "_", "type", "_", "type", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgTypeKeywordWithParenToJson}, - {"name": "typeData", "symbols": [(lexer.has("singleArgTypeData") ? {type: "singleArgTypeData"} : singleArgTypeData), "_", "typeData"], "postprocess": singleArgKeywordToJson}, - {"name": "typeData", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgTypeData") ? {type: "singleArgTypeData"} : singleArgTypeData), "_", "typeData", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgKeywordWithParenToJson}, - {"name": "typeData", "symbols": [(lexer.has("doubleArgTypeData") ? {type: "doubleArgTypeData"} : doubleArgTypeData), "_", "typeData", "_", "typeData"], "postprocess": doubleArgKeywordToJson}, - {"name": "typeData", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("doubleArgTypeData") ? {type: "doubleArgTypeData"} : doubleArgTypeData), "_", "typeData", "_", "typeData", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgKeywordWithParenToJson}, - {"name": "typeData", "symbols": [(lexer.has("data") ? {type: "data"} : data)], "postprocess": keywordToJson}, - {"name": "typeData", "symbols": [(lexer.has("data") ? {type: "data"} : data), "_", "typeData"], "postprocess": singleArgKeywordToJson}, - {"name": "typeData", "symbols": [(lexer.has("data") ? {type: "data"} : data), "_", "typeData", "_", "typeData"], "postprocess": doubleArgKeywordToJson}, - {"name": "typeData", "symbols": ["subTypeData"], "postprocess": id}, - {"name": "typeData", "symbols": ["subTypeElt"], "postprocess": id}, - {"name": "typeData", "symbols": [(lexer.has("number") ? {type: "number"} : number)], "postprocess": intToJson}, - {"name": "typeData", "symbols": [(lexer.has("string") ? {type: "string"} : string)], "postprocess": stringToJson}, - {"name": "typeData", "symbols": [(lexer.has("word") ? {type: "word"} : word)], "postprocess": stringToJson}, - {"name": "subTypeData$ebnf$1$subexpression$1", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subTypeData$ebnf$1", "symbols": ["subTypeData$ebnf$1$subexpression$1"]}, - {"name": "subTypeData$ebnf$1$subexpression$2", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subTypeData$ebnf$1", "symbols": ["subTypeData$ebnf$1", "subTypeData$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subTypeData", "symbols": [{"literal":"{"}, "_", "subTypeData$ebnf$1", {"literal":"}"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subTypeData$ebnf$2$subexpression$1", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subTypeData$ebnf$2", "symbols": ["subTypeData$ebnf$2$subexpression$1"]}, - {"name": "subTypeData$ebnf$2$subexpression$2", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subTypeData$ebnf$2", "symbols": ["subTypeData$ebnf$2", "subTypeData$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subTypeData", "symbols": [{"literal":"("}, "_", "subTypeData$ebnf$2", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subTypeElt$ebnf$1$subexpression$1", "symbols": ["typeElt", {"literal":";"}, "_"]}, - {"name": "subTypeElt$ebnf$1", "symbols": ["subTypeElt$ebnf$1$subexpression$1"]}, - {"name": "subTypeElt$ebnf$1$subexpression$2", "symbols": ["typeElt", {"literal":";"}, "_"]}, - {"name": "subTypeElt$ebnf$1", "symbols": ["subTypeElt$ebnf$1", "subTypeElt$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subTypeElt", "symbols": [{"literal":"{"}, "_", "subTypeElt$ebnf$1", {"literal":"}"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subTypeElt$ebnf$2$subexpression$1", "symbols": ["typeElt", {"literal":";"}, "_"]}, - {"name": "subTypeElt$ebnf$2", "symbols": ["subTypeElt$ebnf$2$subexpression$1"]}, - {"name": "subTypeElt$ebnf$2$subexpression$2", "symbols": ["typeElt", {"literal":";"}, "_"]}, - {"name": "subTypeElt$ebnf$2", "symbols": ["subTypeElt$ebnf$2", "subTypeElt$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subTypeElt", "symbols": [{"literal":"("}, "_", "subTypeElt$ebnf$2", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, - {"name": "typeElt", "symbols": [(lexer.has("elt") ? {type: "elt"} : elt), "_", "typeData", "_", "typeData"], "postprocess": doubleArgKeywordToJson}, - {"name": "subInstruction$ebnf$1$subexpression$1", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, - {"name": "subInstruction$ebnf$1", "symbols": ["subInstruction$ebnf$1$subexpression$1"]}, - {"name": "subInstruction$ebnf$1$subexpression$2", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, - {"name": "subInstruction$ebnf$1", "symbols": ["subInstruction$ebnf$1", "subInstruction$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "subInstruction$ebnf$1", "instruction", "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": instructionSetToJsonNoSemi}, - {"name": "subInstruction$ebnf$2$subexpression$1", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, - {"name": "subInstruction$ebnf$2", "symbols": ["subInstruction$ebnf$2$subexpression$1"]}, - {"name": "subInstruction$ebnf$2$subexpression$2", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, - {"name": "subInstruction$ebnf$2", "symbols": ["subInstruction$ebnf$2", "subInstruction$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "subInstruction$ebnf$2", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": instructionSetToJsonSemi}, - {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "instruction", "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => d[2]}, - {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => ""}, - {"name": "instruction", "symbols": ["subInstruction"], "postprocess": id}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction)], "postprocess": keywordToJson}, - {"name": "instruction$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$1$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$1$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$1$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$1", "symbols": ["instruction$ebnf$1$subexpression$1"]}, - {"name": "instruction$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$1$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$1$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$1$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$1", "symbols": ["instruction$ebnf$1", "instruction$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$1"], "postprocess": keywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "subInstruction"], "postprocess": singleArgInstrKeywordToJson}, - {"name": "instruction$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$2$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$2$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$2$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$2", "symbols": ["instruction$ebnf$2$subexpression$1"]}, - {"name": "instruction$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$2$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$2$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$2$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$2", "symbols": ["instruction$ebnf$2", "instruction$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$2", "_", "subInstruction"], "postprocess": singleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "type"], "postprocess": singleArgKeywordToJson}, - {"name": "instruction$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$3$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$3$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$3$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$3", "symbols": ["instruction$ebnf$3$subexpression$1"]}, - {"name": "instruction$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$3$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$3$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$3$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$3", "symbols": ["instruction$ebnf$3", "instruction$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$3", "_", "type"], "postprocess": singleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "data"], "postprocess": singleArgKeywordToJson}, - {"name": "instruction$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$4$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$4$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$4$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$4", "symbols": ["instruction$ebnf$4$subexpression$1"]}, - {"name": "instruction$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$4$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$4$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$4$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$4", "symbols": ["instruction$ebnf$4", "instruction$ebnf$4$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$4", "_", "data"], "postprocess": singleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "type", "_", "type", "_", "subInstruction"], "postprocess": tripleArgKeyWordToJson}, - {"name": "instruction$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$5$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$5$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$5$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$5", "symbols": ["instruction$ebnf$5$subexpression$1"]}, - {"name": "instruction$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$5$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$5$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$5$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$5", "symbols": ["instruction$ebnf$5", "instruction$ebnf$5$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$5", "_", "type", "_", "type", "_", "subInstruction"], "postprocess": tripleArgTypeKeyWordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "subInstruction", "_", "subInstruction"], "postprocess": doubleArgInstrKeywordToJson}, - {"name": "instruction$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$6$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$6$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$6$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$6", "symbols": ["instruction$ebnf$6$subexpression$1"]}, - {"name": "instruction$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$6$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$6$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$6$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$6", "symbols": ["instruction$ebnf$6", "instruction$ebnf$6$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$6", "_", "subInstruction", "_", "subInstruction"], "postprocess": doubleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "type", "_", "type"], "postprocess": doubleArgKeywordToJson}, - {"name": "instruction$ebnf$7$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$7$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$7$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$7$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$7$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$7$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$7", "symbols": ["instruction$ebnf$7$subexpression$1"]}, - {"name": "instruction$ebnf$7$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$7$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$7$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$7$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$7$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$7$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$7", "symbols": ["instruction$ebnf$7", "instruction$ebnf$7$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$7", "_", "type", "_", "type"], "postprocess": doubleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [{"literal":"PUSH"}, "_", "type", "_", "data"], "postprocess": doubleArgKeywordToJson}, - {"name": "instruction$ebnf$8$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$8$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "instruction$ebnf$8$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$8$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$8$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$8", "symbols": ["instruction$ebnf$8$subexpression$1"]}, - {"name": "instruction$ebnf$8$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$8$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "instruction$ebnf$8$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$8$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$8$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$8", "symbols": ["instruction$ebnf$8", "instruction$ebnf$8$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [{"literal":"PUSH"}, "instruction$ebnf$8", "_", "type", "_", "data"], "postprocess": pushWithAnnotsToJson}, - {"name": "instruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => ""}, - {"name": "data", "symbols": [(lexer.has("data") ? {type: "data"} : data)], "postprocess": keywordToJson}, - {"name": "data", "symbols": [(lexer.has("data") ? {type: "data"} : data), "_", "data"], "postprocess": singleArgKeywordToJson}, - {"name": "data", "symbols": [(lexer.has("data") ? {type: "data"} : data), "_", "data", "_", "data"], "postprocess": doubleArgKeywordToJson}, - {"name": "data", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("data") ? {type: "data"} : data), "_", "data", "_", "data", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgKeywordWithParenToJson}, - {"name": "data", "symbols": ["subData"], "postprocess": id}, - {"name": "data", "symbols": ["subElt"], "postprocess": id}, - {"name": "data", "symbols": [(lexer.has("number") ? {type: "number"} : number)], "postprocess": intToJson}, - {"name": "data", "symbols": [(lexer.has("string") ? {type: "string"} : string)], "postprocess": stringToJson}, - {"name": "data", "symbols": [(lexer.has("word") ? {type: "word"} : word)], "postprocess": stringToJson}, - {"name": "subData$ebnf$1$subexpression$1", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subData$ebnf$1", "symbols": ["subData$ebnf$1$subexpression$1"]}, - {"name": "subData$ebnf$1$subexpression$2", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subData$ebnf$1", "symbols": ["subData$ebnf$1", "subData$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subData", "symbols": [{"literal":"{"}, "_", "subData$ebnf$1", {"literal":"}"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subData$ebnf$2$subexpression$1", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subData$ebnf$2", "symbols": ["subData$ebnf$2$subexpression$1"]}, - {"name": "subData$ebnf$2$subexpression$2", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subData$ebnf$2", "symbols": ["subData$ebnf$2", "subData$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subData", "symbols": [{"literal":"("}, "_", "subData$ebnf$2", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subElt$ebnf$1$subexpression$1", "symbols": ["elt", {"literal":";"}, "_"]}, - {"name": "subElt$ebnf$1", "symbols": ["subElt$ebnf$1$subexpression$1"]}, - {"name": "subElt$ebnf$1$subexpression$2", "symbols": ["elt", {"literal":";"}, "_"]}, - {"name": "subElt$ebnf$1", "symbols": ["subElt$ebnf$1", "subElt$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subElt", "symbols": [{"literal":"{"}, "_", "subElt$ebnf$1", {"literal":"}"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subElt$ebnf$2$subexpression$1", "symbols": ["elt", {"literal":";"}, "_"]}, - {"name": "subElt$ebnf$2", "symbols": ["subElt$ebnf$2$subexpression$1"]}, - {"name": "subElt$ebnf$2$subexpression$2", "symbols": ["elt", {"literal":";"}, "_"]}, - {"name": "subElt$ebnf$2", "symbols": ["subElt$ebnf$2", "subElt$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subElt", "symbols": [{"literal":"("}, "_", "subElt$ebnf$2", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, - {"name": "elt", "symbols": [(lexer.has("elt") ? {type: "elt"} : elt), "_", "data", "_", "data"], "postprocess": doubleArgKeywordToJson}, - {"name": "_$ebnf$1", "symbols": []}, - {"name": "_$ebnf$1", "symbols": ["_$ebnf$1", /[\s]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "_", "symbols": ["_$ebnf$1"]}, - {"name": "semicolons", "symbols": []}, - {"name": "semicolons", "symbols": ["semicolons", {"literal":";"}]} -] - , ParserStart: "main" -} -if (typeof module !== 'undefined'&& typeof module.exports !== 'undefined') { - module.exports = grammar; -} else { - window.grammar = grammar; -} -})(); diff --git a/dist/identity/tezos/TezosFileWallet.d.ts b/dist/identity/tezos/TezosFileWallet.d.ts deleted file mode 100644 index ca968e3e..00000000 --- a/dist/identity/tezos/TezosFileWallet.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Wallet } from "../../types/wallet/Wallet"; -export declare namespace TezosFileWallet { - function saveWallet(filename: string, wallet: Wallet, passphrase: string): Promise; - function loadWallet(filename: string, passphrase: string): Promise; - function createWallet(filename: string, password: string): Promise; -} diff --git a/dist/identity/tezos/TezosFileWallet.js b/dist/identity/tezos/TezosFileWallet.js deleted file mode 100644 index 0b905bf9..00000000 --- a/dist/identity/tezos/TezosFileWallet.js +++ /dev/null @@ -1,77 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __importStar(require("fs")); -const CryptoUtils_1 = require("../../utils/CryptoUtils"); -const TezosMessageUtil_1 = require("../../chain/tezos/TezosMessageUtil"); -var TezosFileWallet; -(function (TezosFileWallet) { - function saveWallet(filename, wallet, passphrase) { - return __awaiter(this, void 0, void 0, function* () { - const keys = JSON.stringify(wallet.identities); - const salt = yield CryptoUtils_1.CryptoUtils.generateSaltForPwHash(); - const encryptedKeys = yield CryptoUtils_1.CryptoUtils.encryptMessage(keys, passphrase, salt); - const encryptedWallet = { - version: '1', - salt: TezosMessageUtil_1.TezosMessageUtils.readBufferWithHint(salt, ''), - ciphertext: TezosMessageUtil_1.TezosMessageUtils.readBufferWithHint(encryptedKeys, ''), - kdf: 'Argon2' - }; - const p = new Promise((resolve, reject) => { - fs.writeFile(filename, JSON.stringify(encryptedWallet), err => { - if (err) { - reject(err); - return; - } - resolve(); - }); - }); - yield p; - return loadWallet(filename, passphrase); - }); - } - TezosFileWallet.saveWallet = saveWallet; - function loadWallet(filename, passphrase) { - return __awaiter(this, void 0, void 0, function* () { - const p = new Promise((resolve, reject) => { - fs.readFile(filename, (err, data) => { - if (err) { - reject(err); - return; - } - const encryptedWallet = JSON.parse(data.toString()); - resolve(encryptedWallet); - }); - }); - const ew = yield p; - const encryptedKeys = TezosMessageUtil_1.TezosMessageUtils.writeBufferWithHint(ew.ciphertext); - const salt = TezosMessageUtil_1.TezosMessageUtils.writeBufferWithHint(ew.salt); - const keys = JSON.parse(yield CryptoUtils_1.CryptoUtils.decryptMessage(encryptedKeys, passphrase, salt)); - return { identities: keys }; - }); - } - TezosFileWallet.loadWallet = loadWallet; - function createWallet(filename, password) { - return __awaiter(this, void 0, void 0, function* () { - const wallet = { identities: [] }; - yield saveWallet(filename, wallet, password); - return wallet; - }); - } - TezosFileWallet.createWallet = createWallet; -})(TezosFileWallet = exports.TezosFileWallet || (exports.TezosFileWallet = {})); -//# sourceMappingURL=TezosFileWallet.js.map \ No newline at end of file diff --git a/dist/identity/tezos/TezosFileWallet.js.map b/dist/identity/tezos/TezosFileWallet.js.map deleted file mode 100644 index 5d2c5f43..00000000 --- a/dist/identity/tezos/TezosFileWallet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosFileWallet.js","sourceRoot":"","sources":["../../../src/identity/tezos/TezosFileWallet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAIzB,yDAAoD;AACpD,yEAAqE;AAKrE,IAAiB,eAAe,CAmE/B;AAnED,WAAiB,eAAe;IAS5B,SAAsB,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,UAAkB;;YACjF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,yBAAW,CAAC,qBAAqB,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,MAAM,yBAAW,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YAE/E,MAAM,eAAe,GAA8B;gBAC/C,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,oCAAiB,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpD,UAAU,EAAE,oCAAiB,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,CAAC;gBACnE,GAAG,EAAE,QAAQ;aAChB,CAAC;YAEF,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,EAAE;oBAC1D,IAAI,GAAG,EAAE;wBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;wBAAC,OAAO;qBAAE;oBACjC,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,CAAC;YACR,OAAO,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC;KAAA;IApBqB,0BAAU,aAoB/B,CAAA;IASD,SAAsB,UAAU,CAAC,QAAgB,EAAE,UAAkB;;YACjE,MAAM,CAAC,GAAG,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBAChC,IAAI,GAAG,EAAE;wBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;wBAAC,OAAO;qBAAE;oBACjC,MAAM,eAAe,GAA8B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAA8B,CAAC;oBAC5G,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;YACnB,MAAM,aAAa,GAAG,oCAAiB,CAAC,mBAAmB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAC3E,MAAM,IAAI,GAAG,oCAAiB,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,yBAAW,CAAC,cAAc,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,CAAe,CAAC;YAEzG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAChC,CAAC;KAAA;IAfqB,0BAAU,aAe/B,CAAA;IAQD,SAAsB,YAAY,CAAC,QAAgB,EAAE,QAAgB;;YACjE,MAAM,MAAM,GAAW,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;YAC1C,MAAM,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAE7C,OAAO,MAAM,CAAA;QACjB,CAAC;KAAA;IALqB,4BAAY,eAKjC,CAAA;AACL,CAAC,EAnEgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAmE/B"} \ No newline at end of file diff --git a/dist/identity/tezos/TezosLedgerWallet.d.ts b/dist/identity/tezos/TezosLedgerWallet.d.ts deleted file mode 100644 index 3868cde7..00000000 --- a/dist/identity/tezos/TezosLedgerWallet.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// -import { HardwareDeviceType } from "../../types/wallet/HardwareDeviceType"; -import { KeyStore } from "../../types/wallet/KeyStore"; -export declare namespace TezosLedgerWallet { - function unlockAddress(deviceType: HardwareDeviceType, derivationPath: string): Promise; - function getTezosPublicKey(derivationPath: string): Promise; - function signTezosOperation(derivationPath: string, watermarkedOpInHex: string): Promise; - function initLedgerTransport(): void; -} diff --git a/dist/identity/tezos/TezosLedgerWallet.js b/dist/identity/tezos/TezosLedgerWallet.js deleted file mode 100644 index d3cf5303..00000000 --- a/dist/identity/tezos/TezosLedgerWallet.js +++ /dev/null @@ -1,68 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -let Transport = require("@ledgerhq/hw-transport-node-hid").default; -let App = require("basil-tezos-ledger").default; -const TezosMessageUtil_1 = require("../../chain/tezos/TezosMessageUtil"); -const HardwareDeviceType_1 = require("../../types/wallet/HardwareDeviceType"); -const KeyStore_1 = require("../../types/wallet/KeyStore"); -class TransportInstance { - static getInstance() { - return __awaiter(this, void 0, void 0, function* () { - if (this.transport === null) { - this.transport = yield Transport.create(); - } - return this.transport; - }); - } -} -TransportInstance.transport = null; -var TezosLedgerWallet; -(function (TezosLedgerWallet) { - function unlockAddress(deviceType, derivationPath) { - return __awaiter(this, void 0, void 0, function* () { - if (deviceType !== HardwareDeviceType_1.HardwareDeviceType.LedgerNanoS) { - throw new Error("Unsupported hardware device"); - } - const hexEncodedPublicKey = yield getTezosPublicKey(derivationPath); - const publicKeyBytes = Buffer.from(hexEncodedPublicKey, 'hex').slice(1); - const publicKey = TezosMessageUtil_1.TezosMessageUtils.readKeyWithHint(publicKeyBytes, "edpk"); - const publicKeyHash = TezosMessageUtil_1.TezosMessageUtils.computeKeyHash(publicKeyBytes, 'tz1'); - return { publicKey: publicKey, privateKey: '', publicKeyHash: publicKeyHash, seed: '', storeType: KeyStore_1.StoreType.Hardware }; - }); - } - TezosLedgerWallet.unlockAddress = unlockAddress; - function getTezosPublicKey(derivationPath) { - return __awaiter(this, void 0, void 0, function* () { - const transport = yield TransportInstance.getInstance(); - const xtz = new App(transport); - const result = yield xtz.getAddress(derivationPath, true); - const hexEncodedPublicKey = result.publicKey; - return hexEncodedPublicKey; - }); - } - TezosLedgerWallet.getTezosPublicKey = getTezosPublicKey; - function signTezosOperation(derivationPath, watermarkedOpInHex) { - return __awaiter(this, void 0, void 0, function* () { - const transport = yield TransportInstance.getInstance(); - const xtz = new App(transport); - const result = yield xtz.signOperation(derivationPath, watermarkedOpInHex); - const hexEncodedSignature = result.signature; - const signatureBytes = Buffer.from(hexEncodedSignature, 'hex'); - return signatureBytes; - }); - } - TezosLedgerWallet.signTezosOperation = signTezosOperation; - function initLedgerTransport() { - TransportInstance.transport = null; - } - TezosLedgerWallet.initLedgerTransport = initLedgerTransport; -})(TezosLedgerWallet = exports.TezosLedgerWallet || (exports.TezosLedgerWallet = {})); -//# sourceMappingURL=TezosLedgerWallet.js.map \ No newline at end of file diff --git a/dist/identity/tezos/TezosLedgerWallet.js.map b/dist/identity/tezos/TezosLedgerWallet.js.map deleted file mode 100644 index 3e2e7dc7..00000000 --- a/dist/identity/tezos/TezosLedgerWallet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosLedgerWallet.js","sourceRoot":"","sources":["../../../src/identity/tezos/TezosLedgerWallet.ts"],"names":[],"mappings":";;;;;;;;;;AAGA,IAAI,SAAS,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC,OAAO,CAAC;AACnE,IAAI,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;AAEhD,yEAAqE;AACrE,8EAAyE;AACzE,0DAAgE;AAKhE,MAAM,iBAAiB;IAEnB,MAAM,CAAO,WAAW;;YACpB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;aAC7C;YACD,OAAO,IAAI,CAAC,SAAS,CAAA;QACzB,CAAC;KAAA;;AANM,2BAAS,GAAG,IAAI,CAAC;AAS5B,IAAiB,iBAAiB,CAgDjC;AAhDD,WAAiB,iBAAiB;IAC9B,SAAsB,aAAa,CAAC,UAA8B,EAAE,cAAsB;;YACtF,IAAI,UAAU,KAAK,uCAAkB,CAAC,WAAW,EAAE;gBAC/C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAClD;YAED,MAAM,mBAAmB,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAEpE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,SAAS,GAAG,oCAAiB,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAC5E,MAAM,aAAa,GAAG,oCAAiB,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAE9E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,oBAAS,CAAC,QAAQ,EAAE,CAAC;QAC3H,CAAC;KAAA;IAZqB,+BAAa,gBAYlC,CAAA;IAOD,SAAsB,iBAAiB,CAAC,cAAsB;;YAC1D,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC1D,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC;YAE7C,OAAO,mBAAmB,CAAC;QAC/B,CAAC;KAAA;IAPqB,mCAAiB,oBAOtC,CAAA;IAQD,SAAsB,kBAAkB,CAAC,cAAsB,EAAE,kBAA0B;;YACvF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAC3E,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC;YAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAE/D,OAAO,cAAc,CAAC;QAC1B,CAAC;KAAA;IARqB,oCAAkB,qBAQvC,CAAA;IAED,SAAgB,mBAAmB;QAC/B,iBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC;IACvC,CAAC;IAFe,qCAAmB,sBAElC,CAAA;AACL,CAAC,EAhDgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAgDjC"} \ No newline at end of file diff --git a/dist/identity/tezos/TezosWalletUtil.d.ts b/dist/identity/tezos/TezosWalletUtil.d.ts deleted file mode 100644 index 06ee881a..00000000 --- a/dist/identity/tezos/TezosWalletUtil.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { KeyStore, StoreType } from '../../types/wallet/KeyStore'; -export declare namespace TezosWalletUtil { - function unlockFundraiserIdentity(mnemonic: string, email: string, password: string, pkh: string): Promise; - function generateMnemonic(): string; - function unlockIdentityWithMnemonic(mnemonic: string, passphrase: string): Promise; - function getKeysFromMnemonicAndPassphrase(mnemonic: string, passphrase: string, storeType: StoreType, pkh?: string): Promise; -} diff --git a/dist/identity/tezos/TezosWalletUtil.js b/dist/identity/tezos/TezosWalletUtil.js deleted file mode 100644 index cae13cbb..00000000 --- a/dist/identity/tezos/TezosWalletUtil.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const bip39 = __importStar(require("bip39")); -const TezosMessageUtil_1 = require("../../chain/tezos/TezosMessageUtil"); -const KeyStore_1 = require("../../types/wallet/KeyStore"); -const CryptoUtils_1 = require("../../utils/CryptoUtils"); -var TezosWalletUtil; -(function (TezosWalletUtil) { - function unlockFundraiserIdentity(mnemonic, email, password, pkh) { - return __awaiter(this, void 0, void 0, function* () { - return yield getKeysFromMnemonicAndPassphrase(mnemonic, email + password, KeyStore_1.StoreType.Fundraiser, pkh); - }); - } - TezosWalletUtil.unlockFundraiserIdentity = unlockFundraiserIdentity; - function generateMnemonic() { - return bip39.generateMnemonic(160); - } - TezosWalletUtil.generateMnemonic = generateMnemonic; - function unlockIdentityWithMnemonic(mnemonic, passphrase) { - return __awaiter(this, void 0, void 0, function* () { - return yield getKeysFromMnemonicAndPassphrase(mnemonic, passphrase, KeyStore_1.StoreType.Mnemonic); - }); - } - TezosWalletUtil.unlockIdentityWithMnemonic = unlockIdentityWithMnemonic; - function getKeysFromMnemonicAndPassphrase(mnemonic, passphrase, storeType, pkh) { - return __awaiter(this, void 0, void 0, function* () { - if (mnemonic.split(' ').length !== 15) { - throw new Error('The mnemonic should be 15 words.'); - } - if (!bip39.validateMnemonic(mnemonic)) { - throw new Error('The given mnemonic could not be validated.'); - } - const seed = (yield bip39.mnemonicToSeed(mnemonic, passphrase)).slice(0, 32); - const keys = yield CryptoUtils_1.CryptoUtils.generateKeys(seed); - const privateKey = TezosMessageUtil_1.TezosMessageUtils.readKeyWithHint(keys.privateKey, 'edsk'); - const publicKey = TezosMessageUtil_1.TezosMessageUtils.readKeyWithHint(keys.publicKey, 'edpk'); - const publicKeyHash = TezosMessageUtil_1.TezosMessageUtils.computeKeyHash(keys.publicKey, 'tz1'); - if (!!pkh && publicKeyHash !== pkh) { - throw new Error('The given mnemonic and passphrase do not correspond to the applied public key hash'); - } - return { publicKey, privateKey, publicKeyHash, seed: '', storeType }; - }); - } - TezosWalletUtil.getKeysFromMnemonicAndPassphrase = getKeysFromMnemonicAndPassphrase; -})(TezosWalletUtil = exports.TezosWalletUtil || (exports.TezosWalletUtil = {})); -//# sourceMappingURL=TezosWalletUtil.js.map \ No newline at end of file diff --git a/dist/identity/tezos/TezosWalletUtil.js.map b/dist/identity/tezos/TezosWalletUtil.js.map deleted file mode 100644 index ec8edd45..00000000 --- a/dist/identity/tezos/TezosWalletUtil.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosWalletUtil.js","sourceRoot":"","sources":["../../../src/identity/tezos/TezosWalletUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAE/B,yEAAqE;AACrE,0DAAgE;AAChE,yDAAmD;AAEnD,IAAiB,eAAe,CA0D/B;AA1DD,WAAiB,eAAe;IAY5B,SAAsB,wBAAwB,CAAC,QAAgB,EAAE,KAAa,EAAE,QAAgB,EAAE,GAAW;;YACzG,OAAO,MAAM,gCAAgC,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,EAAE,oBAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACzG,CAAC;KAAA;IAFqB,wCAAwB,2BAE7C,CAAA;IAKD,SAAgB,gBAAgB;QAC5B,OAAO,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACtC,CAAC;IAFe,gCAAgB,mBAE/B,CAAA;IASD,SAAsB,0BAA0B,CAAC,QAAgB,EAAE,UAAkB;;YACjF,OAAO,MAAM,gCAAgC,CAAC,QAAQ,EAAE,UAAU,EAAE,oBAAS,CAAC,QAAQ,CAAC,CAAC;QAC5F,CAAC;KAAA;IAFqB,0CAA0B,6BAE/C,CAAA;IAYD,SAAsB,gCAAgC,CAAC,QAAgB,EAAE,UAAkB,EAAE,SAAoB,EAAE,GAAY;;YAC3H,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,EAAE,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;aAAE;YAC/F,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;aAAE;YAEzG,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7E,MAAM,IAAI,GAAG,MAAM,yBAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,oCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC9E,MAAM,SAAS,GAAG,oCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC5E,MAAM,aAAa,GAAG,oCAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAE9E,IAAI,CAAC,CAAC,GAAG,IAAI,aAAa,KAAK,GAAG,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;aAAE;YAE9I,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;QACzE,CAAC;KAAA;IAbqB,gDAAgC,mCAarD,CAAA;AACL,CAAC,EA1DgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QA0D/B"} \ No newline at end of file diff --git a/dist/index-web.d.ts b/dist/index-web.d.ts deleted file mode 100644 index 2c24866c..00000000 --- a/dist/index-web.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export * from './chain/tezos/TezosLanguageUtil'; -export * from './chain/tezos/TezosMessageUtil'; -export * from './chain/tezos/TezosNodeReader'; -export * from './chain/tezos/TezosNodeWriter'; -export * from './identity/tezos/TezosWalletUtil'; -export * from './identity/tezos/TezosFileWallet'; -export * from './reporting/tezos/TezosConseilClient'; -export * from './reporting/ConseilDataClient'; -export * from './reporting/ConseilMetadataClient'; -export * from './reporting/ConseilQueryBuilder'; -export * from './types/conseil/QueryTypes'; -export * from './types/wallet/KeyStore'; -export * from './utils/CryptoUtils'; diff --git a/dist/index-web.js b/dist/index-web.js deleted file mode 100644 index ae8a5873..00000000 --- a/dist/index-web.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const FetchSelector_1 = __importDefault(require("./utils/FetchSelector")); -FetchSelector_1.default.setFetch(window.fetch); -__export(require("./chain/tezos/TezosLanguageUtil")); -__export(require("./chain/tezos/TezosMessageUtil")); -__export(require("./chain/tezos/TezosNodeReader")); -__export(require("./chain/tezos/TezosNodeWriter")); -__export(require("./identity/tezos/TezosWalletUtil")); -__export(require("./identity/tezos/TezosFileWallet")); -__export(require("./reporting/tezos/TezosConseilClient")); -__export(require("./reporting/ConseilDataClient")); -__export(require("./reporting/ConseilMetadataClient")); -__export(require("./reporting/ConseilQueryBuilder")); -__export(require("./types/conseil/QueryTypes")); -__export(require("./types/wallet/KeyStore")); -__export(require("./utils/CryptoUtils")); -//# sourceMappingURL=index-web.js.map \ No newline at end of file diff --git a/dist/index-web.js.map b/dist/index-web.js.map deleted file mode 100644 index 3f2d8711..00000000 --- a/dist/index-web.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-web.js","sourceRoot":"","sources":["../src/index-web.ts"],"names":[],"mappings":";;;;;;;;AAAA,0EAAkD;AAElD,uBAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAErC,qDAAgD;AAChD,oDAA+C;AAC/C,mDAA8C;AAC9C,mDAA8C;AAE9C,sDAAiD;AACjD,sDAAiD;AAEjD,0DAAqD;AAErD,mDAA8C;AAC9C,uDAAkD;AAClD,qDAAgD;AAEhD,gDAA2C;AAC3C,6CAAwC;AAExC,yCAAoC"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 108e7e44..00000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export * from './chain/tezos/TezosLanguageUtil'; -export * from './chain/tezos/TezosMessageUtil'; -export * from "./chain/tezos/TezosNodeReader"; -export * from "./chain/tezos/TezosNodeWriter"; -export * from "./identity/tezos/TezosFileWallet"; -export * from "./identity/tezos/TezosLedgerWallet"; -export * from "./identity/tezos/TezosWalletUtil"; -export * from "./reporting/tezos/TezosConseilClient"; -export * from './reporting/ConseilDataClient'; -export * from './reporting/ConseilMetadataClient'; -export * from './reporting/ConseilQueryBuilder'; -export * from './types/conseil/QueryTypes'; -export * from './types/wallet/KeyStore'; -export * from './utils/CryptoUtils'; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 5c574450..00000000 --- a/dist/index.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const node_fetch_1 = __importDefault(require("node-fetch")); -const FetchSelector_1 = __importDefault(require("./utils/FetchSelector")); -const DeviceSelector_1 = __importDefault(require("./utils/DeviceSelector")); -const TezosLedgerWallet_1 = require("./identity/tezos/TezosLedgerWallet"); -FetchSelector_1.default.setFetch(node_fetch_1.default); -DeviceSelector_1.default.setLedgerUtils(TezosLedgerWallet_1.TezosLedgerWallet); -__export(require("./chain/tezos/TezosLanguageUtil")); -__export(require("./chain/tezos/TezosMessageUtil")); -__export(require("./chain/tezos/TezosNodeReader")); -__export(require("./chain/tezos/TezosNodeWriter")); -__export(require("./identity/tezos/TezosFileWallet")); -__export(require("./identity/tezos/TezosLedgerWallet")); -__export(require("./identity/tezos/TezosWalletUtil")); -__export(require("./reporting/tezos/TezosConseilClient")); -__export(require("./reporting/ConseilDataClient")); -__export(require("./reporting/ConseilMetadataClient")); -__export(require("./reporting/ConseilQueryBuilder")); -__export(require("./types/conseil/QueryTypes")); -__export(require("./types/wallet/KeyStore")); -__export(require("./utils/CryptoUtils")); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index 936b1f67..00000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,4DAA+B;AAC/B,0EAAkD;AAClD,4EAAoD;AACpD,0EAAuE;AAEvE,uBAAa,CAAC,QAAQ,CAAC,oBAAK,CAAC,CAAC;AAC9B,wBAAc,CAAC,cAAc,CAAC,qCAAiB,CAAC,CAAC;AAEjD,qDAAgD;AAChD,oDAA+C;AAC/C,mDAA8C;AAC9C,mDAA8C;AAE9C,sDAAiD;AACjD,wDAAmD;AACnD,sDAAiD;AAEjD,0DAAqD;AAErD,mDAA8C;AAC9C,uDAAkD;AAClD,qDAAgD;AAEhD,gDAA2C;AAC3C,6CAAwC;AAExC,yCAAoC"} \ No newline at end of file diff --git a/dist/reporting/ConseilDataClient.d.ts b/dist/reporting/ConseilDataClient.d.ts deleted file mode 100644 index 3bb94dcf..00000000 --- a/dist/reporting/ConseilDataClient.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ConseilServerInfo, ConseilQuery } from '../types/conseil/QueryTypes'; -export declare namespace ConseilDataClient { - function executeEntityQuery(serverInfo: ConseilServerInfo, platform: string, network: string, entity: string, query: ConseilQuery): Promise; -} diff --git a/dist/reporting/ConseilDataClient.js b/dist/reporting/ConseilDataClient.js deleted file mode 100644 index 797e1b45..00000000 --- a/dist/reporting/ConseilDataClient.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ErrorTypes_1 = require("../types/conseil/ErrorTypes"); -const FetchSelector_1 = __importDefault(require("../utils/FetchSelector")); -const fetch = FetchSelector_1.default.getFetch(); -var ConseilDataClient; -(function (ConseilDataClient) { - function executeEntityQuery(serverInfo, platform, network, entity, query) { - return __awaiter(this, void 0, void 0, function* () { - const url = `${serverInfo.url}/v2/data/${platform}/${network}/${entity}`; - return fetch(url, { - method: 'post', - headers: { 'apiKey': serverInfo.apiKey, 'Content-Type': 'application/json' }, - body: JSON.stringify(query) - }) - .then(response => { - if (!response.ok) { - throw new ErrorTypes_1.ConseilRequestError(response.status, response.statusText, url, query); - } - return response; - }) - .then(response => { - const contentType = response.headers.get('content-type').toLowerCase(); - return contentType.includes('application/json') ? response.json() : response.text(); - }); - }); - } - ConseilDataClient.executeEntityQuery = executeEntityQuery; -})(ConseilDataClient = exports.ConseilDataClient || (exports.ConseilDataClient = {})); -//# sourceMappingURL=ConseilDataClient.js.map \ No newline at end of file diff --git a/dist/reporting/ConseilDataClient.js.map b/dist/reporting/ConseilDataClient.js.map deleted file mode 100644 index 504d2a95..00000000 --- a/dist/reporting/ConseilDataClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConseilDataClient.js","sourceRoot":"","sources":["../../src/reporting/ConseilDataClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,4DAAgE;AAChE,2EAAmD;AAEnD,MAAM,KAAK,GAAG,uBAAa,CAAC,QAAQ,EAAE,CAAC;AAKvC,IAAiB,iBAAiB,CA2BjC;AA3BD,WAAiB,iBAAiB;IAU9B,SAAsB,kBAAkB,CAAC,UAA6B,EAAE,QAAgB,EAAE,OAAe,EAAE,MAAc,EAAE,KAAmB;;YAC1I,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,YAAY,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAA;YAExE,OAAO,KAAK,CAAC,GAAG,EAAE;gBACd,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC5E,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC9B,CAAC;iBACD,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACb,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAAE,MAAM,IAAI,gCAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;iBAAE;gBACtG,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC;iBACD,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACb,MAAM,WAAW,GAAW,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC/E,OAAO,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxF,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAhBqB,oCAAkB,qBAgBvC,CAAA;AACL,CAAC,EA3BgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QA2BjC"} \ No newline at end of file diff --git a/dist/reporting/ConseilMetadataClient.d.ts b/dist/reporting/ConseilMetadataClient.d.ts deleted file mode 100644 index fcccec2b..00000000 --- a/dist/reporting/ConseilMetadataClient.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ConseilServerInfo } from '../types/conseil/QueryTypes'; -import { PlatformDefinition, NetworkDefinition, EntityDefinition, AttributeDefinition } from '../types/conseil/MetadataTypes'; -export declare namespace ConseilMetadataClient { - function executeMetadataQuery(serverInfo: ConseilServerInfo, route: string): Promise; - function getPlatforms(serverInfo: ConseilServerInfo): Promise; - function getNetworks(serverInfo: ConseilServerInfo, platform: string): Promise; - function getEntities(serverInfo: ConseilServerInfo, platform: string, network: string): Promise; - function getAttributes(serverInfo: ConseilServerInfo, platform: string, network: string, entity: string): Promise; - function getAttributeValues(serverInfo: ConseilServerInfo, platform: string, network: string, entity: string, attribute: string): Promise; - function getAttributeValuesForPrefix(serverInfo: ConseilServerInfo, platform: string, network: string, entity: string, attribute: string, prefix: string): Promise; -} diff --git a/dist/reporting/ConseilMetadataClient.js b/dist/reporting/ConseilMetadataClient.js deleted file mode 100644 index 0959abc0..00000000 --- a/dist/reporting/ConseilMetadataClient.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const FetchSelector_1 = __importDefault(require("../utils/FetchSelector")); -const fetch = FetchSelector_1.default.getFetch(); -var ConseilMetadataClient; -(function (ConseilMetadataClient) { - function executeMetadataQuery(serverInfo, route) { - return __awaiter(this, void 0, void 0, function* () { - return fetch(`${serverInfo.url}/v2/metadata/${route}`, { - method: 'GET', - headers: { 'apiKey': serverInfo.apiKey }, - }).then(response => response.json()); - }); - } - ConseilMetadataClient.executeMetadataQuery = executeMetadataQuery; - function getPlatforms(serverInfo) { - return __awaiter(this, void 0, void 0, function* () { - return executeMetadataQuery(serverInfo, 'platforms'); - }); - } - ConseilMetadataClient.getPlatforms = getPlatforms; - function getNetworks(serverInfo, platform) { - return __awaiter(this, void 0, void 0, function* () { - return executeMetadataQuery(serverInfo, `${platform}/networks`); - }); - } - ConseilMetadataClient.getNetworks = getNetworks; - function getEntities(serverInfo, platform, network) { - return __awaiter(this, void 0, void 0, function* () { - return executeMetadataQuery(serverInfo, `${platform}/${network}/entities`); - }); - } - ConseilMetadataClient.getEntities = getEntities; - function getAttributes(serverInfo, platform, network, entity) { - return __awaiter(this, void 0, void 0, function* () { - return executeMetadataQuery(serverInfo, `${platform}/${network}/${entity}/attributes`); - }); - } - ConseilMetadataClient.getAttributes = getAttributes; - function getAttributeValues(serverInfo, platform, network, entity, attribute) { - return __awaiter(this, void 0, void 0, function* () { - return executeMetadataQuery(serverInfo, `${platform}/${network}/${entity}/${attribute}`); - }); - } - ConseilMetadataClient.getAttributeValues = getAttributeValues; - function getAttributeValuesForPrefix(serverInfo, platform, network, entity, attribute, prefix) { - return __awaiter(this, void 0, void 0, function* () { - return executeMetadataQuery(serverInfo, `${platform}/${network}/${entity}/${attribute}/${encodeURIComponent(prefix)}`); - }); - } - ConseilMetadataClient.getAttributeValuesForPrefix = getAttributeValuesForPrefix; -})(ConseilMetadataClient = exports.ConseilMetadataClient || (exports.ConseilMetadataClient = {})); -//# sourceMappingURL=ConseilMetadataClient.js.map \ No newline at end of file diff --git a/dist/reporting/ConseilMetadataClient.js.map b/dist/reporting/ConseilMetadataClient.js.map deleted file mode 100644 index 233f3f32..00000000 --- a/dist/reporting/ConseilMetadataClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConseilMetadataClient.js","sourceRoot":"","sources":["../../src/reporting/ConseilMetadataClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAEA,2EAAmD;AAEnD,MAAM,KAAK,GAAG,uBAAa,CAAC,QAAQ,EAAE,CAAC;AAKvC,IAAiB,qBAAqB,CAsFrC;AAtFD,WAAiB,qBAAqB;IAClC,SAAsB,oBAAoB,CAAC,UAA6B,EAAE,KAAa;;YACnF,OAAO,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,gBAAgB,KAAK,EAAE,EAAE;gBACnD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE;aAC3C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;KAAA;IALqB,0CAAoB,uBAKzC,CAAA;IAOD,SAAsB,YAAY,CAAC,UAA6B;;YAC5D,OAAO,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACzD,CAAC;KAAA;IAFqB,kCAAY,eAEjC,CAAA;IAUD,SAAsB,WAAW,CAAC,UAA6B,EAAE,QAAgB;;YAC7E,OAAO,oBAAoB,CAAC,UAAU,EAAE,GAAG,QAAQ,WAAW,CAAC,CAAC;QACpE,CAAC;KAAA;IAFqB,iCAAW,cAEhC,CAAA;IAWD,SAAsB,WAAW,CAAC,UAA6B,EAAE,QAAgB,EAAE,OAAe;;YAC9F,OAAO,oBAAoB,CAAC,UAAU,EAAE,GAAG,QAAQ,IAAI,OAAO,WAAW,CAAC,CAAC;QAC/E,CAAC;KAAA;IAFqB,iCAAW,cAEhC,CAAA;IAYD,SAAsB,aAAa,CAAC,UAA6B,EAAE,QAAgB,EAAE,OAAe,EAAE,MAAc;;YAChH,OAAO,oBAAoB,CAAC,UAAU,EAAE,GAAG,QAAQ,IAAI,OAAO,IAAI,MAAM,aAAa,CAAC,CAAC;QAC3F,CAAC;KAAA;IAFqB,mCAAa,gBAElC,CAAA;IAaD,SAAsB,kBAAkB,CAAC,UAA6B,EAAE,QAAgB,EAAE,OAAe,EAAE,MAAc,EAAE,SAAiB;;YACxI,OAAO,oBAAoB,CAAC,UAAU,EAAE,GAAG,QAAQ,IAAI,OAAO,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QAC7F,CAAC;KAAA;IAFqB,wCAAkB,qBAEvC,CAAA;IAcD,SAAsB,2BAA2B,CAAC,UAA6B,EAAE,QAAgB,EAAE,OAAe,EAAE,MAAc,EAAE,SAAiB,EAAE,MAAc;;YACjK,OAAO,oBAAoB,CAAC,UAAU,EAAE,GAAG,QAAQ,IAAI,OAAO,IAAI,MAAM,IAAI,SAAS,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3H,CAAC;KAAA;IAFqB,iDAA2B,8BAEhD,CAAA;AACL,CAAC,EAtFgB,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAsFrC"} \ No newline at end of file diff --git a/dist/reporting/ConseilQueryBuilder.d.ts b/dist/reporting/ConseilQueryBuilder.d.ts deleted file mode 100644 index b04964bd..00000000 --- a/dist/reporting/ConseilQueryBuilder.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ConseilQuery, ConseilOperator, ConseilSortDirection, ConseilFunction, ConseilOutput } from "../types/conseil/QueryTypes"; -export declare namespace ConseilQueryBuilder { - function blankQuery(): ConseilQuery; - function addFields(query: ConseilQuery, ...fields: string[]): ConseilQuery; - function addPredicate(query: ConseilQuery, field: string, operation: ConseilOperator, values: any[], invert?: boolean): ConseilQuery; - function addOrdering(query: ConseilQuery, field: string, direction?: ConseilSortDirection): ConseilQuery; - function setLimit(query: ConseilQuery, limit: number): ConseilQuery; - function setOutputType(query: ConseilQuery, outputType: ConseilOutput): ConseilQuery; - function addAggregationFunction(query: ConseilQuery, field: string, aggregationFunction: ConseilFunction): ConseilQuery; -} diff --git a/dist/reporting/ConseilQueryBuilder.js b/dist/reporting/ConseilQueryBuilder.js deleted file mode 100644 index 4c9d666a..00000000 --- a/dist/reporting/ConseilQueryBuilder.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const QueryTypes_1 = require("../types/conseil/QueryTypes"); -var ConseilQueryBuilder; -(function (ConseilQueryBuilder) { - function blankQuery() { - return { - 'fields': [], - 'predicates': [], - 'orderBy': [], - 'limit': 100 - }; - } - ConseilQueryBuilder.blankQuery = blankQuery; - function addFields(query, ...fields) { - let q = Object.assign({}, query); - let fieldSet = new Set(query.fields); - fields.forEach(f => fieldSet.add(f)); - q.fields = Array.from(fieldSet.values()); - return q; - } - ConseilQueryBuilder.addFields = addFields; - function addPredicate(query, field, operation, values, invert = false) { - if (operation === QueryTypes_1.ConseilOperator.BETWEEN && values.length !== 2) { - throw new Error('BETWEEN operation requires a list of two values.'); - } - else if (operation === QueryTypes_1.ConseilOperator.IN && values.length < 2) { - throw new Error('IN operation requires a list of two or more values.'); - } - else if (values.length !== 1 && operation !== QueryTypes_1.ConseilOperator.IN && operation !== QueryTypes_1.ConseilOperator.BETWEEN) { - throw new Error(`invalid values list for ${operation}.`); - } - let q = Object.assign({}, query); - q.predicates.push({ field, operation, set: values, inverse: invert }); - return q; - } - ConseilQueryBuilder.addPredicate = addPredicate; - function addOrdering(query, field, direction = QueryTypes_1.ConseilSortDirection.ASC) { - let q = Object.assign({}, query); - q.orderBy.push({ field, direction }); - return q; - } - ConseilQueryBuilder.addOrdering = addOrdering; - function setLimit(query, limit) { - if (limit < 1) { - throw new Error('Limit cannot be less than one.'); - } - let q = Object.assign({}, query); - q.limit = limit; - return q; - } - ConseilQueryBuilder.setLimit = setLimit; - function setOutputType(query, outputType) { - let q = Object.assign({}, query); - q.output = outputType; - return q; - } - ConseilQueryBuilder.setOutputType = setOutputType; - function addAggregationFunction(query, field, aggregationFunction) { - if (!query.fields.includes(field)) { - throw new Error('Cannot apply an aggregation function on a field not being returned.'); - } - if (query.fields.length === 1) { - throw new Error('Cannot apply an aggregation function on the only field being returned.'); - } - let q = Object.assign({}, query); - q.aggregation = { 'field': field, 'function': aggregationFunction }; - return q; - } - ConseilQueryBuilder.addAggregationFunction = addAggregationFunction; -})(ConseilQueryBuilder = exports.ConseilQueryBuilder || (exports.ConseilQueryBuilder = {})); -//# sourceMappingURL=ConseilQueryBuilder.js.map \ No newline at end of file diff --git a/dist/reporting/ConseilQueryBuilder.js.map b/dist/reporting/ConseilQueryBuilder.js.map deleted file mode 100644 index 95f68cee..00000000 --- a/dist/reporting/ConseilQueryBuilder.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConseilQueryBuilder.js","sourceRoot":"","sources":["../../src/reporting/ConseilQueryBuilder.ts"],"names":[],"mappings":";;AAAA,4DAA+H;AAE/H,IAAiB,mBAAmB,CA8GnC;AA9GD,WAAiB,mBAAmB;IAIhC,SAAgB,UAAU;QACtB,OAAO;YACH,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,GAAG;SACf,CAAA;IACL,CAAC;IAPe,8BAAU,aAOzB,CAAA;IAQD,SAAgB,SAAS,CAAC,KAAmB,EAAE,GAAG,MAAgB;QAC9D,IAAI,CAAC,qBAAO,KAAK,CAAC,CAAC;QACnB,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzC,OAAO,CAAC,CAAC;IACb,CAAC;IAPe,6BAAS,YAOxB,CAAA;IAWD,SAAgB,YAAY,CAAC,KAAmB,EAAE,KAAa,EAAE,SAA0B,EAAE,MAAa,EAAE,SAAkB,KAAK;QAC/H,IAAI,SAAS,KAAK,4BAAe,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9D,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;aAAM,IAAI,SAAS,KAAK,4BAAe,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;SAC1E;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,KAAK,4BAAe,CAAC,EAAE,IAAI,SAAS,KAAK,4BAAe,CAAC,OAAO,EAAE;YACzG,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,GAAG,CAAC,CAAC;SAC5D;QAED,IAAI,CAAC,qBAAO,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtE,OAAO,CAAC,CAAC;IACb,CAAC;IAbe,gCAAY,eAa3B,CAAA;IASD,SAAgB,WAAW,CAAC,KAAmB,EAAE,KAAa,EAAE,YAAkC,iCAAoB,CAAC,GAAG;QAEtH,IAAI,CAAC,qBAAO,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAErC,OAAO,CAAC,CAAC;IACb,CAAC;IANe,+BAAW,cAM1B,CAAA;IAQD,SAAgB,QAAQ,CAAC,KAAmB,EAAE,KAAa;QACvD,IAAI,KAAK,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SAAE;QAErE,IAAI,CAAC,qBAAO,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QAEhB,OAAO,CAAC,CAAC;IACb,CAAC;IAPe,4BAAQ,WAOvB,CAAA;IAQD,SAAgB,aAAa,CAAC,KAAmB,EAAE,UAAyB;QACxE,IAAI,CAAC,qBAAO,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC;QAEtB,OAAO,CAAC,CAAC;IACb,CAAC;IALe,iCAAa,gBAK5B,CAAA;IAQD,SAAgB,sBAAsB,CAAC,KAAmB,EAAE,KAAa,EAAE,mBAAoC;QAC3G,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SAAE;QAC9H,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;SAAE;QAE7H,IAAI,CAAC,qBAAO,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC;QAEpE,OAAO,CAAC,CAAC;IACb,CAAC;IARe,0CAAsB,yBAQrC,CAAA;AACL,CAAC,EA9GgB,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QA8GnC"} \ No newline at end of file diff --git a/dist/reporting/tezos/TezosConseilClient.d.ts b/dist/reporting/tezos/TezosConseilClient.d.ts deleted file mode 100644 index d4af6e48..00000000 --- a/dist/reporting/tezos/TezosConseilClient.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ConseilQuery, ConseilServerInfo } from "../../types/conseil/QueryTypes"; -import { OperationKindType } from "../../types/tezos/TezosChainTypes"; -export declare namespace TezosConseilClient { - function getTezosEntityData(serverInfo: ConseilServerInfo, network: string, entity: string, query: ConseilQuery): Promise; - function getBlockHead(serverInfo: ConseilServerInfo, network: string): Promise; - function getBlock(serverInfo: ConseilServerInfo, network: string, hash: string): Promise; - function getAccount(serverInfo: ConseilServerInfo, network: string, accountID: string): Promise; - function getOperationGroup(serverInfo: ConseilServerInfo, network: string, operationGroupID: string): Promise; - function getBlocks(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise; - function getAccounts(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise; - function getOperationGroups(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise; - function getOperations(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise; - function getFeeStatistics(serverInfo: ConseilServerInfo, network: string, operationType: OperationKindType): Promise; - function getProposals(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise; - function getBakers(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise; - function getBallots(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise; -} diff --git a/dist/reporting/tezos/TezosConseilClient.js b/dist/reporting/tezos/TezosConseilClient.js deleted file mode 100644 index 11e1f3dd..00000000 --- a/dist/reporting/tezos/TezosConseilClient.js +++ /dev/null @@ -1,111 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ConseilQueryBuilder_1 = require("../ConseilQueryBuilder"); -const QueryTypes_1 = require("../../types/conseil/QueryTypes"); -const ConseilDataClient_1 = require("../ConseilDataClient"); -var TezosConseilClient; -(function (TezosConseilClient) { - const BLOCKS = 'blocks'; - const ACCOUNTS = 'accounts'; - const OPERATION_GROUPS = 'operation_groups'; - const OPERATIONS = 'operations'; - const FEES = 'fees'; - const PROPOSALS = 'proposals'; - const BAKERS = 'bakers'; - const BALLOTS = 'ballots'; - function getTezosEntityData(serverInfo, network, entity, query) { - return __awaiter(this, void 0, void 0, function* () { - return ConseilDataClient_1.ConseilDataClient.executeEntityQuery(serverInfo, 'tezos', network, entity, query); - }); - } - TezosConseilClient.getTezosEntityData = getTezosEntityData; - function getBlockHead(serverInfo, network) { - return __awaiter(this, void 0, void 0, function* () { - const query = ConseilQueryBuilder_1.ConseilQueryBuilder.setLimit(ConseilQueryBuilder_1.ConseilQueryBuilder.addOrdering(ConseilQueryBuilder_1.ConseilQueryBuilder.blankQuery(), 'level', QueryTypes_1.ConseilSortDirection.DESC), 1); - return getTezosEntityData(serverInfo, network, BLOCKS, query); - }); - } - TezosConseilClient.getBlockHead = getBlockHead; - function getBlock(serverInfo, network, hash) { - return __awaiter(this, void 0, void 0, function* () { - const query = ConseilQueryBuilder_1.ConseilQueryBuilder.setLimit(ConseilQueryBuilder_1.ConseilQueryBuilder.addPredicate(ConseilQueryBuilder_1.ConseilQueryBuilder.blankQuery(), 'hash', QueryTypes_1.ConseilOperator.EQ, [hash], false), 1); - return getTezosEntityData(serverInfo, network, BLOCKS, query); - }); - } - TezosConseilClient.getBlock = getBlock; - function getAccount(serverInfo, network, accountID) { - return __awaiter(this, void 0, void 0, function* () { - const query = ConseilQueryBuilder_1.ConseilQueryBuilder.setLimit(ConseilQueryBuilder_1.ConseilQueryBuilder.addPredicate(ConseilQueryBuilder_1.ConseilQueryBuilder.blankQuery(), 'account_id', QueryTypes_1.ConseilOperator.EQ, [accountID], false), 1); - return getTezosEntityData(serverInfo, network, ACCOUNTS, query); - }); - } - TezosConseilClient.getAccount = getAccount; - function getOperationGroup(serverInfo, network, operationGroupID) { - return __awaiter(this, void 0, void 0, function* () { - const query = ConseilQueryBuilder_1.ConseilQueryBuilder.setLimit(ConseilQueryBuilder_1.ConseilQueryBuilder.addPredicate(ConseilQueryBuilder_1.ConseilQueryBuilder.blankQuery(), 'operation_id', QueryTypes_1.ConseilOperator.EQ, [operationGroupID], false), 1); - return getTezosEntityData(serverInfo, network, OPERATION_GROUPS, query); - }); - } - TezosConseilClient.getOperationGroup = getOperationGroup; - function getBlocks(serverInfo, network, query) { - return __awaiter(this, void 0, void 0, function* () { - return getTezosEntityData(serverInfo, network, BLOCKS, query); - }); - } - TezosConseilClient.getBlocks = getBlocks; - function getAccounts(serverInfo, network, query) { - return __awaiter(this, void 0, void 0, function* () { - return getTezosEntityData(serverInfo, network, ACCOUNTS, query); - }); - } - TezosConseilClient.getAccounts = getAccounts; - function getOperationGroups(serverInfo, network, query) { - return __awaiter(this, void 0, void 0, function* () { - return getTezosEntityData(serverInfo, network, OPERATION_GROUPS, query); - }); - } - TezosConseilClient.getOperationGroups = getOperationGroups; - function getOperations(serverInfo, network, query) { - return __awaiter(this, void 0, void 0, function* () { - return getTezosEntityData(serverInfo, network, OPERATIONS, query); - }); - } - TezosConseilClient.getOperations = getOperations; - function getFeeStatistics(serverInfo, network, operationType) { - return __awaiter(this, void 0, void 0, function* () { - let query = ConseilQueryBuilder_1.ConseilQueryBuilder.blankQuery(); - query = ConseilQueryBuilder_1.ConseilQueryBuilder.addPredicate(query, 'kind', QueryTypes_1.ConseilOperator.EQ, [operationType]); - query = ConseilQueryBuilder_1.ConseilQueryBuilder.addOrdering(query, 'timestamp', QueryTypes_1.ConseilSortDirection.DESC); - query = ConseilQueryBuilder_1.ConseilQueryBuilder.setLimit(query, 1); - return getTezosEntityData(serverInfo, network, FEES, query); - }); - } - TezosConseilClient.getFeeStatistics = getFeeStatistics; - function getProposals(serverInfo, network, query) { - return __awaiter(this, void 0, void 0, function* () { - return getTezosEntityData(serverInfo, network, PROPOSALS, query); - }); - } - TezosConseilClient.getProposals = getProposals; - function getBakers(serverInfo, network, query) { - return __awaiter(this, void 0, void 0, function* () { - return getTezosEntityData(serverInfo, network, BAKERS, query); - }); - } - TezosConseilClient.getBakers = getBakers; - function getBallots(serverInfo, network, query) { - return __awaiter(this, void 0, void 0, function* () { - return getTezosEntityData(serverInfo, network, BALLOTS, query); - }); - } - TezosConseilClient.getBallots = getBallots; -})(TezosConseilClient = exports.TezosConseilClient || (exports.TezosConseilClient = {})); -//# sourceMappingURL=TezosConseilClient.js.map \ No newline at end of file diff --git a/dist/reporting/tezos/TezosConseilClient.js.map b/dist/reporting/tezos/TezosConseilClient.js.map deleted file mode 100644 index cde77e8d..00000000 --- a/dist/reporting/tezos/TezosConseilClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosConseilClient.js","sourceRoot":"","sources":["../../../src/reporting/tezos/TezosConseilClient.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,gEAA2D;AAC3D,+DAAqH;AACrH,4DAAuD;AAMvD,IAAiB,kBAAkB,CAwJlC;AAxJD,WAAiB,kBAAkB;IAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC;IACxB,MAAM,QAAQ,GAAG,UAAU,CAAC;IAC5B,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;IAC5C,MAAM,UAAU,GAAG,YAAY,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC;IACpB,MAAM,SAAS,GAAG,WAAW,CAAC;IAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC;IACxB,MAAM,OAAO,GAAG,SAAS,CAAC;IAU1B,SAAsB,kBAAkB,CAAC,UAA6B,EAAE,OAAe,EAAE,MAAc,EAAE,KAAmB;;YACxH,OAAO,qCAAiB,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7F,CAAC;KAAA;IAFqB,qCAAkB,qBAEvC,CAAA;IAQD,SAAsB,YAAY,CAAC,UAA6B,EAAE,OAAe;;YAC7E,MAAM,KAAK,GAAG,yCAAmB,CAAC,QAAQ,CAAC,yCAAmB,CAAC,WAAW,CAAC,yCAAmB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,iCAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAErJ,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;KAAA;IAJqB,+BAAY,eAIjC,CAAA;IASD,SAAsB,QAAQ,CAAC,UAA6B,EAAE,OAAe,EAAE,IAAY;;YACvF,MAAM,KAAK,GAAG,yCAAmB,CAAC,QAAQ,CAAC,yCAAmB,CAAC,YAAY,CAAC,yCAAmB,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,4BAAe,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAE7J,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;KAAA;IAJqB,2BAAQ,WAI7B,CAAA;IASD,SAAsB,UAAU,CAAC,UAA6B,EAAE,OAAe,EAAE,SAAiB;;YAC9F,MAAM,KAAK,GAAG,yCAAmB,CAAC,QAAQ,CAAC,yCAAmB,CAAC,YAAY,CAAC,yCAAmB,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,4BAAe,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAExK,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;KAAA;IAJqB,6BAAU,aAI/B,CAAA;IASD,SAAsB,iBAAiB,CAAC,UAA6B,EAAE,OAAe,EAAE,gBAAwB;;YAC5G,MAAM,KAAK,GAAG,yCAAmB,CAAC,QAAQ,CAAC,yCAAmB,CAAC,YAAY,CAAC,yCAAmB,CAAC,UAAU,EAAE,EAAE,cAAc,EAAE,4BAAe,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAEjL,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC;KAAA;IAJqB,oCAAiB,oBAItC,CAAA;IAWD,SAAsB,SAAS,CAAC,UAA6B,EAAE,OAAe,EAAE,KAAmB;;YAC/F,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QACjE,CAAC;KAAA;IAFqB,4BAAS,YAE9B,CAAA;IAWD,SAAsB,WAAW,CAAC,UAA6B,EAAE,OAAe,EAAE,KAAmB;;YACjG,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;QACnE,CAAC;KAAA;IAFqB,8BAAW,cAEhC,CAAA;IAWD,SAAsB,kBAAkB,CAAC,UAA6B,EAAE,OAAe,EAAE,KAAmB;;YACxG,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;QAC3E,CAAC;KAAA;IAFqB,qCAAkB,qBAEvC,CAAA;IAWD,SAAsB,aAAa,CAAC,UAA6B,EAAE,OAAe,EAAE,KAAmB;;YACnG,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;QACrE,CAAC;KAAA;IAFqB,gCAAa,gBAElC,CAAA;IASD,SAAsB,gBAAgB,CAAC,UAA6B,EAAE,OAAe,EAAE,aAAgC;;YACnH,IAAI,KAAK,GAAG,yCAAmB,CAAC,UAAU,EAAE,CAAC;YAC7C,KAAK,GAAG,yCAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,4BAAe,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;YAC7F,KAAK,GAAG,yCAAmB,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,iCAAoB,CAAC,IAAI,CAAC,CAAC;YACvF,KAAK,GAAG,yCAAmB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAE/C,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;KAAA;IAPqB,mCAAgB,mBAOrC,CAAA;IAED,SAAsB,YAAY,CAAC,UAA6B,EAAE,OAAe,EAAE,KAAmB;;YAClG,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QACpE,CAAC;KAAA;IAFqB,+BAAY,eAEjC,CAAA;IAED,SAAsB,SAAS,CAAC,UAA6B,EAAE,OAAe,EAAE,KAAmB;;YAC/F,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QACjE,CAAC;KAAA;IAFqB,4BAAS,YAE9B,CAAA;IAED,SAAsB,UAAU,CAAC,UAA6B,EAAE,OAAe,EAAE,KAAmB;;YAChG,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QAClE,CAAC;KAAA;IAFqB,6BAAU,aAE/B,CAAA;AACL,CAAC,EAxJgB,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAwJlC"} \ No newline at end of file diff --git a/dist/types/conseil/ConseilTezosTypes.d.ts b/dist/types/conseil/ConseilTezosTypes.d.ts deleted file mode 100644 index 0e5eac5f..00000000 --- a/dist/types/conseil/ConseilTezosTypes.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -export interface TezosBlock { - level: number; - proto: number; - predecessor: string; - timestamp: number; - validationPass: number; - fitness: string; - context: string; - signature: string; - protocol: string; - chainId: string; - hash: string; - operationsHash: string; -} -export interface TezosAccount { - accountId: string; - blockId: string; - manager: string; - spendable: boolean; - delegateSetable: boolean; - delegateValue: string; - counter: number; - script: string; - balance: number; -} -export interface TezosOperationGroup { - protocol: string; - chainId: string; - hash: string; - branch: string; - signature: string; - blockId: string; -} -export interface TezosOperation { - kind: string; - source: string; - amount: string; - destination: string; - managerPubkey: string; - balance: string; - delegate: string; - operationGroupHash: string; - operationId: number; - fee: string; - storageLimit: string; - gasLimit: string; - blockHash: string; - timestamp: number; - blockLevel: number; -} -export interface TezosBlockWithOperationGroups { - block: TezosBlock; - operations: TezosBlock[]; -} -export interface TezosOperationGroupWithOperations { - operation_group: TezosOperationGroup; - operations: TezosOperation[]; -} -export interface TezosAccountWithOperationGroups { - account: TezosAccount; - operation_groups: TezosOperationGroup[]; -} -export interface OperationFees { - low: number; - medium: number; - high: number; -} -export interface AppliedOperationBalanceUpdates { - kind: string; - contract: string; - debited: string; - credit: string; -} -export interface AppliedOperationError { - kind: string; - id: string; - hash: string; -} -export interface AppliedOperationResult { - operation: string; - status: string; - operation_kind: string; - balance_updates: AppliedOperationBalanceUpdates[]; - originated_contracts: string[]; - errors: AppliedOperationError[]; -} -export interface AppliedOperation { - kind: string; - balance_updates: AppliedOperationBalanceUpdates[]; - operation_results: AppliedOperationResult[]; - id: string; - contract: string; -} diff --git a/dist/types/conseil/ConseilTezosTypes.js b/dist/types/conseil/ConseilTezosTypes.js deleted file mode 100644 index 6527e9eb..00000000 --- a/dist/types/conseil/ConseilTezosTypes.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=ConseilTezosTypes.js.map \ No newline at end of file diff --git a/dist/types/conseil/ConseilTezosTypes.js.map b/dist/types/conseil/ConseilTezosTypes.js.map deleted file mode 100644 index 59f4b02f..00000000 --- a/dist/types/conseil/ConseilTezosTypes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ConseilTezosTypes.js","sourceRoot":"","sources":["../../../src/types/conseil/ConseilTezosTypes.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/types/conseil/ErrorTypes.d.ts b/dist/types/conseil/ErrorTypes.d.ts deleted file mode 100644 index 6a327a32..00000000 --- a/dist/types/conseil/ErrorTypes.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ConseilQuery } from "./QueryTypes"; -export declare class ServiceRequestError extends Error { - httpStatus: number; - httpMessage: string; - conseilURL: string; - data: string | null; - constructor(httpStatus: number, httpMessage: string, conseilURL: string, data: string | null); -} -export declare class ConseilRequestError extends ServiceRequestError { - conseilQuery: ConseilQuery | null; - constructor(httpStatus: number, httpMessage: string, conseilURL: string, conseilQuery: ConseilQuery | null); -} -export declare class ServiceResponseError extends Error { - httpStatus: number; - httpMessage: string; - conseilURL: string; - data: string | null; - response: any; - constructor(httpStatus: number, httpMessage: string, conseilURL: string, data: string | null, response: any); -} -export declare class ConseilResponseError extends ServiceResponseError { - conseilQuery: ConseilQuery | null; - constructor(httpStatus: number, httpMessage: string, conseilURL: string, conseilQuery: ConseilQuery | null, response: any); -} diff --git a/dist/types/conseil/ErrorTypes.js b/dist/types/conseil/ErrorTypes.js deleted file mode 100644 index 20cd990e..00000000 --- a/dist/types/conseil/ErrorTypes.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -class ServiceRequestError extends Error { - constructor(httpStatus, httpMessage, conseilURL, data) { - super(); - this.httpStatus = httpStatus; - this.httpMessage = httpMessage; - this.conseilURL = conseilURL; - this.data = data; - } -} -exports.ServiceRequestError = ServiceRequestError; -class ConseilRequestError extends ServiceRequestError { - constructor(httpStatus, httpMessage, conseilURL, conseilQuery) { - super(httpStatus, httpMessage, conseilURL, null); - this.conseilQuery = conseilQuery; - } -} -exports.ConseilRequestError = ConseilRequestError; -class ServiceResponseError extends Error { - constructor(httpStatus, httpMessage, conseilURL, data, response) { - super(); - this.httpStatus = httpStatus; - this.httpMessage = httpMessage; - this.conseilURL = conseilURL; - this.data = data; - this.response = response; - } -} -exports.ServiceResponseError = ServiceResponseError; -class ConseilResponseError extends ServiceResponseError { - constructor(httpStatus, httpMessage, conseilURL, conseilQuery, response) { - super(httpStatus, httpMessage, conseilURL, null, response); - this.conseilQuery = conseilQuery; - } -} -exports.ConseilResponseError = ConseilResponseError; -//# sourceMappingURL=ErrorTypes.js.map \ No newline at end of file diff --git a/dist/types/conseil/ErrorTypes.js.map b/dist/types/conseil/ErrorTypes.js.map deleted file mode 100644 index 88da0313..00000000 --- a/dist/types/conseil/ErrorTypes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ErrorTypes.js","sourceRoot":"","sources":["../../../src/types/conseil/ErrorTypes.ts"],"names":[],"mappings":";;AAKA,MAAa,mBAAoB,SAAQ,KAAK;IAM1C,YAAY,UAAkB,EAAE,WAAmB,EAAE,UAAkB,EAAE,IAAmB;QACxF,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAdD,kDAcC;AAKD,MAAa,mBAAoB,SAAQ,mBAAmB;IAGxD,YAAY,UAAkB,EAAE,WAAmB,EAAE,UAAkB,EAAE,YAAiC;QACtG,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;CACJ;AARD,kDAQC;AAKD,MAAa,oBAAqB,SAAQ,KAAK;IAO3C,YAAY,UAAkB,EAAE,WAAmB,EAAE,UAAkB,EAAE,IAAmB,EAAE,QAAa;QACvG,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ;AAhBD,oDAgBC;AAKD,MAAa,oBAAqB,SAAQ,oBAAoB;IAG1D,YAAY,UAAkB,EAAE,WAAmB,EAAE,UAAkB,EAAE,YAAiC,EAAE,QAAa;QACrH,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;CACJ;AARD,oDAQC"} \ No newline at end of file diff --git a/dist/types/conseil/MetadataTypes.d.ts b/dist/types/conseil/MetadataTypes.d.ts deleted file mode 100644 index 66059491..00000000 --- a/dist/types/conseil/MetadataTypes.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -export interface PlatformDefinition { - name: string; - displayName: string; -} -export interface NetworkDefinition { - name: string; - displayName: string; - platform: string; - network: string; -} -export interface EntityDefinition { - name: string; - displayName: string; - count: number; - network: string; -} -export interface AttributeDefinition { - name: string; - displayName: string; - dataType: AttrbuteDataType; - cardinality: number; - keyType: AttrbuteKeyType; - entity: string; - dataFormat: string; -} -export declare enum AttrbuteDataType { - STRING = "String", - INT = "Int", - DECIMAL = "Decimal", - BOOLEAN = "Boolean" -} -export declare enum AttrbuteKeyType { - PRIMARYKEY = "PrimaryKey", - UNIQUEKEY = "UniqueKey", - NONKEY = "NonKey" -} diff --git a/dist/types/conseil/MetadataTypes.js b/dist/types/conseil/MetadataTypes.js deleted file mode 100644 index 02c6cdbc..00000000 --- a/dist/types/conseil/MetadataTypes.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var AttrbuteDataType; -(function (AttrbuteDataType) { - AttrbuteDataType["STRING"] = "String"; - AttrbuteDataType["INT"] = "Int"; - AttrbuteDataType["DECIMAL"] = "Decimal"; - AttrbuteDataType["BOOLEAN"] = "Boolean"; -})(AttrbuteDataType = exports.AttrbuteDataType || (exports.AttrbuteDataType = {})); -var AttrbuteKeyType; -(function (AttrbuteKeyType) { - AttrbuteKeyType["PRIMARYKEY"] = "PrimaryKey"; - AttrbuteKeyType["UNIQUEKEY"] = "UniqueKey"; - AttrbuteKeyType["NONKEY"] = "NonKey"; -})(AttrbuteKeyType = exports.AttrbuteKeyType || (exports.AttrbuteKeyType = {})); -//# sourceMappingURL=MetadataTypes.js.map \ No newline at end of file diff --git a/dist/types/conseil/MetadataTypes.js.map b/dist/types/conseil/MetadataTypes.js.map deleted file mode 100644 index bd8f4aee..00000000 --- a/dist/types/conseil/MetadataTypes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MetadataTypes.js","sourceRoot":"","sources":["../../../src/types/conseil/MetadataTypes.ts"],"names":[],"mappings":";;AA6BA,IAAY,gBAKX;AALD,WAAY,gBAAgB;IACxB,qCAAiB,CAAA;IACjB,+BAAW,CAAA;IACX,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;AACvB,CAAC,EALW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAK3B;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,4CAAyB,CAAA;IACzB,0CAAuB,CAAA;IACvB,oCAAiB,CAAA;AACrB,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B"} \ No newline at end of file diff --git a/dist/types/conseil/QueryTypes.d.ts b/dist/types/conseil/QueryTypes.d.ts deleted file mode 100644 index 175468d2..00000000 --- a/dist/types/conseil/QueryTypes.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -export interface ConseilServerInfo { - url: string; - apiKey: string; -} -export declare enum ConseilSortDirection { - ASC = "asc", - DESC = "desc" -} -export declare enum ConseilOperator { - BETWEEN = "between", - EQ = "eq", - IN = "in", - LIKE = "like", - LT = "lt", - BEFORE = "before", - GT = "gt", - AFTER = "after", - STARTSWITH = "startsWith", - ENDSWITH = "endsWith", - ISNULL = "isnull" -} -export declare enum ConseilFunction { - avg = "avg", - count = "count", - max = "max", - min = "min", - sum = "sum" -} -export declare enum ConseilOutput { - csv = "csv", - json = "json" -} -export interface ConseilOrdering { - field: string; - direction: ConseilSortDirection; -} -export interface ConseilPredicate { - field: string; - operation: ConseilOperator; - set: any[]; - inverse: boolean; -} -export interface ConseilQuery { - fields: string[]; - predicates: ConseilPredicate[]; - orderBy: ConseilOrdering[]; - limit: number; - aggregation?: any; - output?: string; -} diff --git a/dist/types/conseil/QueryTypes.js b/dist/types/conseil/QueryTypes.js deleted file mode 100644 index ff1434e1..00000000 --- a/dist/types/conseil/QueryTypes.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var ConseilSortDirection; -(function (ConseilSortDirection) { - ConseilSortDirection["ASC"] = "asc"; - ConseilSortDirection["DESC"] = "desc"; -})(ConseilSortDirection = exports.ConseilSortDirection || (exports.ConseilSortDirection = {})); -var ConseilOperator; -(function (ConseilOperator) { - ConseilOperator["BETWEEN"] = "between"; - ConseilOperator["EQ"] = "eq"; - ConseilOperator["IN"] = "in"; - ConseilOperator["LIKE"] = "like"; - ConseilOperator["LT"] = "lt"; - ConseilOperator["BEFORE"] = "before"; - ConseilOperator["GT"] = "gt"; - ConseilOperator["AFTER"] = "after"; - ConseilOperator["STARTSWITH"] = "startsWith"; - ConseilOperator["ENDSWITH"] = "endsWith"; - ConseilOperator["ISNULL"] = "isnull"; -})(ConseilOperator = exports.ConseilOperator || (exports.ConseilOperator = {})); -var ConseilFunction; -(function (ConseilFunction) { - ConseilFunction["avg"] = "avg"; - ConseilFunction["count"] = "count"; - ConseilFunction["max"] = "max"; - ConseilFunction["min"] = "min"; - ConseilFunction["sum"] = "sum"; -})(ConseilFunction = exports.ConseilFunction || (exports.ConseilFunction = {})); -var ConseilOutput; -(function (ConseilOutput) { - ConseilOutput["csv"] = "csv"; - ConseilOutput["json"] = "json"; -})(ConseilOutput = exports.ConseilOutput || (exports.ConseilOutput = {})); -//# sourceMappingURL=QueryTypes.js.map \ No newline at end of file diff --git a/dist/types/conseil/QueryTypes.js.map b/dist/types/conseil/QueryTypes.js.map deleted file mode 100644 index a0c8542f..00000000 --- a/dist/types/conseil/QueryTypes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"QueryTypes.js","sourceRoot":"","sources":["../../../src/types/conseil/QueryTypes.ts"],"names":[],"mappings":";;AAKA,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,mCAAW,CAAA;IACX,qCAAa,CAAA;AACjB,CAAC,EAHW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAG/B;AAED,IAAY,eAYX;AAZD,WAAY,eAAe;IACvB,sCAAmB,CAAA;IACnB,4BAAS,CAAA;IACT,4BAAS,CAAA;IACT,gCAAa,CAAA;IACb,4BAAS,CAAA;IACT,oCAAiB,CAAA;IACjB,4BAAS,CAAA;IACT,kCAAe,CAAA;IACf,4CAAyB,CAAA;IACzB,wCAAqB,CAAA;IACrB,oCAAiB,CAAA;AACrB,CAAC,EAZW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAY1B;AAED,IAAY,eAMX;AAND,WAAY,eAAe;IACvB,8BAAW,CAAA;IACX,kCAAe,CAAA;IACf,8BAAW,CAAA;IACX,8BAAW,CAAA;IACX,8BAAW,CAAA;AACf,CAAC,EANW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAM1B;AAED,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,4BAAW,CAAA;IACX,8BAAa,CAAA;AACjB,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB"} \ No newline at end of file diff --git a/dist/types/tezos/TezosChainTypes.d.ts b/dist/types/tezos/TezosChainTypes.d.ts deleted file mode 100644 index 22b039bd..00000000 --- a/dist/types/tezos/TezosChainTypes.d.ts +++ /dev/null @@ -1,112 +0,0 @@ -/// -export interface BlockHeader { - level: number; - proto: number; - predecessor: string; - timestamp: string; - validation_pass: number; - operations_hash: string; - fitness: string[]; - context: string; - priority: number; - proof_of_work_nonce: string; - signature: string; -} -export interface BlockMetadata { - protocol: string; - chain_id: string; - hash: string; - metadata: BlockHeader; -} -export interface AccountDelegate { - setable: boolean; - value: string; -} -export interface Account { - manager: string; - balance: number; - spendable: boolean; - delegate: AccountDelegate; - script: string; - counter: number; -} -export interface ManagerKey { - manager: string; - key: string; -} -export interface AlphaOperationResult { - status: string; - originated_contracts: string[]; - errors: string[]; -} -export interface AlphaOperationContentsAndResult { - kind: string; - metadata: AlphaOperationResult; -} -export interface AlphaOperationsWithMetadata { - contents: AlphaOperationContentsAndResult[]; - signature: string; - kind: string; - id: string; - contract: string; -} -export interface InjectedOperation { - injectedOperation: string; -} -export interface Operation { - kind: string; - source: string; - fee: string; - counter: string; - storage_limit: string; - gas_limit: string; - delegate?: string; - public_key?: string; - managerPubkey?: string; - balance?: string; - spendable?: boolean; - delegatable?: boolean; - destination?: string; - amount?: string; - script?: string | object; - parameters?: string; -} -export interface Ballot { - source: string; - period: number; - proposal: string; - vote: BallotVote; -} -export interface ContractOriginationOperation extends Operation { - script: string; -} -export interface ContractInvocationOperation extends Operation { - parameters: string; -} -export interface SignedOperationGroup { - bytes: Buffer; - signature: string; -} -export interface OperationResult { - results: AlphaOperationsWithMetadata; - operationGroupID: string; -} -export declare enum OperationKindType { - SeedNonceRevelation = "seed_nonce_revelation", - Delegation = "delegation", - Transaction = "transaction", - AccountActivation = "activate_account", - Origination = "origination", - Reveal = "reveal", - Endorsement = "endorsement", - Ballot = "ballot" -} -export declare enum BallotVote { - Yay = 0, - Nay = 1, - Pass = 2 -} -export interface Activation { - pkh: string; - secret: string; -} diff --git a/dist/types/tezos/TezosChainTypes.js b/dist/types/tezos/TezosChainTypes.js deleted file mode 100644 index a2fba37e..00000000 --- a/dist/types/tezos/TezosChainTypes.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var OperationKindType; -(function (OperationKindType) { - OperationKindType["SeedNonceRevelation"] = "seed_nonce_revelation"; - OperationKindType["Delegation"] = "delegation"; - OperationKindType["Transaction"] = "transaction"; - OperationKindType["AccountActivation"] = "activate_account"; - OperationKindType["Origination"] = "origination"; - OperationKindType["Reveal"] = "reveal"; - OperationKindType["Endorsement"] = "endorsement"; - OperationKindType["Ballot"] = "ballot"; -})(OperationKindType = exports.OperationKindType || (exports.OperationKindType = {})); -var BallotVote; -(function (BallotVote) { - BallotVote[BallotVote["Yay"] = 0] = "Yay"; - BallotVote[BallotVote["Nay"] = 1] = "Nay"; - BallotVote[BallotVote["Pass"] = 2] = "Pass"; -})(BallotVote = exports.BallotVote || (exports.BallotVote = {})); -//# sourceMappingURL=TezosChainTypes.js.map \ No newline at end of file diff --git a/dist/types/tezos/TezosChainTypes.js.map b/dist/types/tezos/TezosChainTypes.js.map deleted file mode 100644 index d8403d4b..00000000 --- a/dist/types/tezos/TezosChainTypes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TezosChainTypes.js","sourceRoot":"","sources":["../../../src/types/tezos/TezosChainTypes.ts"],"names":[],"mappings":";;AA0HA,IAAY,iBASX;AATD,WAAY,iBAAiB;IACzB,kEAA6C,CAAA;IAC7C,8CAAyB,CAAA;IACzB,gDAA2B,CAAA;IAC3B,2DAAsC,CAAA;IACtC,gDAA2B,CAAA;IAC3B,sCAAiB,CAAA;IACjB,gDAA2B,CAAA;IAC3B,sCAAiB,CAAA;AACrB,CAAC,EATW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAS5B;AAED,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,yCAAO,CAAA;IACP,yCAAO,CAAA;IACP,2CAAQ,CAAA;AACZ,CAAC,EAJW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAIrB"} \ No newline at end of file diff --git a/dist/types/wallet/Error.d.ts b/dist/types/wallet/Error.d.ts deleted file mode 100644 index 2588f4bb..00000000 --- a/dist/types/wallet/Error.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface Error { - error: string; -} diff --git a/dist/types/wallet/Error.js b/dist/types/wallet/Error.js deleted file mode 100644 index dabaf7f4..00000000 --- a/dist/types/wallet/Error.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=Error.js.map \ No newline at end of file diff --git a/dist/types/wallet/Error.js.map b/dist/types/wallet/Error.js.map deleted file mode 100644 index 1de90f9c..00000000 --- a/dist/types/wallet/Error.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Error.js","sourceRoot":"","sources":["../../../src/types/wallet/Error.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/types/wallet/HardwareDeviceType.d.ts b/dist/types/wallet/HardwareDeviceType.d.ts deleted file mode 100644 index 5ab6894a..00000000 --- a/dist/types/wallet/HardwareDeviceType.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare enum HardwareDeviceType { - LedgerNanoS = 0, - TrezorT = 1 -} diff --git a/dist/types/wallet/HardwareDeviceType.js b/dist/types/wallet/HardwareDeviceType.js deleted file mode 100644 index 00c730f6..00000000 --- a/dist/types/wallet/HardwareDeviceType.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var HardwareDeviceType; -(function (HardwareDeviceType) { - HardwareDeviceType[HardwareDeviceType["LedgerNanoS"] = 0] = "LedgerNanoS"; - HardwareDeviceType[HardwareDeviceType["TrezorT"] = 1] = "TrezorT"; -})(HardwareDeviceType = exports.HardwareDeviceType || (exports.HardwareDeviceType = {})); -//# sourceMappingURL=HardwareDeviceType.js.map \ No newline at end of file diff --git a/dist/types/wallet/HardwareDeviceType.js.map b/dist/types/wallet/HardwareDeviceType.js.map deleted file mode 100644 index abc53936..00000000 --- a/dist/types/wallet/HardwareDeviceType.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"HardwareDeviceType.js","sourceRoot":"","sources":["../../../src/types/wallet/HardwareDeviceType.ts"],"names":[],"mappings":";;AAGA,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,yEAAe,CAAA;IACf,iEAAW,CAAA;AACf,CAAC,EAHW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAG7B"} \ No newline at end of file diff --git a/dist/types/wallet/KeyStore.d.ts b/dist/types/wallet/KeyStore.d.ts deleted file mode 100644 index e7316c6f..00000000 --- a/dist/types/wallet/KeyStore.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface KeyStore { - publicKey: string; - privateKey: string; - publicKeyHash: string; - seed: string; - storeType: StoreType; -} -export declare enum StoreType { - Mnemonic = 0, - Fundraiser = 1, - Hardware = 2 -} diff --git a/dist/types/wallet/KeyStore.js b/dist/types/wallet/KeyStore.js deleted file mode 100644 index 46f05c00..00000000 --- a/dist/types/wallet/KeyStore.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var StoreType; -(function (StoreType) { - StoreType[StoreType["Mnemonic"] = 0] = "Mnemonic"; - StoreType[StoreType["Fundraiser"] = 1] = "Fundraiser"; - StoreType[StoreType["Hardware"] = 2] = "Hardware"; -})(StoreType = exports.StoreType || (exports.StoreType = {})); -//# sourceMappingURL=KeyStore.js.map \ No newline at end of file diff --git a/dist/types/wallet/KeyStore.js.map b/dist/types/wallet/KeyStore.js.map deleted file mode 100644 index 347bd2b1..00000000 --- a/dist/types/wallet/KeyStore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"KeyStore.js","sourceRoot":"","sources":["../../../src/types/wallet/KeyStore.ts"],"names":[],"mappings":";;AAeA,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,iDAAQ,CAAA;IACR,qDAAU,CAAA;IACV,iDAAQ,CAAA;AACZ,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB"} \ No newline at end of file diff --git a/dist/types/wallet/Wallet.d.ts b/dist/types/wallet/Wallet.d.ts deleted file mode 100644 index 1b420c8c..00000000 --- a/dist/types/wallet/Wallet.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { KeyStore } from "./KeyStore"; -export interface Wallet { - identities: KeyStore[]; -} -export interface EncryptedWalletVersionOne { - version: string; - salt: string; - ciphertext: string; - kdf: string; -} diff --git a/dist/types/wallet/Wallet.js b/dist/types/wallet/Wallet.js deleted file mode 100644 index 04aa8b53..00000000 --- a/dist/types/wallet/Wallet.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=Wallet.js.map \ No newline at end of file diff --git a/dist/types/wallet/Wallet.js.map b/dist/types/wallet/Wallet.js.map deleted file mode 100644 index 1dbd161f..00000000 --- a/dist/types/wallet/Wallet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Wallet.js","sourceRoot":"","sources":["../../../src/types/wallet/Wallet.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/utils/CryptoUtils.d.ts b/dist/utils/CryptoUtils.d.ts deleted file mode 100644 index 7ae42197..00000000 --- a/dist/utils/CryptoUtils.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/// -export declare namespace CryptoUtils { - function generateSaltForPwHash(): Promise; - function encryptMessage(message: string, passphrase: string, salt: Buffer): Promise; - function decryptMessage(nonce_and_ciphertext: Buffer, passphrase: string, salt: Buffer): Promise; - function simpleHash(payload: Buffer, length: number): Buffer; - function getPasswordStrength(password: string): number; - function generateKeys(seed: Buffer): Promise<{ - privateKey: any; - publicKey: any; - }>; - function signDetached(payload: Buffer, secretKey: Buffer): Promise; -} diff --git a/dist/utils/CryptoUtils.js b/dist/utils/CryptoUtils.js deleted file mode 100644 index 00149d82..00000000 --- a/dist/utils/CryptoUtils.js +++ /dev/null @@ -1,81 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const blakejs = __importStar(require("blakejs")); -const zxcvbn_1 = __importDefault(require("zxcvbn")); -const wrapper = require('./WrapperWrapper'); -var CryptoUtils; -(function (CryptoUtils) { - function generateSaltForPwHash() { - return __awaiter(this, void 0, void 0, function* () { - const s = yield wrapper.salt(); - return s; - }); - } - CryptoUtils.generateSaltForPwHash = generateSaltForPwHash; - function encryptMessage(message, passphrase, salt) { - return __awaiter(this, void 0, void 0, function* () { - const passwordStrength = getPasswordStrength(passphrase); - if (passwordStrength < 3) { - throw new Error('The password strength should not be less than 3.'); - } - const messageBytes = Buffer.from(message); - const keyBytes = yield wrapper.pwhash(passphrase, salt); - const n = yield wrapper.nonce(); - const nonce = Buffer.from(n); - const s = yield wrapper.close(messageBytes, nonce, keyBytes); - const cipherText = Buffer.from(s); - return Buffer.concat([nonce, cipherText]); - }); - } - CryptoUtils.encryptMessage = encryptMessage; - function decryptMessage(nonce_and_ciphertext, passphrase, salt) { - return __awaiter(this, void 0, void 0, function* () { - const keyBytes = yield wrapper.pwhash(passphrase, salt); - const m = yield wrapper.open(nonce_and_ciphertext, keyBytes); - return Buffer.from(m).toString(); - }); - } - CryptoUtils.decryptMessage = decryptMessage; - function simpleHash(payload, length) { - return Buffer.from(blakejs.blake2b(payload, null, length)); - } - CryptoUtils.simpleHash = simpleHash; - function getPasswordStrength(password) { - const results = zxcvbn_1.default(password); - return results.score; - } - CryptoUtils.getPasswordStrength = getPasswordStrength; - function generateKeys(seed) { - return __awaiter(this, void 0, void 0, function* () { - const k = yield wrapper.keys(seed); - return { privateKey: k.privateKey, publicKey: k.publicKey }; - }); - } - CryptoUtils.generateKeys = generateKeys; - function signDetached(payload, secretKey) { - return __awaiter(this, void 0, void 0, function* () { - const b = yield wrapper.sign(payload, secretKey); - return Buffer.from(b); - }); - } - CryptoUtils.signDetached = signDetached; -})(CryptoUtils = exports.CryptoUtils || (exports.CryptoUtils = {})); -//# sourceMappingURL=CryptoUtils.js.map \ No newline at end of file diff --git a/dist/utils/CryptoUtils.js.map b/dist/utils/CryptoUtils.js.map deleted file mode 100644 index a4714850..00000000 --- a/dist/utils/CryptoUtils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CryptoUtils.js","sourceRoot":"","sources":["../../src/utils/CryptoUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,oDAA4B;AAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAK5C,IAAiB,WAAW,CAsE3B;AAtED,WAAiB,WAAW;IAKxB,SAAsB,qBAAqB;;YACvC,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC;QACb,CAAC;KAAA;IAHqB,iCAAqB,wBAG1C,CAAA;IASD,SAAsB,cAAc,CAAC,OAAe,EAAE,UAAkB,EAAE,IAAY;;YAClF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,gBAAgB,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;aAAE;YAElG,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;YACvD,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAElC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9C,CAAC;KAAA;IAZqB,0BAAc,iBAYnC,CAAA;IASD,SAAsB,cAAc,CAAC,oBAA4B,EAAE,UAAkB,EAAE,IAAY;;YAC/F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;YACvD,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,CAAC;KAAA;IAJqB,0BAAc,iBAInC,CAAA;IAKD,SAAgB,UAAU,CAAC,OAAe,EAAE,MAAc;QACtD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;IAFe,sBAAU,aAEzB,CAAA;IAMD,SAAgB,mBAAmB,CAAC,QAAgB;QAChD,MAAM,OAAO,GAAG,gBAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC,KAAK,CAAC;IACzB,CAAC;IAHe,+BAAmB,sBAGlC,CAAA;IAED,SAAsB,YAAY,CAAC,IAAY;;YAC3C,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QAChE,CAAC;KAAA;IAJqB,wBAAY,eAIjC,CAAA;IAED,SAAsB,YAAY,CAAC,OAAe,EAAE,SAAiB;;YACjE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;YAChD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;KAAA;IAHqB,wBAAY,eAGjC,CAAA;AACL,CAAC,EAtEgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAsE3B"} \ No newline at end of file diff --git a/dist/utils/DeviceSelector.d.ts b/dist/utils/DeviceSelector.d.ts deleted file mode 100644 index a62f2412..00000000 --- a/dist/utils/DeviceSelector.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default class DeviceSelector { - static ledgerUtils: any; - static setLedgerUtils(ledger: any): void; - static getLedgerUtils(): any; -} diff --git a/dist/utils/DeviceSelector.js b/dist/utils/DeviceSelector.js deleted file mode 100644 index 3a5babbe..00000000 --- a/dist/utils/DeviceSelector.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -class DeviceSelector { - static setLedgerUtils(ledger) { - this.ledgerUtils = ledger; - } - static getLedgerUtils() { - return this.ledgerUtils; - } -} -DeviceSelector.ledgerUtils = null; -exports.default = DeviceSelector; -//# sourceMappingURL=DeviceSelector.js.map \ No newline at end of file diff --git a/dist/utils/DeviceSelector.js.map b/dist/utils/DeviceSelector.js.map deleted file mode 100644 index 098d4b0e..00000000 --- a/dist/utils/DeviceSelector.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DeviceSelector.js","sourceRoot":"","sources":["../../src/utils/DeviceSelector.ts"],"names":[],"mappings":";;AAQA,MAAqB,cAAc;IAE/B,MAAM,CAAC,cAAc,CAAC,MAAW;QAC7B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,cAAc;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;;AAPM,0BAAW,GAAQ,IAAI,CAAC;AADnC,iCASC"} \ No newline at end of file diff --git a/dist/utils/FetchSelector.d.ts b/dist/utils/FetchSelector.d.ts deleted file mode 100644 index a1dee674..00000000 --- a/dist/utils/FetchSelector.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default class FetchSelector { - static fetch: any; - static setFetch(fetch: any): void; - static getFetch(): any; -} diff --git a/dist/utils/FetchSelector.js b/dist/utils/FetchSelector.js deleted file mode 100644 index 6b143a5f..00000000 --- a/dist/utils/FetchSelector.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -class FetchSelector { - static setFetch(fetch) { - this.fetch = fetch; - } - static getFetch() { - return this.fetch; - } -} -FetchSelector.fetch = null; -exports.default = FetchSelector; -//# sourceMappingURL=FetchSelector.js.map \ No newline at end of file diff --git a/dist/utils/FetchSelector.js.map b/dist/utils/FetchSelector.js.map deleted file mode 100644 index d0ae1a80..00000000 --- a/dist/utils/FetchSelector.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FetchSelector.js","sourceRoot":"","sources":["../../src/utils/FetchSelector.ts"],"names":[],"mappings":";;AAMA,MAAqB,aAAa;IAG9B,MAAM,CAAC,QAAQ,CAAC,KAAU;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;;AARM,mBAAK,GAAQ,IAAI,CAAC;AAD7B,gCAUC"} \ No newline at end of file diff --git a/dist/utils/WrapperWrapper.js b/dist/utils/WrapperWrapper.js deleted file mode 100644 index b90e318b..00000000 --- a/dist/utils/WrapperWrapper.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * This file is not meant for public use. It hides libsodium-wrappers from the Typescript transpiler. - */ -const sodiumsumo = require('libsodium-wrappers-sumo'); - -const rand = async (length) => { - await sodiumsumo.ready; - return sodiumsumo.randombytes_buf(length); -} - -const salt = async () => { - return rand(sodiumsumo.crypto_pwhash_SALTBYTES); -} - -const nonce = async () => { - return rand(sodiumsumo.crypto_box_NONCEBYTES); -} - -const keys = async (seed) => { - await sodiumsumo.ready; - return sodiumsumo.crypto_sign_seed_keypair(seed, ''); -} - -const pwhash = async (passphrase, salt) => { - await sodiumsumo.ready; - return sodiumsumo.crypto_pwhash(sodiumsumo.crypto_box_SEEDBYTES, passphrase, salt, 4, 33554432, sodiumsumo.crypto_pwhash_ALG_ARGON2I13); -} - -const close = async (message, nonce, key) => { - await sodiumsumo.ready; - return sodiumsumo.crypto_secretbox_easy(message, nonce, key); -} - -const open = async (nonce_and_ciphertext, key) => { - await sodiumsumo.ready; - - const nonce = nonce_and_ciphertext.slice(0, sodiumsumo.crypto_secretbox_NONCEBYTES); - const ciphertext = nonce_and_ciphertext.slice(sodiumsumo.crypto_secretbox_NONCEBYTES); - - return sodiumsumo.crypto_secretbox_open_easy(ciphertext, nonce, key); -} - -const sign = async (message, key) => { - await sodiumsumo.ready; - return sodiumsumo.crypto_sign_detached(message, key); -} - -module.exports = {salt, nonce, keys, pwhash, close, open, sign}; diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 8df6bbe6..00000000 --- a/docs/README.md +++ /dev/null @@ -1,556 +0,0 @@ -# ConseilJS - -[![npm version](https://img.shields.io/npm/v/conseiljs.svg)](https://www.npmjs.com/package/conseiljs) -[![npm](https://img.shields.io/npm/dm/conseiljs.svg)](https://www.npmjs.com/package/conseiljs) -[![Build Status](https://travis-ci.org/Cryptonomic/ConseilJS.svg?branch=master)](https://travis-ci.org/Cryptonomic/ConseilJS) -[![Coverage Status](https://coveralls.io/repos/github/Cryptonomic/ConseilJS/badge.svg?branch=master)](https://coveralls.io/github/Cryptonomic/ConseilJS?branch=master) -[![dependencies](https://david-dm.org/Cryptonomic/ConseilJS/status.svg)](https://david-dm.org/Cryptonomic/ConseilJS) - -A library for building decentralized applications, currently focused on [Tezos](http://tezos.com/). - -ConseilJS connects to the [Nautilus](https://github.com/Cryptonomic/Nautilus) infrastructure for high-performance analytics provided by [Conseil](https://github.com/Cryptonomic/Conseil) and for live chain data and operations via the integrated Tezos node. - -## Use with Nodejs - -Add our [NPM package](https://www.npmjs.com/package/conseiljs) to your project, or include in your web project as: ``. - -```bash -$ npm i conseiljs -``` - -If you are using webpack in your project, add below lines to your `webpack.config.js` file: - -```javascript -node: { fs: 'empty' } -``` - -We have a complete [React application example](https://github.com/Cryptonomic/ConseilJS-Tutorials) for you to check out. - -## Use with Web -```html - -``` - -A fully functional sample [webpage example](https://github.com/Cryptonomic/ConseilJS-HTML-Example) is available too. - -## API Overview and Examples - -### API Key - -Some ConseilJS functions require an API key for a Conseil service instance. While direct chain interactions happen via a Tezos node, Conseil read operations like those in `TezosConseilClient` namespace do require an API key however. - -Obtaining a development key is easy. Hit us on the [Riot Dev Channel](https://matrix.to/#/!rUwpbdwWhWgKINPyOD:cryptonomic.tech?via=cryptonomic.tech&via=matrix.org&via=ostez.com) and we'll hook you up. - -### Tezos Chain Operations - -To execute operations on the Tezos chain a link to a Tezos node is required. One can be found on the [tzscan public node page](https://tzscan.io/nodes). Be sure to initialize the `tezosNode` variable accordingly. Interface to this functionality is in the `TezosNodeWriter` namespace. - -#### Create a chain identity - -Visit [Alphanet Faucet](https://faucet.tzalpha.net) to get a test account on the Tezos Alphanet. With this information we can create the public and private keys necessary to participate in the network. In the below examples, `alphanetFaucetAccount` is assigned the contents of the file the faucet produces. - -```typescript -import { TezosWalletUtil } from 'conseiljs'; - -const alphanetFaucetAccount = { - "mnemonic": [ "letter", "pair", "shuffle", "exotic", "sword", "west", "build", "monster", "future", "senior", "salt", "satisfy", "knock", "alert", "gorilla"], - "secret": "96391f810cbe7d0a7dd4ed851f7fb20e3c5bc723", - "amount": "5652123072", - "pkh": "tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z", - "password": "VvLbJMu1fF", - "email": "yoyhmapi.ugewcsiv@tezos.example.org" -} - -async function initAccount() { - const keystore = await TezosWalletUtil.unlockFundraiserIdentity(alphanetFaucetAccount.mnemonic.join(' '), alphanetFaucetAccount.email, alphanetFaucetAccount.password, alphanetFaucetAccount.pkh); - console.log(`public key: ${keystore.publicKey}`); - console.log(`secret key: ${keystore.privateKey}`); -} - -initAccount(); -``` - -This produces a public key of `edpkuuGJ4ssH3N5k7ovwkBe16p8rVX1XLENiZ4FAayrcwUf9sCKXnG` and secret key of `edskRpVqFG2FHo11aB9pzbnHBiPBWhNWdwtNyQSfEEhDf5jhFbAtNS41vg9as7LSYZv6rEbtJTwyyEg9cNDdcAkSr9Z7hfvquB`. **Secret keys must be kept secure!** - -#### Initialize a chain identity - -An account must be activated on the chain before it can be used. With the combination of the faucet output and the keys generated in the step above we can send an account activation operation. - -```typescript -import { TezosNodeWriter, StoreType } from 'conseiljs'; - -const tezosNode = ''; - -async function activateAccount() { - const keystore = { - publicKey: 'edpkuuGJ4ssH3N5k7ovwkBe16p8rVX1XLENiZ4FAayrcwUf9sCKXnG', - privateKey: 'edskRpVqFG2FHo11aB9pzbnHBiPBWhNWdwtNyQSfEEhDf5jhFbAtNS41vg9as7LSYZv6rEbtJTwyyEg9cNDdcAkSr9Z7hfvquB', - publicKeyHash: 'tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z', - seed: '', - storeType: StoreType.Fundraiser - }; - const result = await TezosNodeWriter.sendIdentityActivationOperation(tezosNode, keystore, '96391f810cbe7d0a7dd4ed851f7fb20e3c5bc723', ''); - console.log(`Injected operation group id ${result.operationGroupID}`) -} - -activateAccount(); -``` - -Operation result can be viewed on a [block explorer](https://alphanet.tzscan.io/ont2jgMsL51w3BAMJhqgsg6AoySLXsAXKzBrF1Xdyqw9f6dq8hE) for more details. - -The next step on Tezos is an account revelation. - -```typescript -import { TezosNodeWriter, StoreType } from 'conseiljs'; - -const tezosNode = ''; - -async function revealAccount() { - const keystore = { - publicKey: 'edpkuuGJ4ssH3N5k7ovwkBe16p8rVX1XLENiZ4FAayrcwUf9sCKXnG', - privateKey: 'edskRpVqFG2FHo11aB9pzbnHBiPBWhNWdwtNyQSfEEhDf5jhFbAtNS41vg9as7LSYZv6rEbtJTwyyEg9cNDdcAkSr9Z7hfvquB', - publicKeyHash: 'tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z', - seed: '', - storeType: StoreType.Fundraiser - }; - - const result = await TezosNodeWriter.sendKeyRevealOperation(tezosNode, keystore); - console.log(`Injected operation group id ${result.operationGroupID}`); -} - -revealAccount(); -``` - -Once again we can confirm the results: [`ooFjXs4oCWfpm5XbbMPa9spohRk3933qmDDBBLkbDPcdPpxL9eM`](https://alphanet.tzscan.io/ooFjXs4oCWfpm5XbbMPa9spohRk3933qmDDBBLkbDPcdPpxL9eM). - -#### Transfer value - -The most basic operation on the chain is the transfer of value between two accounts. In this example we have the account we activated above: `tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z` and some random Alphanet address to test with: `tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2`. Note all amounts are in µtz, as in micro-tez, hence 0.5tz is repsented as `500000`. - -```typescript -import { TezosNodeWriter, StoreType } from 'conseiljs'; - -const tezosNode = ''; - -async function sendTransaction() { - const keystore = { - publicKey: 'edpkuuGJ4ssH3N5k7ovwkBe16p8rVX1XLENiZ4FAayrcwUf9sCKXnG', - privateKey: 'edskRpVqFG2FHo11aB9pzbnHBiPBWhNWdwtNyQSfEEhDf5jhFbAtNS41vg9as7LSYZv6rEbtJTwyyEg9cNDdcAkSr9Z7hfvquB', - publicKeyHash: 'tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z', - seed: '', - storeType: StoreType.Fundraiser - }; - - const result = await TezosNodeWriter.sendTransactionOperation(tezosNode, keystore, 'tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2', 500000, 1500, ''); - console.log(`Injected operation group id ${result.operationGroupID}`) -} - -sendTransaction(); -``` - -The results: [`onj7NTxcaW5Gopx7cy6Wwxxfe6ttFFyZmgqkHEhCxTsZ7Qx7a5h`](https://alphanet.tzscan.io/onj7NTxcaW5Gopx7cy6Wwxxfe6ttFFyZmgqkHEhCxTsZ7Qx7a5h). - - -#### Delegate - -One of the most exciting features of Tezos is delegation. To delegate tz, an account must be originated. We picked a random Alphanet baker to delegate to: `tz3gN8NTLNLJg5KRsUU47NHNVHbdhcFXjjaB`. - -```typescript -import { TezosNodeWriter, StoreType } from 'conseiljs'; - -const tezosNode = ''; - -async function originateAccount() { - const keystore = { - publicKey: 'edpkuuGJ4ssH3N5k7ovwkBe16p8rVX1XLENiZ4FAayrcwUf9sCKXnG', - privateKey: 'edskRpVqFG2FHo11aB9pzbnHBiPBWhNWdwtNyQSfEEhDf5jhFbAtNS41vg9as7LSYZv6rEbtJTwyyEg9cNDdcAkSr9Z7hfvquB', - publicKeyHash: 'tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z', - seed: '', - storeType: StoreType.Fundraiser - }; - const result = await TezosNodeWriter.sendAccountOriginationOperation(tezosNode, keystore, 100000000, 'tz3gN8NTLNLJg5KRsUU47NHNVHbdhcFXjjaB', true, true, 10000, ''); - console.log(`Injected operation group id ${result.operationGroupID}`) -} - -originateAccount(); -``` -The results: [`ooqNtzH1Pxt3n7Bas9JsRW1f8QLEU4yABQbqHiXL5aws4H2rwVA`](https://alphanet.tzscan.io/ooqNtzH1Pxt3n7Bas9JsRW1f8QLEU4yABQbqHiXL5aws4H2rwVA). - -### Metadata Discovery Functions - -[Conseil](https://github.com/Cryptonomic/Conseil) blockchain indexer service is metadata-driven. Reports can be constructed in a fully dynamic fashion by discovering what a particular Conseil node has available. Unless you are running your own [Nautilus](https://github.com/Cryptonomic/Nautilus) instance, you'll need access to an existing one. Cryptonomic provides a small server for developers to try. Reach out on the [Riot Dev Channel](https://matrix.to/#/!rUwpbdwWhWgKINPyOD:cryptonomic.tech?via=cryptonomic.tech&via=matrix.org&via=ostez.com) for details. - -All metadata functions are in the `ConseilMetadataClient` namespace. Internally all of these are REST GET requests. An `apiKey` header is required. The ConseilJS api takes care of these details. Each successive request relies on the results of the previous one. Using the information provide by this service it's possible to construct data queries discussed in the next section. - -#### Platforms - -Query for available platforms. - -```typescript -import { ConseilMetadataClient } from 'conseiljs'; -import * as util from 'util'; - -const conseilServerInfo = { url: '', apiKey: '' }; - -async function listPlatforms() { - const platforms = await ConseilMetadataClient.getPlatforms(conseilServerInfo); - console.log(`${util.inspect(platforms, false, 2, false)}`); -} - -listPlatforms(); -``` - -A result set may look like this: - -```json -[ { "name": "tezos", "displayName": "Tezos" } ] -``` - -#### Networks - -Query for networks under the `Tezos` platform. - -```typescript -import { ConseilMetadataClient } from 'conseiljs'; -import * as util from 'util'; - -const conseilServerInfo = { url: '', apiKey: '' }; - -async function listNetworks() { - const platforms = await ConseilMetadataClient.getNetworks(conseilServerInfo, 'tezos'); - console.log(`${util.inspect(platforms, false, 2, false)}`); -} - -listNetworks(); -``` - -The service might return: - -```json -[ { "name": "zeronet", "displayName": "Zeronet", "platform": "tezos", "network": "zeronet" }, - { "name": "alphanet", "displayName": "Alphanet", "platform": "tezos", "network": "alphanet" } ] -``` - -#### Entities - -Query for available chain entities on `Tezos` `alphanet`. -```typescript -import { ConseilMetadataClient } from 'conseiljs'; -import * as util from 'util'; - -const conseilServerInfo = { url: '', apiKey: '' }; - -async function listEntities() { - const platforms = await ConseilMetadataClient.getEntities(conseilServerInfo, 'tezos', 'alphanet'); - console.log(`${util.inspect(platforms, false, 2, false)}`); -} - -listEntities(); -``` - -We might get: - -```json -[ { "name": "accounts", "displayName": "Accounts", "count": 18782 }, - { "name": "accounts_checkpoint", "displayName": "Accounts checkpoint", "count": 15 }, - { "name": "bakers", "displayName": "Bakers", "count": 7588390 }, - { "name": "balance_updates", "displayName": "Balance updates", "count": 7352650 }, - { "name": "ballots", "displayName": "Ballots", "count": 0 }, - { "name": "blocks", "displayName": "Blocks", "count": 288222 }, - { "name": "fees", "displayName": "Fees", "count": 1183 }, - { "name": "operation_groups", "displayName": "Operation groups", "count": 2156141 }, - { "name": "operations", "displayName": "Operations", "count": 2179936 }, - { "name": "proposals", "displayName": "Proposals", "count": 0 } ] -``` - -#### Entity Attributes - -Entities can be queried for their properties as follows. - -```typescript -import { ConseilMetadataClient } from 'conseiljs'; -import * as util from 'util'; - -const conseilServerInfo = { url: '', apiKey: '' }; - -async function listAttributes() { - const platforms = await ConseilMetadataClient.getAttributes(conseilServerInfo, 'tezos', 'alphanet', 'operations'); - console.log(`${util.inspect(platforms, false, 2, false)}`); -} - -listAttributes(); -``` - -A result may look like this. The sample has been truncated for size. - -```json -[ { "name": "operation_id", "displayName": "Operation id", "dataType": "Int", "keyType": "UniqueKey", "entity": "operations" }, - { "name": "operation_group_hash", "displayName": "Operation group hash", "dataType": "String", "cardinality": 2147676, "keyType": "NonKey", "entity": "operations" }, - { "name": "kind", "displayName": "Kind", "dataType": "String", "cardinality": 8, "keyType": "NonKey", "entity": "operations" }, - { "name": "level", "displayName": "Level", "dataType": "Int", "keyType": "NonKey", "entity": "operations" }, - { "name": "delegate", "displayName": "Delegate", "dataType": "String", "cardinality": 133, "keyType": "NonKey", "entity": "operations" }, - { "name": "slots", "displayName": "Slots", "dataType": "String", "cardinality": 690305, "keyType": "NonKey", "entity": "operations" }, - { "name": "nonce", "displayName": "Nonce", "dataType": "String", "cardinality": 8889, "keyType": "NonKey", "entity": "operations" }, - { "name": "pkh", "displayName": "Pkh", "dataType": "String", "cardinality": 1532, "keyType": "NonKey", "entity": "operations" }, - { "name": "secret", "displayName": "Secret", "dataType": "String", "cardinality": 1532, "keyType": "NonKey", "entity": "operations" }, - { "name": "source", "displayName": "Source", "dataType": "String", "cardinality": 2254, "keyType": "UniqueKey", "entity": "operations" }, - { "name": "fee", "displayName": "Fee", "dataType": "Decimal", "keyType": "NonKey", "entity": "operations" } - ... -] -``` - -#### Attribute Values - -The metadata services provides distinct values for some low-cardinality fields. In this case we're querying for `operation` `kind` on `Tezos` `alphanet`. - -```typescript -import { ConseilMetadataClient } from 'conseiljs'; -import * as util from 'util'; - -const conseilServerInfo = { url: '', apiKey: '' }; - -async function listAttributeValues() { - const platforms = await ConseilMetadataClient.getAttributeValues(conseilServerInfo, 'tezos', 'alphanet', 'operations', 'kind'); - console.log(`${util.inspect(platforms, false, 2, false)}`); -} - -listAttributeValues(); -``` - -Result here is: - -```json -[ "seed_nonce_revelation", "delegation", "transaction", "activate_account", "origination", "reveal", "double_baking_evidence", "endorsement" ] -``` - -This information can be used to create a drop-down list in some UI, or allow for type-ahead-autocomplete, etc. If the returned list is too long to be useful, or to get partial matches on high-cardinality fields, see getAttributeValuesForPrefix. - -#### Attribute Values for Prefix - -For long lists that may not be practical to display in a UI for auto-complete or for fields that the server will not provide attribute lists due to limits on cardinality, use `getAttributeValuesForPrefix(serverInfo, platform, network, entity, attribute, prefix)`. The last parameter of this call should be a few characters long to be effective. - -### Reporting & Analytics Functions - -For the Tezos chain these methods are in the `TezosConseilClient` namespace, in addition to `apiKey`, `Content-Type=application/json` header must be present. All data requests are REST POST. - -#### List transactions for an address - -Notice that it is possible to sort on and filter by fields that are not returned in the result set. Sent and received transactions must be queried for separately. Same address is used as an example: `tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z`. - -```typescript -import { ConseilDataClient, ConseilQueryBuilder, ConseilSortDirection, ConseilOperator } from 'conseiljs'; -import * as util from 'util'; - -const platform = 'tezos'; -const network = 'alphanet'; -const entity = 'operations'; - -const conseilServer = { url: '', apiKey: '' }; - -async function listAccountTransactions() { - let sendQuery = ConseilQueryBuilder.blankQuery(); - sendQuery = ConseilQueryBuilder.addFields(sendQuery, 'block_level', 'timestamp', 'source', 'destination', 'amount', 'fee', 'counter'); - sendQuery = ConseilQueryBuilder.addPredicate(sendQuery, 'kind', ConseilOperator.EQ, ['transaction'], false); - sendQuery = ConseilQueryBuilder.addPredicate(sendQuery, 'source', ConseilOperator.EQ, ['tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z'], false); - sendQuery = ConseilQueryBuilder.addPredicate(sendQuery, 'status', ConseilOperator.EQ, ['applied'], false); - sendQuery = ConseilQueryBuilder.addOrdering(sendQuery, 'block_level', ConseilSortDirection.DESC); - sendQuery = ConseilQueryBuilder.setLimit(sendQuery, 100); - - let receiveQuery = ConseilQueryBuilder.blankQuery(); - receiveQuery = ConseilQueryBuilder.addFields(receiveQuery, 'block_level', 'timestamp', 'source', 'destination', 'amount', 'fee', 'counter'); - receiveQuery = ConseilQueryBuilder.addPredicate(receiveQuery, 'kind', ConseilOperator.EQ, ['transaction'], false); - receiveQuery = ConseilQueryBuilder.addPredicate(receiveQuery, 'destination', ConseilOperator.EQ, ['tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z'], false); - receiveQuery = ConseilQueryBuilder.addPredicate(receiveQuery, 'status', ConseilOperator.EQ, ['applied'], false); - receiveQuery = ConseilQueryBuilder.addOrdering(receiveQuery, 'block_level', ConseilSortDirection.DESC); - receiveQuery = ConseilQueryBuilder.setLimit(receiveQuery, 100); - - const sendResult = await ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, sendQuery); - const receiveResult = await ConseilDataClient.executeEntityQuery(conseilServer, platform, network, entity, receiveQuery); - const transactions = sendResult.concat(receiveResult).sort((a, b) => { return a['timestamp'] - b['timestamp'] }); - - console.log(`${util.inspect(transactions, false, 2, false)}`); -} - -listAccountTransactions(); -``` - -A result of that request might look like this. - -```json -[ { "source": "tz1WpPzK6NwWVTJcXqFvYmoA6msQeVy1YP6z", - "timestamp": 1554614628000, - "block_level": 286240, - "amount": 500000, - "counter": 36041, - "destination": "tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2", - "fee": 1500 } ] -``` - -#### List transactions for an account within a date range - -#### List all originated accounts - -#### List all managed accounts - -#### List all smart contracts - -#### List top-10 bakers by balance - -#### List top-10 bakers by delegator count - -#### Export a large dataset to csv - -### Namespaces - -#### ConseilQueryBuilder - -This collection of methods crates entity queries. - -##### blankQuery() - -This method creates a minimum viable query that can be sent a Conseil data service like `TezosConseilClient`. - -##### addFields(query, ...fields) - -By default, all fields are returned, but using the information from the ConseilMetadataClient for the appropriate platform/network/entity combination. - -##### addPredicate(query, field, operation, values, invert) - -Several predicate operations are supported. For string values: `EQ`, `IN`, `LIKE`, `STARTSWITH`, `ENDSWITH`, `ISNULL`. For numbers and dates: `EQ`, `IN`, `BETWEEN`, `LT` or `BEFORE`, `GT` or `AFTER`, `ISNULL`. The operation values are located in the `ConseilOperator` enum. The difference between `LIKE` and `STARTSWITH` and `ENDSWITH`, is that the former will do a match at any point in the text. - -There are limitations on the contents of the values array depending on the supplied operation. `EQ` requires a single value, `IN` an contain multiple, `BETWEEN` only accepts two. - -The last parameter is to allow for queries like `not in`, or `is not null`, `!=`. Default is `false`. - -##### addOrdering(query, field, direction) - -One or more ordering instructions can be added to a query and they may be applied on fields that are not part of the result set. - -The default direction is `ASC`. Direction values are in the `ConseilSortDirection` enum. - -##### setLimit(query, limit) - -The default record set is 100 rows. This can be changed using this method, however the server may override the request. - -##### setOutputType(query, outputType) - -By default, the service will return json data. For large datasets this is suboptimal. This function sets the output parameter of the ConseilQuery to one of 'json' or 'csv' as defined in `ConseilOutput` enum. - -##### addAggregationFunction(query, field, aggregationFunction) - -It is possible to apply an aggregation function to a field in the query. This field must be present in the `fields` collection. The aggregation function is one of `avg`, `count`, `max`, `min`, `sum` as defined in the `ConseilFunction` enum. `count` can be applied to any field type; `max`, `min` can be applied to a datetime or numeric fields, while `avg` and `sum` are only valid on numeric fields. - -#### ConseilMetadataClient - -For details, see [API Examples](#metadata-discovery-functions) below. - -#### ConseilDataClient - -#### TezosConseilClient - -Functions for querying the Conseil back-end REST API v2 for Tezos. This functionality is offered by wrapping ConseilDataClient for Tezos-specific entities. - -All of these methods require Conseil connection object which is a URL and API key. The `serverInfo` parameter below is of type `ConseilServerInfo`. Some of the methods also take a `query` parameter of type `ConseilQuery`, these are best constructed with `ConseilQueryBuilder` described [earlier](#ConseilQueryBuilder). - -##### getBlockHead(serverInfo, network) - -Returns the most recent block on the chain for a given `network`. Internally this is implemented with a `ConseilQuery` ordered by block level with limit 1. All block entity fields are returned. To get just a subset of fields, use `getBlocks(serverInfo, network, query)`. - -##### getBlock(serverInfo, network, hash) - -Returns a specific block with the given `hash` and `network`. All block entity fields are returned. To get just a subset of fields, use `getBlocks(serverInfo, network, query)`. - -##### getAccount(serverInfo, network, accountID) - -Returns a specific account on the given `network` with the provided `accountID`. In Tezos account id, account address, public key hash (phk) all refer to the same thing. All account entity fields are returned. To get just a subset of fields, use `getAccounts(serverInfo, network, query)`. - -##### getOperationGroup(serverInfo, network, operationGroupID) - -Returns a specific operation group on the given `network` with the provided `operationGroupID`. In Tezos individual operations are not keyed. All operation group entity fields are returned. To get just a subset of fields, use `getOperationGroups(serverInfo, network, query)`. - -##### getBlocks(serverInfo, network, query) - -Returns block information subject to the provided `query` on a given `network`. - -##### getAccounts(serverInfo, network, query) - -Returns account information subject to the provided `query` on a given `network`. - -##### getOperationGroups(serverInfo, network, query) - -Returns operation group information subject to the provided `query` on a given `network`. - -##### getOperations(serverInfo, network, query) - -Returns operation information subject to the provided `query` on a given `network`. - -##### getProposals(serverInfo, network, query) - -Returns proposal information subject to the provided `query` on a given `network`. - -##### getBakers(serverInfo, network, query) - -Returns baker information subject to the provided `query` on a given `network`. - -##### getBallots(serverInfo, network, query) - -Returns ballot information subject to the provided `query` on a given `network`. - -##### getFeeStatistics(serverInfo, network, operationType) - -Conseil indexer calculates running average fees by operation type. This is a convenience method to get that information. [Tezori](https://github.com/Cryptonomic/Tezori/blob/master/app/utils/general.js#L168) for example uses this information to suggest an appropriate fee to the user via a drop-down. - -#### TezosHardwareWallet - -Functions for interaction with the Tezos node via a Hardware wallet. (Only Ledger Nano S for now) - -#### TezosMessageCodec - -A collection of functions to encode and decode various Tezos P2P message components - -#### TezosNodeReader - -Utility functions for interacting with the Tezos node. - -#### TezosNodeWriter - -Functions for sending operations on the Tezos network. - -#### TezosFileWallet - -Functions for Tezos wallet functionality. - -#### TezosTypes - -Types used to process data returned from Conseil server. - -## Contribute - -There are many ways to contribute to this project. You can develop applications or dApps with it. You can submit bug reports or feature requests. You can ask questions about it on [r/Tezos](http://reddit.com/r/tezos/) or the [Tezos StackExchange](https://tezos.stackexchange.com). We certainly welcome pull requests as well. - -### Known Issues - -- Some of the P2P messages are not implemented, specifically those used in baking operations. - -### Dependency Requirements -- AWS-SDK dependency must remain as the Ledger Connect feature requires it. - -### NPM Target Overview - -#### `npm run test` -#### `npm run coverage` -#### `npm run format` - -## Other references - -[Wiki](https://github.com/Cryptonomic/ConseilJS/wiki/Tutorial:-Querying-for-Tezos-alphanet-data-using-the-ConseilJS-v2-API) - -[Riot Dev Channel](https://matrix.to/#/!rUwpbdwWhWgKINPyOD:cryptonomic.tech?via=cryptonomic.tech&via=matrix.org&via=ostez.com) - -[Cryptonomic Reddit](https://www.reddit.com/r/cryptonomic) - -[The Cryptonomic Aperiodical](https://medium.com/the-cryptonomic-aperiodical) - -[@CryptonomicTech](https://twitter.com/CryptonomicTech) diff --git a/grammar/tezos/Michelson.ne b/grammar/tezos/Michelson.ne deleted file mode 100644 index 47e50e28..00000000 --- a/grammar/tezos/Michelson.ne +++ /dev/null @@ -1,813 +0,0 @@ -@{% -const moo = require("moo"); - -/* - Assumptions: - - Grammar defined here: http://tezos.gitlab.io/mainnet/whitedoc/michelson.html#xii-full-grammar - - In lexer, types and instructions may have zero, one, two, or three arguments based on the keyword. - - Issue: Some keywords like "DIP" can have zero and one arguments, and the lexer is order-dependent from top to bottom. - This may impact parsing and lead to awkward parse errors, and needs to be addressed accordingly. - - Issue: Splitting instructions by number of arguments hasn't been done, so certain invalid michelson expressions like - "PAIR key key {DROP;}" will pass through even though PAIR is a constant expression. This is a false positive. - - Issue: Some macros are still not implemented: http://tezos.gitlab.io/mainnet/whitedoc/michelson.html#macros - - Issue: There is an ambiguous parsing between commands LE and LEFT. - - Issue: In general, if you have multiple Michelson instructions in a code block, all of them, no matter how nested, - need to have a semicolon at the end, unless it's a singleton code block. In regular Michelson, you can have the very - last instruction in a code block not have a semicolon. A workaround has been made, but this sometimes results - in multiple parse results that are equivalent. In this case, we postprocess to get a single entry instead - - Postprocessor functions and grammar definitions could use a proper refactor - - While the lexer has achieved a significant speedup, certain macros are defined by a grammar, and as such, have an infinitude - - of inputs, accounting for that in the lexer is necessary - - PUSH , data can be empty, but fixing this causes bugs elsewhere for unknown reasons - - We do not handle instances where parameter, storage, and code are given in a separate order - - There is a function called CREATE_CONTRACT which can create a contract inside of a contract, including the parameter, - storage, and code definitions. We do not handle this nesting, as we do a lot of preprocessing outside of the grammar. - - There may not be an exhaustive handling of annotations for types, but it should be covered for instructions -*/ - -/* - Lexer to parse keywords more efficiently. -*/ -const lexer = moo.compile({ - annot: ["%",":","@"], - lparen: '(', - rparen: ')', - lbrace: '{', - rbrace: '}', - ws: /[ \t]+/, - semicolon: ";", - comparableType: ['int', 'nat', 'string', 'bytes', 'mutez', 'bool', 'key_hash', 'timestamp'], - constantType: ['key', 'unit', 'signature', 'operation', 'address'], - singleArgType: ['option', 'list', 'set', 'contract'], - doubleArgType: ['pair', 'or', 'lambda', 'map', 'big_map'], - type: ['key', 'unit', 'signature', 'option', 'list', 'set', 'operation', 'address', 'contract', 'pair', 'or', 'lambda', 'map', 'big_map'], - instruction: ['DROP', 'DUP', 'SWAP', 'SOME', 'NONE', 'UNIT', 'IF_NONE', 'PAIR', 'CAR', 'CDR', 'LEFT', 'RIGHT', 'IF_LEFT', 'IF_RIGHT', - 'NIL', 'CONS', 'IF_CONS', 'SIZE', 'EMPTY_SET', 'EMPTY_MAP', 'MAP', 'ITER', 'MEM', 'GET', 'UPDATE', 'IF', 'LOOP', 'LOOP_LEFT', - 'LAMBDA', 'EXEC', 'DIP', 'FAILWITH', 'CAST', 'RENAME', 'CONCAT', 'SLICE', 'PACK', 'UNPACK', 'ADD', 'SUB', 'MUL', 'EDIV', 'ABS', 'NEG', - 'LSL', 'LSR', 'OR', 'AND', 'XOR', 'NOT', 'COMPARE', 'EQ', 'NEQ', 'LT', 'GT', 'LE', 'GE', 'SELF', 'CONTRACT', 'TRANSFER_TOKENS', - 'SET_DELEGATE', 'CREATE_CONTRACT', 'IMPLICIT_ACCOUNT', 'NOW', 'AMOUNT', 'BALANCE', 'CHECK_SIGNATURE', 'BLAKE2B', 'SHA256', - 'SHA512', 'HASH_KEY', 'STEPS_TO_QUOTA', 'SOURCE', 'SENDER', 'ADDRESS', 'FAIL', 'CDAR', 'CDDR', 'DUUP', 'DUUUP', 'DUUUUP', - 'DUUUUUP', 'DUUUUUUP', 'DUUUUUUUP', 'DIIP', 'DIIIP', 'DIIIIP', 'DIIIIIP', 'DIIIIIIP', 'DIIIIIIIP', 'REDUCE', 'CMPLT', 'UNPAIR', 'CMPGT', - 'CMPLE', 'CMPGE', 'UNPAPAIR', 'CAAR', 'CDDDDADR', 'CDDADDR', 'CDADDR', 'CDADAR', 'IFCMPEQ', 'CDDDADR', 'CADAR', 'CDDDAAR', - 'CADDR', 'CDDDDR', 'CDDAAR', 'CDDADAR', 'CDDDDDR', 'CDDDDAAR', 'ASSERT_CMPGE', 'CDAAR', 'CDADR', 'CDDAR', 'CDDDR', - 'CMPEQ', 'CAAR', 'CAAAR', 'CAAAAR', 'CAAAAAR', 'CAAAAAAR', 'CAAAAAAAR', 'CDDR', 'CDDDR', 'CDDDDR', 'CDDDDDR', 'CDDDDDDR', 'CDDDDDDDR', - 'ASSERT_CMPEQ', 'ASSERT_CMPLT', 'ISNAT', 'IFCMPGT', 'IFCMPGE', 'IFCMPLT', 'IFCMPLE', 'IF_SOME', 'CADR' ], - data: ['Unit', 'True', 'False', 'Left', 'Right', 'Pair', 'Some', 'None', 'instruction'], - constantData: ['Unit', 'True', 'False', 'None', 'instruction'], - singleArgData: ['Left', 'Right', 'Some'], - doubleArgData: ['Pair'], - singleArgTypeData: ['option', 'list', 'set', 'contract', 'Left', 'Right', 'Some'], - doubleArgTypeData: ['pair', 'or', 'lambda', 'map', 'big_map', 'Pair'], - elt: "Elt", - number: /-?[0-9]+/, - word: /[a-zA-z_0-9]+/, - string: /"(?:\\["\\]|[^\n"\\])*"/ -}); -%} - -# Pass your lexer object using the @lexer option: -@lexer lexer - -# Main endpoint, parameter, storage, and code are necessary for user usage. Instruction, data, and type are for testing purposes. -main -> instruction {% id %} | data {% id %} | type {% id %} | parameter {% id %} | storage {% id %} | code {% id %} | script {% id %} | parameterValue {% id %} | storageValue {% id %} | typeData {% id %} -script -> parameter _ storage _ code {% scriptToJson %} - -parameter -> "parameter" | "Parameter" -storage -> "Storage" | "storage" -code -> "Code" | "code" - -parameterValue -> parameter _ typeData _ semicolons {% singleArgKeywordToJson %} -storageValue -> storage _ typeData _ semicolons {% singleArgKeywordToJson %} - -parameter -> parameter _ type _ semicolons {% singleArgKeywordToJson %} -storage -> storage _ type _ semicolons {% singleArgKeywordToJson %} -code -> code _ subInstruction _ semicolons _ {% d => d[2] %} - | %code _ "{};" {% d => "code {}" %} - -# Grammar of a Michelson type -type -> - %comparableType {% keywordToJson %} - | %constantType {% keywordToJson %} - | %singleArgType _ type {% singleArgKeywordToJson %} - | %lparen _ %singleArgType _ type _ %rparen {% singleArgKeywordWithParenToJson %} - | %doubleArgType _ type _ type {% doubleArgKeywordToJson %} - | %lparen _ %doubleArgType _ type _ type _ %rparen {% doubleArgKeywordWithParenToJson %} - | %comparableType (_ %annot (%storage|%string|%word)):+ {% keywordToJson %} - | %constantType (_ %annot (%storage|%string|%word)):+ {% keywordToJson %} - | %lparen _ %comparableType (_ %annot (%storage|%string|%word)):+ _ %rparen {% comparableTypeToJson %} - | %lparen _ %constantType (_ %annot (%storage|%string|%word)):+ _ %rparen {% comparableTypeToJson %} - | %lparen _ %singleArgType (_ %annot (%storage|%string|%word)):+ _ type %rparen {% singleArgTypeKeywordWithParenToJson %} - | %lparen _ %doubleArgType (_ %annot (%storage|%string|%word)):+ _ type _ type %rparen {% doubleArgTypeKeywordWithParenToJson %} -# | %singleArgType _ type {% singleArgKeywordToJson %} -# | %lparen _ %singleArgType _ type %rparen {% singleArgKeywordWithParenToJson %} -# | %doubleArgType _ type _ type {% doubleArgKeywordToJson %} -# | %lparen _ %doubleArgType _ type _ type %rparen {% doubleArgKeywordWithParenToJson %} - -typeData -> - %singleArgTypeData _ typeData {% singleArgKeywordToJson %} - | %lparen _ %singleArgTypeData _ typeData _ %rparen {% singleArgKeywordWithParenToJson %} - | %doubleArgTypeData _ typeData _ typeData {% doubleArgKeywordToJson %} - | %lparen _ %doubleArgTypeData _ typeData _ typeData _ %rparen {% doubleArgKeywordWithParenToJson %} - | %data {% keywordToJson %} - | %data _ typeData {% singleArgKeywordToJson %} - | %data _ typeData _ typeData {% doubleArgKeywordToJson %} - | subTypeData {% id %} - | subTypeElt {% id %} - | %number {% intToJson %} - | %string {% stringToJson %} - | %word {% stringToJson %} - #| %lbrace _ %rbrace {% d => [] %} -# Helper grammar for list of michelson data types. -subTypeData -> - "{" _ (data ";" _):+ "}" {% instructionSetToJsonSemi %} - | "(" _ (data ";" _):+ ")" {% instructionSetToJsonSemi %} -# Helper grammar for list of pairs of michelson data types. -subTypeElt -> - "{" _ (typeElt ";" _):+ "}" {% instructionSetToJsonSemi %} - | "(" _ (typeElt ";" _):+ ")" {% instructionSetToJsonSemi %} -typeElt -> %elt _ typeData _ typeData {% doubleArgKeywordToJson %} - -# Helper pattern for lists of michelson instructions -subInstruction -> %lbrace _ (instruction _ %semicolon _):+ instruction _ %rbrace {% instructionSetToJsonNoSemi %} #If last instruction doesn't have semicolon - | %lbrace _ (instruction _ %semicolon _):+ %rbrace {% instructionSetToJsonSemi %} #If last instruction has semicolon - | %lbrace _ instruction _ %rbrace {% d => d[2] %} - | %lbrace _ %rbrace {% d => "" %} - -# Grammar for michelson instruction. -instruction -> - subInstruction {% id %} - | %instruction {% keywordToJson %} - | %instruction (_ %annot (%parameter|storage|%word|%string)):+ {% keywordToJson %} - | %instruction _ subInstruction {% singleArgInstrKeywordToJson %} - | %instruction (_ %annot (%parameter|storage|%word|%string)):+ _ subInstruction {% singleArgTypeKeywordToJson %} - | %instruction _ type {% singleArgKeywordToJson %} - | %instruction (_ %annot (%parameter|storage|%word|%string)):+ _ type {% singleArgTypeKeywordToJson %} - | %instruction _ data {% singleArgKeywordToJson %} - | %instruction (_ %annot (%parameter|storage|%word|%string)):+ _ data {% singleArgTypeKeywordToJson %} - | %instruction _ type _ type _ subInstruction {% tripleArgKeyWordToJson %} - | %instruction (_ %annot (%parameter|storage|%word|%string)):+ _ type _ type _ subInstruction {% tripleArgTypeKeyWordToJson %} - | %instruction _ subInstruction _ subInstruction {% doubleArgInstrKeywordToJson %} - | %instruction (_ %annot (%parameter|storage|%word|%string)):+ _ subInstruction _ subInstruction {% doubleArgTypeKeywordToJson %} - | %instruction _ type _ type {% doubleArgKeywordToJson %} - | %instruction (_ %annot (%parameter|storage|%word|%string)):+ _ type _ type {% doubleArgTypeKeywordToJson %} - | "PUSH" _ type _ data {% doubleArgKeywordToJson %} - # | %instruction _ type _ %lbrace %rbrace {% pushToJson %} - | "PUSH" (_ %annot (%parameter|%storage|%word)):+ _ type _ data {% pushWithAnnotsToJson %} - | %lbrace _ %rbrace {% d => "" %} - -# Grammar for michelson data. -data -> - %data {% keywordToJson %} - | %data _ data {% singleArgKeywordToJson %} - | %data _ data _ data {% doubleArgKeywordToJson %} - | %lparen _ %data _ data _ data _ %rparen {% doubleArgKeywordWithParenToJson %} - | subData {% id %} - | subElt {% id %} - | %number {% intToJson %} - | %string {% stringToJson %} - | %word {% stringToJson %} - #| %lbrace _ %rbrace {% d => [] %} -# Helper grammar for list of michelson data types. -subData -> - "{" _ (data ";" _):+ "}" {% instructionSetToJsonSemi %} - | "(" _ (data ";" _):+ ")" {% instructionSetToJsonSemi %} -# Helper grammar for list of pairs of michelson data types. -subElt -> - "{" _ (elt ";" _):+ "}" {% instructionSetToJsonSemi %} - | "(" _ (elt ";" _):+ ")" {% instructionSetToJsonSemi %} -elt -> %elt _ data _ data {% doubleArgKeywordToJson %} - - -# Helper grammar for whitespace. -_ -> [\s]:* -# Helper grammar for semicolons. -semicolons -> null | semicolons ";" - -@{% - - const checkC_R = c_r => { - var pattern = new RegExp('^C(A|D)(A|D)+R$') - return pattern.test(c_r) - } - - const mapper = a_or_d => { - switch(a_or_d) { - case "A": - return keywordToJson(['CAR']) - case "D": - return keywordToJson(['CDR']) - } - } - - const expandC_R = (c_r, annot) => { - var as_and_ds = c_r.substring(1,c_r.length-1) - var expandedC_R = as_and_ds.split('').map(x => mapper(x)) - //if annotations, put in last element of array - if (annot != null) { - const lastChar = as_and_ds[as_and_ds.length-1] - if (lastChar == 'A') { - expandedC_R[expandedC_R.length-1] = `{ "prim": "CAR", "annots": [${annot}] }` - } - if (lastChar == 'D') { - expandedC_R[expandedC_R.length-1] = `{ "prim": "CDR", "annots": [${annot}] }` - } - } - return `[${expandedC_R}]` - } - - //input: C*R - //remove first and last characters from string - //A -> keywordToJson(['CAR']) - //D -> keywordToJson(['CDR']) - // if annotations, put in last element of array - //return `${mappedArray}` - - const check_compare = cmp => - { - var pattern = new RegExp('^CMP(NEQ|EQ|GT|LT|GE|LE)$') - return pattern.test(cmp) - } - - const expand_cmp = (cmp, annot) => { - var op = cmp.substring(3) - var binary_op = keywordToJson([`${op}`]) - var compare = keywordToJson(['COMPARE']) - if (annot != null) { - binary_op = `{ "prim": "${op}", "annots": [${annot}] }`; - } - var result = [compare, binary_op] - return `[${result}]` - } - //input : CMP* - //take last characters of string that aren't CMP -> keywordToJson([last]) - // if annotations, put in last element of array - //return '${[keywordToJson(['COMPARE'])], ^} - - const check_dup = dup => - { - var pattern = new RegExp('^DUU+P$') - return pattern.test(dup) - } - - //currently does not handle annotations - const expand_dup = (dup, annot) => { - var pattern = new RegExp('^DUU+P$') - if (pattern.test(dup)) { - var newDup = dup.substring(0,1) + dup.substring(2) - var innerDup = expand_dup(newDup, annot) - return `[{ "prim": "DIP", "args": [ ${innerDup} ] },{"prim":"SWAP"}]`; - } - else { - if (annot == null) { - return `[{ "prim": "DUP" }]`; - } - else { - return `[{ "prim": "DUP", "annots": [${annot}] }]`; - } - } - /* - - if (dup == "DUP") { - return `{ "prim": "${dup}" }`; - - } - - if (dup == "DUUP") { - if (annot == null) { - - } - else { - - } - } - - - const newDup = dup.substring(1,dup.length-1) - - const dip = keywordToJson(['DIP']); - var dips = [] - - const swap = keywordToJson(['SWAP']); - var finalSwap = swap - if (annot != null) { - finalSwap = `{ "prim": "SWAP", "annots": [${annot}] }` - } - var swaps = [] - - for (let i = 0; i < newDup.length; i++) { - dips.push(dip); - swaps.push(swap); - } - - swaps[swaps.length-1] = finalSwap - - return `[${dips}, ${[keywordToJson(['DUP'])]}, ${swaps}]` - */ - - } - //input : D(U*)P - // DUP -> DUP - // DU(U+)P -> n = |U+|, repeat n keywordToJson(['DIP']); keywordToJson(['DUP']); repeat n keywordToJson(['SWAP']); - // // if no annot, return duuuup put annot in swap otherwise - - const check_assert = assert => - { - var pattern = new RegExp('^ASSERT$|^ASSERT_(EQ|NEQ|GT|LT|GE|LE|NONE|SOME|LEFT|RIGHT|CMPEQ|CMPNEQ|CMPGT|CMPLT|CMPGE|CMPLE)$') - return pattern.test(assert) - } - - const expand_assert = (assert, annot) => { - //input : ASSERT_CMP** - //ASSERT -> {"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]} - //ASSERT_* -> same as above, but [] -> expand * (comparison ops, CMP_comparison ops) - //ASSERT_NONE => IF_NONE {} {FAIL} - //ASSERT_SOME => IF_NONE {FAIL} {} - //ASSERT_LEFT => IF_LEFT {} {FAIL} - //ASSERT_RIGHT => IF_LEFT {FAIL} {} - // last five characters -> expand_cmp - // return [expand_cmp, assert] if no annot, put annot in assert otherwise - // if annotations, put in last element of array - switch (assert) { - case 'ASSERT': - if (annot == null) { - return `[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPEQ': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPGE': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPGT': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPLE': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPLT': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPNEQ': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_EQ': - if (annot == null) { - return `[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]]` - } - else { - return `[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_GE': - if (annot == null) { - return `[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_GT': - if (annot == null) { - return `[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_LE': - if (annot == null) { - return `[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_LT': - if (annot == null) { - return `[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_NEQ': - if (annot == null) { - return `[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - } - } - - const check_fail = fail => { - return fail == "FAIL"; - } - - const expand_fail = (fail, annot) => { - // if annotations, put in last element of array, if no annot, put annot in FAILWITH otherwise - if (annot == null) { - return `[ { "prim": "UNIT" }, { "prim": "FAILWITH"} ]` - } - else { - return `[ { "prim": "UNIT" }, { "prim": "FAILWITH", "annots": [${annot}]} ]` - } - } - - const check_if = ifStatement => { - var pattern = new RegExp('^IF(EQ|NEQ|GT|LT|GE|LE|CMPEQ|CMPNEQ|CMPGT|CMPLT|CMPGE|CMPLE)$') - return pattern.test(ifStatement) - } - - const expandIF = (ifInstr, ifTrue, ifFalse, annot) => { - //IFEQ, IFGE, IFGT, IFLE, IFLT : EXACTLY THE SAME AS IFCMP, JUST REMOVE COMPARE - // if annotations, put in last element of array - switch (ifInstr) { - case 'IFCMPEQ': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPGE': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPGT': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPLE': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPLT': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPNEQ': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFEQ': - if (annot == null) { - return `[{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFGE': - if (annot == null) { - return `[{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFGT': - if (annot == null) { - return `[{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFLE': - if (annot == null) { - return `[{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFLT': - if (annot == null) { - return `[{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFNEQ': - if (annot == null) { - return `[{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - } - } - - const check_dip = dip => { - var pattern = new RegExp('^DII+P$') - return pattern.test(dip) - } - - const expandDIP = (dip, instruction, annot) => { - //switch (dip) { - // case 'DIIP': - // return `[{ "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ ${instruction} ] ] } ] ] }]`; - //} - - // ANNOTATION LAST ONE - // DIP code -> return `{ "prim": "DIP", "args": [ [ ${code} ] ] }`; - // DI(I+)P code -> return `{ "prim": "DIP", "args": [ [ ${expandDIP(D(I+)P, instruction)} ] ] }`; - - var pattern = new RegExp('^DII+P$') - if (pattern.test(dip)) { - var newDip = dip.substring(0,1) + dip.substring(2) - var innerDip = expandDIP(newDip, instruction, annot) - return `[{ "prim": "DIP", "args": [ ${innerDip} ] }]`; - } - else { - //add annotation in this branch - if (annot == null) { - return `[{ "prim": "DIP", "args": [ [ ${instruction} ] ] }]`; - } - else { - return `[{ "prim": "DIP", "args": [ [ ${instruction} ] ], "annots": [${annot}] }]`; - } - } - - } - - //until we have proper checks for these cases - const check_other = word => { - return word == "UNPAIR" || word == "UNPAPAIR" - } - - const expand_other = (word, annot) => { - if (word == 'UNPAIR') { - if (annot == null) { - return '[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]' - } - else { - return `[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ], "annots": [${annot}] } ] ]` - } - } - if (word == 'UNPAPAIR') { - if (annot == null) { - return `[ [ { "prim": "DUP" }, - { "prim": "CAR" }, - { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], - {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]]}]]]}] ` - } - else { - return `[ [ { "prim": "DUP" }, - { "prim": "CAR" }, - { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], - {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]],"annots": [${annot}]}]]]}] ` - } - } - } - - const checkKeyword = word => { - return check_assert(word) - || check_compare(word) - || check_dip(word) - || check_dup(word) - || check_fail(word) - || check_if(word) - || checkC_R(word) - || check_other(word) - } - - const expandKeyword = (word, annot) => { - if (checkC_R(word)) { - return expandC_R(word, annot) - } - if (check_assert(word)) { - return expand_assert(word, annot) - } - if (check_compare(word)) { - return expand_cmp(word, annot) - } - if (check_dip(word)) { - return expandDIP(word, annot) - } - if (check_dup(word)) { - return expand_dup(word, annot) - } - if (check_fail(word)) { - return expand_fail(word, annot) - } - if (check_if(word)) { - return expandIF(word, annot) - } - if (check_other(word)) { - return expand_other(word, annot) - } - } - - /** - * Given a int, convert it to JSON. - * Example: "3" -> { "int": "3" } - */ - const intToJson = d => { return `{ "int": "${parseInt(d[0])}" }`; } - - /** - * Given a string, convert it to JSON. - * Example: "string" -> "{ "string": "blah" }" - */ - const stringToJson = d => { return `{ "string": ${d[0]} }`; } - - /** - * Given a keyword, convert it to JSON. - * Example: "int" -> "{ "prim" : "int" }" - */ - const keywordToJson = d => { - const word = d[0].toString() - if (d.length == 1) { - if (checkKeyword(word)) { - return [expandKeyword(word, null)] - } - else { - return `{ "prim": "${d[0]}" }`; - } - } - else { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - if (checkKeyword(word)) { - return [expandKeyword(word, annot)] - } - else { - return `{ "prim": "${d[0]}", "annots": [${annot}] }`; - } - } - } - - /* - const typeKeywordToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[0]}", "annots": [${annot}] }`; - } - */ - - /** - * Given a keyword with one argument, convert it to JSON. - * Example: "option int" -> "{ prim: option, args: [int] }" - */ - const singleArgKeywordToJson = d => { return `{ "prim": "${d[0]}", "args": [ ${d[2]} ] }`; } - //changed 5 secs ago - - const comparableTypeToJson = d => { - const annot = d[3].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[2]}", "annots": [${annot}] }`; - } - - const singleArgTypeKeywordWithParenToJson = d => { - const annot = d[3].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[2]}", "args": [ [ ${d[7]} ] ], "annots": [${annot}] }`; - } - - const singleArgInstrKeywordToJson = d => { - const word = `${d[0].toString()}` - if (check_dip(word)) { - return expandDIP(word, d[2]) - } - else { - return `{ "prim": "${d[0]}", "args": [ [ ${d[2]} ] ] }`; - } - } - - const singleArgTypeKeywordToJson = d => { - const word = `${d[0].toString()}` - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - if (check_dip(word)) { - return expandDIP(word, d[2], annot) - } - else { - return `{ "prim": "${d[0]}", "args": [ ${d[3]} ], "annots": [${annot}] }`; - } - } - - /** - * Given a keyword with one argument and parentheses, convert it to JSON. - * Example: "(option int)" -> "{ prim: option, args: [{prim: int}] }" - */ - const singleArgKeywordWithParenToJson = d => { return `{ "prim": "${d[2]}", "args": [ ${d[4]} ] }`; } - //changed 5 secs ago - /** - * Given a keyword with two arguments, convert it into JSON. - * Example: "Pair unit instruction" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" - */ - const doubleArgKeywordToJson = d => { return `{ "prim": "${d[0]}", "args": [${d[2]}, ${d[4]}] }`; } - - const doubleArgInstrKeywordToJson = d => { - const word = `${d[0].toString()}` - if (check_if(word)) { - return expandIF(word, d[2], d[4]) - } - else { - return `{ "prim": "${d[0]}", "args": [ [${d[2]}], [${d[4]}] ] }`; - } - } - - /** - * Given a keyword with two arguments and parentheses, convert it into JSON. - * Example: "(Pair unit instruction)" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" - */ - const doubleArgKeywordWithParenToJson = d => { return `{ "prim": "${d[2]}", "args": [ ${d[4]}, ${d[6]} ] }`; } - - /** - * Given a keyword with three arguments, convert it into JSON. - * Example: "LAMBDA key unit {DIP;}" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" - */ - const tripleArgKeyWordToJson = d => { return `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, [${d[6]}] ] }`; } - - /** - * Given a keyword with three arguments and parentheses, convert it into JSON. - * Example: "(LAMBDA key unit {DIP;})" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" - */ - const tripleArgKeyWordWithParenToJson = d => { return `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, ${d[6]} ] }`; } - - const nestedArrayChecker = x => { - if (Array.isArray(x)) { - if (Array.isArray(x[0])) { - return x[0] - } - else { - return x - } - } - else { - return x - } - } - - /** - * Given a list of michelson instructions, convert it into JSON. - * Example: "{CAR; NIL operation; PAIR;}" -> - * [ '{ prim: CAR }', - * '{ prim: NIL, args: [{ prim: operation }] }', - * '{ prim: PAIR }' ] - */ - const instructionSetToJsonNoSemi = d => { return d[2].map(x => x[0]).concat(d[3]).map(x => nestedArrayChecker(x)); } - const instructionSetToJsonSemi = d => { return d[2].map(x => x[0]).map(x => nestedArrayChecker(x)); } - - const scriptToJson = d => { - const parameterJson = d[0]; - const storageJson = d[2]; - const codeJson = `{ "prim": "code", "args": [ [ ${d[4]} ] ] }`; - return `[ ${parameterJson}, ${storageJson}, ${codeJson} ]`; - } - - const doubleArgTypeKeywordToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[0]}", "args": [ ${d[4]}, ${d[6]} ], "annots": [${annot}] }`; - } - - const doubleArgTypeKeywordWithParenToJson = d => { - const annot = d[3].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[2]}", "args": [ ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; - } - - const tripleArgTypeKeyWordToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[0]}", "args": [ ${d[3]}, ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; - } - - const pushToJson = d => { - return `{ "prim": "${d[0]}", "args": [${d[2]}, []] }`; - } - - const pushWithAnnotsToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "PUSH", "args": [ ${d[3]}, ${d[5]} ], "annots": [${annot}] }`; - } - -%} diff --git a/integration_test/TezosHDWallet.spec.ts b/integration_test/TezosHDWallet.spec.ts deleted file mode 100644 index a4f88636..00000000 --- a/integration_test/TezosHDWallet.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import 'mocha'; -import {expect} from 'chai'; -//import {TezosLedgerWallet} from '../src/tezos/TezosLedgerWallet'; -import {HardwareDeviceType} from "../src/types/wallet/HardwareDeviceType"; -//const bip32 = require('bip32') -const bip39 = require('bip39') - -describe('getTezosPublicKey()', () => { - it('should correctly fetch the root key', async () => { - const mnemonic = 'fresh legend begin cereal cactus kid reopen maple wild garbage deliver breeze true school unlock initial odor winner steak talk shoot crystal rack glare' - const seed = bip39.mnemonicToSeed(mnemonic) - //const root = bip32.fromSeed(seed) - //const child = root.derivePath("m/44'/1729'/0'/0'/0'") - //console.log(child) - }); -}); diff --git a/integration_test/TezosOperations.spec.ts b/integration_test/TezosOperations.spec.ts deleted file mode 100644 index 328bfc55..00000000 --- a/integration_test/TezosOperations.spec.ts +++ /dev/null @@ -1,384 +0,0 @@ -// Most unit tests are commented out as they can only be run one by one with delays. -// Uncomment specific unit tests to test specific operation logic. -import { expect } from "chai"; -import { TezosNodeWriter } from "../src"; -import * as TezosMessageCodec from "../src/chain/tezos/TezosMessageCodec"; -import "mocha"; -import { servers } from "./servers"; -import { TezosWalletUtil } from "../src"; -import { KeyStore } from "../src/types/wallet/KeyStore"; - -const tezosURL = servers.tezosServer; - -//Software tezos operations do not require a valid derivation path -const invalidDerivationPath = "ighiehgieh"; - -// const keys = TezosWallet.unlockFundraiserIdentity( -// 'bomb sing vacant repair illegal category unveil color olive chest wink expand fringe pioneer reward', -// 'efcvoykz.kygxsosz@tezos.example.org', -// 'BFdu9bDJxC' -// ); - -/*describe('signOperationGroup() and computeOperationHash()', () => { - it('correctly compute an operation hash for the given operation bytes', async () => { - const result = to.signOperationGroup( - '8f90f8f1f79bd69ae7d261252c51a1f5e8910f4fa2712a026f2acadb960416d900020000f10a450269188ebd9d29c6402d186bc381770fae000000000000c3500000001900000026010000000005f5e1000000bad6e61eb7b96f08783a476508e3d83b2bb15e19ff00000002030bb8010000000000000000', - keys - ); - expect(result.signature).to.equal('edsigtu4NbVsyomvHbAtstQAMpXFSKkDxH1YoshhQQmJhVe2pyWRUYvQr7dDLetLvyL7Yi78Pe846mG6hBGLx2WJXkuqSCU6Ff2'); - const result2 = to.computeOperationHash(result); - expect(result2).to.equal('opYgjs8KzFbyPaWpGmkHKSGJX5WeSPjhUs18fxfGqU3SEVjPRWx') - }); -});*/ - -/*describe('sendTransactionOperation()', () => { - it('successfully send a Tezos transaction', async () => { - const result = await TezosNodeWriter.sendTransactionOperation( - tezosURL, - keys, - 'TZ1qcvfsY6Wi2zDk7rjaiSiRY2B9Bax7Zm45', - 100000000, - 50000, - invalidDerivationPath - ); - expect(result.operationGroupID).to.exist - }); -});*/ - -/*describe('sendTransactionOperation()', () => { - const childKeyStore = { - publicKey: keys.publicKey, - privateKey: keys.privateKey, - publicKeyHash: 'TZ1qcvfsY6Wi2zDk7rjaiSiRY2B9Bax7Zm45' - }; - it('successfully send a Tezos transaction from a child account', async () => { - const result = await TezosNodeWriter.sendTransactionOperation( - tezosURL, - childKeyStore, - keys.publicKeyHash, - 100000000, - 50000, - invalidDerivationPath - ); - expect(result.operationGroupID).to.exist - }); -});*/ - -//This test is intentionally commented out to prevent failures with repeat delegation. -//After any changes to the operation logic, the developer should uncomment this test and run it. -/*describe('sendDelegationOperation()', () => { - const delegatedKeyStore = { - publicKey: keys.publicKey, - privateKey: keys.privateKey, - publicKeyHash: 'TZ1Y9jCkazZEkyW22xfaSy3EZDqSAWFvF6RL' - }; - it('correctly delegate to a given account', async () => { - const result = await to.sendDelegationOperation( - tezosURL, - delegatedKeyStore, - 'tz1aj32NRPg49jtvSDhkpruQAFevjaewaLew', - 1, - invalidDerivationPath - ); - console.log(JSON.stringify(result)); - expect(result.operationGroupID).to.exist - }); -});*/ - -/*describe('sendAccountOriginationOperation()', () => { - it('originate an account', async () => { - const result = await TezosNodeWriter.sendAccountOriginationOperation( - tezosURL, - keys, - 100, - keys.publicKeyHash, - true, - true, - 1, - invalidDerivationPath - ); - console.log(JSON.stringify(result)); - expect(result.operationGroupID).to.exist - }); -});*/ - -/*describe('sendKeyRevealOperation()', () => { - it('successfully send a Tezos transaction', async () => { - const result = await TezosNodeWriter.sendKeyRevealOperation( - tezosURL, - keys, - 50000, - invalidDerivationPath - ); - console.log(result) - expect(result.operationGroupID).to.exist - }); -});*/ - -/*describe('sendIdentityActivationOperation()', () => { - it('activate an identity', async () => { - //const newKeys = TezosWallet.unlockFundraiserIdentity( - // 'vendor excite awake enroll essay gather mention knife inmate insect agent become alpha desert menu', - // 'byixpeyi.dofdqvwn@tezos.example.org', - // 'SU0j4HSgbd' - //) - const result = await TezosNodeWriter.sendIdentityActivationOperation( - tezosURL, - keys, - '7e47a409f9baf132ef8c03460aa9eb1fe1878248', - invalidDerivationPath - ); - console.log(JSON.stringify(result)); - expect(result.operationGroupID).to.exist - }); -});*/ - -/*describe('Tezos operation functions', () => { - it('successfully perform operations on a new identity', async () => { - const mnemonic = TezosWallet.generateMnemonic(); - const newKeys = TezosWallet.unlockIdentityWithMnemonic( - mnemonic, - '' - ); - const result = await TezosNodeWriter.sendTransactionOperation( - tezosURL, - keys, - newKeys.publicKeyHash, - 10000, - 50000, - invalidDerivationPath - ); - expect(result.operationGroupID).to.exist; - const result2 = await TezosNodeWriter.sendAccountOriginationOperation( - tezosURL, - newKeys, - 100, - newKeys.publicKeyHash, - true, - true, - 1, - invalidDerivationPath - ); - expect(result2.operationGroupID).to.exist; - const result3 = await TezosNodeWriter.sendDelegationOperation( - tezosURL, - newKeys, - keys.publicKeyHash, - 1 - ); - expect(result3.operationGroupID).to.exist - }); -})*/ - -/*describe('isManagerKeyRevealedForAccount()', () => { - it('should successfully correct report key reveals', async () => { - const ks = { - publicKey: '', - privateKey: '', - publicKeyHash: 'tz1XxQPg1wtWHovbiJqAY1NwxYQJPxjJCzCp' - } - const result = await TezosNodeWriter.isManagerKeyRevealedForAccount( - tezosURL, - ks - ); - console.log(result) - expect(result).to.equal(true) - }); -});*/ - -function sleep(seconds) { - const e = new Date().getTime() + seconds * 1000; - while (new Date().getTime() <= e) {} -} - -describe("Tezos operation functions", () => { - it("successfully perform operations on a new identity", async () => { - const fundraiserKeys = ( - await TezosWalletUtil.unlockFundraiserIdentity( - "major cannon mistake disorder bachelor depart jazz pudding worry attract scrap element uncover tide jump", - "vttufpvh.xgbzugwn@tezos.example.org", - "Wz41fjtUHJ", - "tz1bwsWk3boyGgXf3u7CJGZSTfe14djdRtxG" - ) - ); - - const fundraiserKeySecret = "6da483843eba2526ea6d2c08aa39dd00efa99521"; - - const mnemonic = await TezosWalletUtil.generateMnemonic(); - const randomKeys = ( - await TezosWalletUtil.unlockIdentityWithMnemonic(mnemonic, "") - ); - const inactiveImplicitAddress = randomKeys.publicKeyHash; - const anActiveImplicitAddress = "tz1is75whxxkVvw2cF2FuRo5ANxZwwJ5nEbc"; - const randomDelegatedAddress = "KT1N5t39Lw7zivvgBN9HJJzUuk64GursRzyc"; - const randomBakerAddress1 = "tz1UmPE44pqWrEgW8sTRs6ED1DgwF7k43ncQ"; - const randomBakerAddress2 = "tz1boot2oCjTjUN6xDNoVmtCLRdh8cc92P1u"; - const randomBakerAddress3 = 'tz1YCABRTa6H8PLKx2EtDWeCGPaKxUhNgv47'; //alphanet - - /* - //Activate this section in FIRST run to activate the fundraiser account - //Comment this section out in SECOND round. - console.log("+++++Activating account"); - const activationResult = await TezosNodeWriter.sendIdentityActivationOperation( - tezosURL, - fundraiserKeys, - fundraiserKeySecret, - invalidDerivationPath - ); - expect(activationResult.operationGroupID).to.exist; - sleep(33); -//*/ - - // console.log("+++++Sending 1 tez to an inactive implicit account"); - // const inactiveImplicitResult = await TezosNodeWriter.sendTransactionOperation( - // tezosURL, - // fundraiserKeys, - // inactiveImplicitAddress, - // 100000000, - // 2000000, // Protocol 003 minimum fee for inactive implicit accounts is 1387 - // invalidDerivationPath - // ); - // expect(inactiveImplicitResult.operationGroupID).to.exist; - - // sleep(33); - - // console.log("+++++Sending 1 tez to an active implicit address"); - // const activeImplicitResult = await TezosNodeWriter.sendTransactionOperation( - // tezosURL, - // fundraiserKeys, - // "KT1Dcv5sfBrLWybqNY6gz7TxjQ6UmDbpKMim", - // // anActiveImplicitAddress, - // 20000000, - // 2000000, // Protocol 003 minimum fee for active implicit accounts is 1100 - // invalidDerivationPath - // ); - // expect(activeImplicitResult.operationGroupID).to.exist; - - // sleep(33); - - const delegatedAccountResult = await TezosNodeWriter.sendTransactionOperation( - tezosURL, - fundraiserKeys, - randomDelegatedAddress, - 20000000, - 2000000, // Protocol 003 minimum fee for active kt1 accounts is 1100 - invalidDerivationPath - ); - expect(delegatedAccountResult.operationGroupID).to.exist; - - sleep(33); - - // console.log('+++++Originating a contract from manager address'); - // const contractOriginationResult = await TezosNodeWriter.sendContractOriginationOperation( - // [ - // { - // prim: 'parameter', - // args: [ - // { - // prim: 'string' - // } - // ] - // }, - // { - // prim: 'storage', - // args: [ - // { - // prim: 'string' - // } - // ] - // }, - // { - // prim: 'code', - // args: [ - // [ - // { - // prim: 'CAR' - // }, - // { - // prim: 'NIL', - // args: [ - // { - // prim: 'operation' - // } - // ] - // }, - // { - // prim: 'PAIR' - // } - // ] - // ] - // } - // ], - // { - // string: 'hello' - // }, - // tezosURL, - // fundraiserKeys, - // 2000000, - // randomBakerAddress3, - // true, - // true, - // 200000, // Protocol 003 minimum fee is 1377 for originations - // invalidDerivationPath, - // '10160', - // '27777' // "consumed_gas":"11262" - // ); - // expect(contractOriginationResult['operationGroupID']).to.exist; - - // **** THIS WILL SHOW THE ERRORS RETURNED FROM THE BLOCKCHAIN - // console.log( - // contractOriginationResult.results.contents[0].metadata['operation_result'] - // .errors - // ); - - const contractInvocationResult = await TezosNodeWriter.sendContractInvocationOperation( - tezosURL, - fundraiserKeys, - "KT1Wb4LE19jCNDuhp8Md7YpEDYmW9rhLTHsW", - 100000, // Amount sent - 100000, // Protocol 003 minimum fee for inactive implicit accounts is 1387 - invalidDerivationPath, - 1000, // Storage Limit - 100000, // Gas Limit - { string: "Cryptonomicon" } - ); - expect(contractInvocationResult["operationGroupID"]).to.exist; - - // console.log('+++++Originating an account with 1 tez'); - // const originationResult = await TezosNodeWriter.sendAccountOriginationOperation( - // tezosURL, - // fundraiserKeys, - // 20000000, - // randomBakerAddress1, - // true, - // true, - // 2000000, // Protocol 003 minimum fee is 1377 for originations - // invalidDerivationPath - // ); - // console.log('ORIGINATION RESULT', originationResult); - // // expect(originationResult.operationGroupID).to.exist; - - // sleep(33); - - // /* - // // Comment out this section in the FIRST run - // // Activate this section in the SECOND run. - // // Set delegatedKeyStore.publicKeyHash to the newly originated KT1 address before starting the SECOND run. - // */ - // let delegatedKeyStore = randomKeys; - // //delegatedKeyStore.publicKeyHash = 'KT1RiR3A1nkcZuHEXSUb97SwEMxMGF39GTZq'; - - // console.log('+++++Sending delegation operation'); - // const delegationResult = await TezosNodeWriter.sendDelegationOperation( - // tezosURL, - // delegatedKeyStore, - // randomBakerAddress2, - // 2000000, // Protocol 003 minimum fee is 1100 for delegations - // invalidDerivationPath - // ); - // expect(delegationResult.operationGroupID).to.exist; - // console.log('DELEGATION RESULT', delegationResult); - - // sleep(33); - }); -}); diff --git a/integration_test/chain/TezosNodeWriter.spec.ts b/integration_test/chain/TezosNodeWriter.spec.ts deleted file mode 100644 index 3d0560d9..00000000 --- a/integration_test/chain/TezosNodeWriter.spec.ts +++ /dev/null @@ -1,42 +0,0 @@ -import 'mocha'; -import { expect } from 'chai'; -import fetch from 'node-fetch'; - -import FetchSelector from '../../src/utils/FetchSelector'; -FetchSelector.setFetch(fetch); - -import {TezosNodeWriter} from '../../src/chain/tezos/TezosNodeWriter'; -import {KeyStore, StoreType} from '../../src/types/wallet/KeyStore'; -import {servers} from '../servers'; - -const keys: KeyStore = { - publicKey: 'edpkvMmmaxdUNWmxvnRUqbBfcdLLmANe4TUWucrE2GN75E4wMXUgJa', - privateKey: 'edskRpjW6egVEyFwQAttuHy8S5WLYqkpichsW2MzDpAQHWvunrr4ZVWRRQ6dx5y4G9S2s8Y4MDevmpavPVVYDN6egrbypcbWAc', - publicKeyHash: 'tz1aCy8b6Ls4Gz7m5SbANjtMPiH6dZr9nnS2', - seed: '', - storeType: StoreType.Mnemonic -}; -const tezosURL = servers.tezosServer; - -describe('TezosNodeWriter integration test suite', () => { - it('Invoke a contract with a string literal parameter', async () => { - const contractAddress = 'KT1XtauF2tnmAKBzbLA2gNoMji9zSzSyYq9w'; - const result = await TezosNodeWriter.sendContractInvocationOperation(tezosURL, keys, contractAddress, 10000, 1000, '', 1000, 100000, '"Cryptonomicon"'); - expect(result["operationGroupID"]).to.exist; - }); - - it('Invoke a contract with a complex parameter', async () => { - const contractAddress = 'KT1XtauF2tnmAKBzbLA2gNoMji9zSzSyYq9w'; - const result = await TezosNodeWriter.sendContractInvocationOperation(tezosURL, keys, contractAddress, 10000, 50000, '', 10000, 100000, '(Pair "message" (Pair "edsigtt7VBCeJjU9XtdCCPcV8VL3xe1XQHehk9Kg78Pxs3VZGXgHGGfktB71jUrK51tiJNybhUQidxxN48W4XWuRjjQwFJ17M1e" "edpkuqoemi1z8wjKxYCMvvshpFU7f71RUXhRyKudwLPBAdhqyj9epe"))'); - expect(result["operationGroupID"]).to.exist; - }); - - it('Originate a simple contract', async () => { - const contract = `parameter string; - storage string; - code { CAR ; NIL operation ; PAIR }`; - const storage = '"Test"'; - const result = await TezosNodeWriter.sendContractOriginationOperation(tezosURL, keys, 10000, undefined, false, false, 10000, '', '10000', '10000', contract, storage); - expect(result["operationGroupID"]).to.exist; - }); -}); diff --git a/package.json b/package.json deleted file mode 100644 index 0f70877e..00000000 --- a/package.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "name": "conseiljs", - "version": "0.2.3", - "description": "Client-side library for dApp development.", - "browser": "dist/index-web.js", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "scripts": { - "test": "mocha \"test/**/*.spec.ts\"", - "integration-test": "mocha -r source-map-support/register -r ts-node/register --full-trace -t 10000 -b false \"integration_test/**/*.spec.ts\"", - "format": "eslint --fix-dry-run src/*/*.ts", - "package": "rm -rf ./dist && tsc && copyfiles -u 1 \"./src/**/*.js\" dist/", - "package-web": "webpack && rm -rf ./dist-web/dist && openssl dgst -sha384 -binary ./dist-web/conseiljs.min.js | openssl base64 -A", - "coverage": "nyc mocha \"test/**/*.spec.ts\" && nyc report | coveralls", - "doc": "rm -rf ./tsdoc && typedoc --readme none --excludeNotExported --mode file --theme markdown --out ./tsdoc ./src", - "compile-tezos-parsers": "nearleyc grammar/tezos/Micheline.ne -o src/chain/tezos/lexer/Micheline.js && nearleyc grammar/tezos/Michelson.ne -o src/chain/tezos/lexer/Michelson.js", - "release-check": "npm run test && npm audit && npm outdated" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Cryptonomic/ConseilJS.git" - }, - "keywords": [ - "tezos", - "conseil", - "blockchain analytics", - "blockchain reporting", - "blockchain data access", - "web3", - "dapp" - ], - "author": "Cryptonomic Inc", - "license": "GPL-3.0", - "bugs": { - "url": "https://github.com/Cryptonomic/ConseilJS/issues" - }, - "homepage": "https://github.com/Cryptonomic/ConseilJS#readme", - "nyc": { - "include": [ - "src/**/*.ts" - ], - "extension": [ - ".ts" - ], - "require": [ - "ts-node/register" - ], - "reporter": [ - "text-lcov" - ], - "sourceMap": true, - "instrument": true - }, - "dependencies": { - "@ledgerhq/hw-transport": "4.24.0", - "@ledgerhq/hw-transport-node-hid": "4.24.0", - "aws-sdk": "^2.447.0", - "babel-runtime": "6.26.0", - "base-n": "git://github.com/yourcodesucks/base-n.git", - "basil-tezos-ledger": "0.0.1", - "big-integer": "^1.6.43", - "bip39": "^3.0.1", - "blakejs": "^1.1.0", - "bs58check": "^2.1.2", - "https": "^1.0.0", - "libsodium-wrappers-sumo": "0.7.4", - "moo": "^0.5.0", - "nearley": "^2.16.0", - "node-fetch": "^2.5.0", - "zxcvbn": "^4.4.2" - }, - "devDependencies": { - "@types/chai": "^4.1.3", - "@types/chai-as-promised": "^7.1.0", - "@types/mocha": "^5.2.6", - "@types/nock": "^9.3.1", - "@types/node": "^11.13.8", - "@types/node-fetch": "^2.3.3", - "@types/zxcvbn": "^4.4.0", - "@typescript-eslint/eslint-plugin": "^1.7.0", - "@typescript-eslint/parser": "^1.7.0", - "awesome-typescript-loader": "^5.0.0", - "chai": "^4.1.2", - "chai-as-promised": "^7.1.1", - "copyfiles": "^2.1.0", - "coveralls": "^3.0.3", - "eslint": "^5.16.0", - "eslint-config-airbnb-base": "^13.1.0", - "eslint-plugin-import": "^2.17.2", - "eslint-plugin-typescript": "^0.14.0", - "mocha": "^6.1.4", - "nock": "^10.0.6", - "nyc": "^14.0.0", - "request-promise": "^4.2.4", - "source-map-loader": "^0.2.4", - "source-map-support": "^0.5.12", - "terser-webpack-plugin": "^1.2.3", - "ts-loader": "^5.4.5", - "ts-node": "^8.1.0", - "tsconfig-paths-webpack-plugin": "^3.2.0", - "typedoc": "^0.14.2", - "typedoc-plugin-markdown": "^1.2.0", - "typescript": "^3.4.5", - "webpack": "^4.30.0", - "webpack-cli": "^3.3.1", - "webpack-node-externals": "^1.7.2" - }, - "eslintConfig": { - "parser": "@typescript-eslint/parser", - "plugins": [ - "@typescript-eslint" - ], - "env": { - "mocha": true, - "node": true - }, - "extends": "airbnb-base", - "rules": { - "comma-dangle": [ - 2, - "never" - ], - "curly": [ - 2, - "all" - ], - "indent": [ - 1, - 4 - ], - "max-len": [ - 2, - { - "code": 200, - "ignoreTrailingComments": true - } - ], - "no-tabs": [ - 2 - ], - "quotes": [ - 2, - "single" - ], - "array-element-newline": [ - 2, - { - "multiline": true, - "minItems": 5 - } - ] - } - } -} diff --git a/src/chain/tezos/TezosNodeReader.ts b/src/chain/tezos/TezosNodeReader.ts deleted file mode 100644 index 76ae537e..00000000 --- a/src/chain/tezos/TezosNodeReader.ts +++ /dev/null @@ -1,107 +0,0 @@ -import * as TezosTypes from '../../types/tezos/TezosChainTypes' -import {KeyStore} from "../../types/wallet/KeyStore"; -import {ServiceRequestError} from "../../types/conseil/ErrorTypes"; -import FetchSelector from '../../utils/FetchSelector' - -const fetch = FetchSelector.getFetch(); - -/** - * Utility functions for interacting with a Tezos node. - */ -export namespace TezosNodeReader { - /** - * Send a GET request to a Tezos node. - * - * @param {string} server Which Tezos node to go against - * @param {string} command RPC route to invoke - * @returns {Promise} JSON-encoded response - */ - function performGetRequest(server: string, command: string): Promise { - const url = `${server}/${command}`; - - return fetch(url, { method: 'get' }) - .then(response => { - if (!response.ok) { throw new ServiceRequestError(response.status, response.statusText, url, null); } - return response; - }) - .then(response => response.json()); - } - - /** - * Gets a block for a given hash. - * - * @param {string} server Which Tezos node to go against - * @param {String} hash Hash of the given block - * @returns {Promise} Block - */ - export function getBlock(server: string, hash: string): Promise { - return performGetRequest(server, `chains/main/blocks/${hash}`) - .then(json => {return json}) - } - - /** - * Gets the top block. - * @param {string} server Which Tezos node to go against - * @returns {Promise} Block head - */ - export function getBlockHead(server: string): Promise { - return getBlock(server, "head"); - } - - /** - * Fetches a specific account for a given block. - * - * @param {string} server Which Tezos node to go against - * @param {string} blockHash Hash of given block - * @param {string} accountID Account ID - * @returns {Promise} The account - */ - export function getAccountForBlock(server: string, blockHash: string, accountID: string): Promise { - return performGetRequest(server, `chains/main/blocks/${blockHash}/context/contracts/${accountID}`) - .then(json => json); - } - - /** - * Fetches the manager of a specific account for a given block. - * - * @param {string} server Which Tezos node to go against - * @param {string} blockHash Hash of given block - * @param {string} accountID Account ID - * @returns {Promise} The account - */ - export function getAccountManagerForBlock(server: string, blockHash: string, accountID: string): Promise { - return performGetRequest(server, `chains/main/blocks/${blockHash}/context/contracts/${accountID}/manager_key`) - .then(json => json); - } - - /** - * Indicates whether an account is implicit and empty. If true, transaction will burn 0.257tz. - * - * @param {string} server Tezos node to connect to - * @param {string} accountHash Account address - * @returns {Promise} Result - */ - export async function isImplicitAndEmpty(server: string, accountHash: string): Promise { - const blockHead = await TezosNodeReader.getBlockHead(server); - const account = await TezosNodeReader.getAccountForBlock(server, blockHead.hash, accountHash); - - const isImplicit = accountHash.toLowerCase().startsWith("tz"); - const isEmpty = Number(account.balance) === 0 - - return (isImplicit && isEmpty) - } - - /** - * Indicates whether a reveal operation has already been done for a given account. - * - * @param {string} server Tezos node to connect to - * @param {KeyStore} keyStore Key pair along with public key hash - * @returns {Promise} Result - */ - export async function isManagerKeyRevealedForAccount(server: string, keyStore: KeyStore): Promise { - const blockHead = await TezosNodeReader.getBlockHead(server); - const managerKey = await TezosNodeReader.getAccountManagerForBlock(server, blockHead.hash, keyStore.publicKeyHash); - - return managerKey.key != null; - } -} diff --git a/src/chain/tezos/TezosNodeWriter.ts b/src/chain/tezos/TezosNodeWriter.ts deleted file mode 100644 index 96927919..00000000 --- a/src/chain/tezos/TezosNodeWriter.ts +++ /dev/null @@ -1,474 +0,0 @@ -import {KeyStore, StoreType} from '../../types/wallet/KeyStore'; -import * as TezosTypes from '../../types/tezos/TezosChainTypes'; -import {TezosNodeReader} from './TezosNodeReader'; -import {TezosMessageCodec} from './TezosMessageCodec'; -import {TezosMessageUtils} from './TezosMessageUtil'; -import {TezosLanguageUtil} from './TezosLanguageUtil'; -import {CryptoUtils} from '../../utils/CryptoUtils'; - -import FetchSelector from '../../utils/FetchSelector' -const fetch = FetchSelector.getFetch(); - -import DeviceSelector from '../../utils/DeviceSelector'; -let LedgerUtils = DeviceSelector.getLedgerUtils(); - -/** - * Functions for sending operations on the Tezos network. - */ -export namespace TezosNodeWriter { - /** - * Send a POST request to a Tezos node. - * - * @param {string} server Which Tezos node to go against - * @param {string} command RPC route to invoke - * @param {object} payload Payload to submit - * @returns {Promise} JSON-encoded response - */ - function performPostRequest(server: string, command: string, payload = {}): Promise { - const url = `${server}/${command}`; - const payloadStr = JSON.stringify(payload); - - return fetch(url, { method: 'post', body: payloadStr, headers: { 'content-type': 'application/json' } }); - } - - /** - * Signs a forged operation - * @param {string} forgedOperation Forged operation group returned by the Tezos client (as a hex string) - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @returns {SignedOperationGroup} Bytes of the signed operation along with the actual signature - */ - // TODO: move this function to wallet files - export async function signOperationGroup(forgedOperation: string, keyStore: KeyStore, derivationPath: string): Promise { - const watermark = '03'; - const watermarkedForgedOperationBytesHex = watermark + forgedOperation; - - let opSignature: Buffer; - switch(keyStore.storeType) { - case StoreType.Hardware: - opSignature = await LedgerUtils.signTezosOperation(derivationPath, watermarkedForgedOperationBytesHex); - break; - default: - const hashedWatermarkedOpBytes = CryptoUtils.simpleHash(Buffer.from(watermarkedForgedOperationBytesHex, 'hex'), 32); - const privateKeyBytes = TezosMessageUtils.writeKeyWithHint(keyStore.privateKey, 'edsk'); - - opSignature = await CryptoUtils.signDetached(hashedWatermarkedOpBytes, privateKeyBytes); - } - - const hexSignature: string = TezosMessageUtils.readSignatureWithHint(opSignature, "edsig").toString(); - const signedOpBytes = Buffer.concat([Buffer.from(forgedOperation, 'hex'), Buffer.from(opSignature)]); - - return { bytes: signedOpBytes, signature: hexSignature.toString()}; - } - - /** - * Forge an operation group. - * - * @param {BlockMetadata} blockHead The block head - * @param {object[]} operations The operations being forged as part of this operation group - * - * @returns {string} Forged operation bytes (as a hex string) - */ - export function forgeOperations(blockHead: TezosTypes.BlockMetadata, operations: object[]): string { - let encoded = TezosMessageUtils.writeBranch(blockHead.hash); - operations.forEach(m => encoded += TezosMessageCodec.encodeOperation(m)); - - return encoded; - } - - /** - * Applies an operation using the Tezos RPC client. - * - * @param {string} server Tezos node to connect to - * @param {BlockMetadata} blockHead Block head - * @param {object[]} operations The operations to create and send - * @param {SignedOperationGroup} signedOpGroup Signed operation group - * @returns {Promise} Array of contract handles - */ - export async function applyOperation(server: string, blockHead: TezosTypes.BlockMetadata, operations: object[], signedOpGroup: TezosTypes.SignedOperationGroup): Promise { - const payload = [{ - protocol: blockHead.protocol, - branch: blockHead.hash, - contents: operations, - signature: signedOpGroup.signature - }]; - - const response = await performPostRequest(server, 'chains/main/blocks/head/helpers/preapply/operations', payload); - const text = await response.text(); - try { - const json = JSON.parse(text); - return json as TezosTypes.AlphaOperationsWithMetadata[]; - } catch (err) { - throw new Error(`Could not parse JSON response from chains/main/blocks/head/helpers/preapply/operation: '${text}' for ${payload}`); - } - } - - /** - * Ensures the results of operation application do not contain errors. Throws if there are errors. - * - * @param appliedOp Results of operation application. - */ - function checkAppliedOperationResults(appliedOp: TezosTypes.AlphaOperationsWithMetadata[]): void { - const validAppliedKinds = new Set(['activate_account', 'reveal', 'transaction', 'origination', 'delegation']); - const firstAppliedOp = appliedOp[0]; // All our op groups are singletons so we deliberately check the zeroth result. - - if (firstAppliedOp.kind != null && !validAppliedKinds.has(firstAppliedOp.kind)) { - throw new Error(`Could not apply operation because: ${firstAppliedOp.id}`); - } - - for (const op of firstAppliedOp.contents) { - if (!validAppliedKinds.has(op.kind)) { throw new Error(`Could not apply operation because: ${op.metadata}`); } - } - } - - /** - * Injects an operation using the Tezos RPC client. - * - * @param {string} server Tezos node to connect to - * @param {SignedOperationGroup} signedOpGroup Signed operation group - * @returns {Promise} ID of injected operation - */ - export async function injectOperation(server: string, signedOpGroup: TezosTypes.SignedOperationGroup): Promise { - const response = await performPostRequest(server, 'injection/operation?chain=main', signedOpGroup.bytes.toString('hex')); - const injectedOperation = await response.text(); - - return injectedOperation; - } - - /** - * Master function for creating and sending all supported types of operations. - * - * @param {string} server Tezos node to connect to - * @param {object[]} operations The operations to create and send - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @returns {Promise} The ID of the created operation group - */ - export async function sendOperation(server: string, operations: object[], keyStore: KeyStore, derivationPath): Promise { - const blockHead = await TezosNodeReader.getBlockHead(server); - const forgedOperationGroup = forgeOperations(blockHead, operations); - const signedOpGroup = await signOperationGroup(forgedOperationGroup, keyStore, derivationPath); - const appliedOp = await applyOperation(server, blockHead, operations, signedOpGroup); - checkAppliedOperationResults(appliedOp); - const injectedOperation = await injectOperation(server, signedOpGroup); - - return { results: appliedOp[0], operationGroupID: injectedOperation }; - } - - /** - * Helper function for sending Delegations, Transactions, and Originations. Checks if manager's public key has been revealed for operation. If yes, do nothing, else, bundle a reveal operation before the input operation. - * - * @param {string} server Tezos node to connect to - * @param keyStore Key pair along with public key hash - * @param fee Fee to use - * @param account Which account to use - * @param operations Delegation, Transaction, or Origination to possibly bundle with a reveal - */ - export async function appendRevealOperation (server: string, keyStore: KeyStore, account: TezosTypes.Account, operations: TezosTypes.Operation[]) { - const isManagerKeyRevealed = await TezosNodeReader.isManagerKeyRevealedForAccount(server, keyStore) - let returnedOperations: TezosTypes.Operation[] = operations; - if (!isManagerKeyRevealed) { - const revealOp: TezosTypes.Operation = { - kind: "reveal", - source: keyStore.publicKeyHash, - fee: '0', // Reveal Fee will be covered by the appended operation - counter: (Number(account.counter) + 1).toString(), - gas_limit: '10000', - storage_limit: '0', - public_key: keyStore.publicKey - }; - let operation = operations[0]; - operation.counter = (Number(account.counter) + 2).toString(); - returnedOperations = [revealOp, operation]; - } - - return returnedOperations; - } - - /** - * Creates and sends a transaction operation. - * - * @param {string} server Tezos node to connect to - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {String} to Destination public key hash - * @param {number} amount Amount to send - * @param {number} fee Fee to use - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @returns {Promise} Result of the operation - */ - export async function sendTransactionOperation( - server: string, - keyStore: KeyStore, - to: string, - amount: number, - fee: number, - derivationPath: string - ) { - const blockHead = await TezosNodeReader.getBlockHead(server); - const sourceAccount = await TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - - const transaction: TezosTypes.Operation = { - destination: to, - amount: amount.toString(), - storage_limit: "300", - gas_limit: "10300", - counter: (Number(sourceAccount.counter) + 1).toString(), - fee: fee.toString(), - source: keyStore.publicKeyHash, - kind: "transaction" - }; - - const operations = await appendRevealOperation(server, keyStore, sourceAccount, [transaction]) - - return sendOperation(server, operations, keyStore, derivationPath); - } - - /** - * Creates and sends a delegation operation. - * - * @param {string} server Tezos node to connect to - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {String} delegate Account ID to delegate to - * @param {number} fee Operation fee - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @returns {Promise} Result of the operation - */ - export async function sendDelegationOperation( - server: string, - keyStore: KeyStore, - delegate: string, - fee: number, - derivationPath: string - ) { - const blockHead = await TezosNodeReader.getBlockHead(server); - const account = await TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - const delegation: TezosTypes.Operation = { - kind: "delegation", - source: keyStore.publicKeyHash, - fee: fee.toString(), - counter: (Number(account.counter) + 1).toString(), - storage_limit: '0', - gas_limit: '10000', - delegate: delegate - } - const operations = await appendRevealOperation(server, keyStore, account, [delegation]) - - return sendOperation(server, operations, keyStore, derivationPath); - } - - /** - * Sends an account origination operation. - * - * @param {string} server Tezos node to connect to - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {number} amount Initial funding amount of new account - * @param {string} delegate Account ID to delegate to, blank if none - * @param {boolean} spendable Is account spendable? - * @param {boolean} delegatable Can the account be delegated? - * @param {number} fee Operation fee - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @returns {Promise} Result of the operation - */ - export async function sendAccountOriginationOperation ( - server: string, - keyStore: KeyStore, - amount: number, - delegate: string | undefined, - spendable: boolean, - delegatable: boolean, - fee: number, - derivationPath: string - ) { - return sendOriginationOperation(server, keyStore, amount, delegate, spendable, delegatable, fee, derivationPath, '277', '10160'); - } - - /** - * Sends a contract origination operation. - * - * @param {string} server Tezos node to connect to - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {number} amount Initial funding amount of new account - * @param {string} delegate Account ID to delegate to, blank if none - * @param {boolean} spendable Is account spendable? - * @param {boolean} delegatable Is account delegatable? - * @param {number} fee Operation fee - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @param {string} storage_limit Storage fee. - * @param {string} gas_limit Gas limit. - * @param {string} code Contract code. - * @param {string} storage Initial storage value. - */ - export async function sendContractOriginationOperation( - server: string, - keyStore: KeyStore, - amount: number, - delegate: string | undefined, - spendable: boolean, - delegatable: boolean, - fee: number, - derivationPath: string, - storage_limit: string, - gas_limit: string, - code: string, - storage: string - ) { - return sendOriginationOperation(server, keyStore, amount, delegate, spendable, delegatable, fee, derivationPath, storage_limit, gas_limit, code, storage); - } - - /** - * General purpose function for origination. - * - * @param {string} server Tezos node to connect to - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {number} amount Initial funding amount of new account - * @param {string} delegate Account ID to delegate to or 'undefined' - * @param {boolean} spendable Is account spendable? - * @param {boolean} delegatable Is account delegatable? - * @param {number} fee Operation fee - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @param {string} storage_limit Storage fee. - * @param {string} gas_limit Gas limit. - * @param {string} code Contract code in Michelson format. - * @param {string} storage Initial storage value in Michelson format. - * - * @returns {Promise} Result of the operation - */ - async function sendOriginationOperation( - server: string, - keyStore: KeyStore, - amount: number, - delegate: string | undefined, - spendable: boolean, - delegatable: boolean, - fee: number, - derivationPath: string, - storage_limit: string, - gas_limit: string, - code?: string, - storage?: string - ) { - const blockHead = await TezosNodeReader.getBlockHead(server); - const account = await TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - - let parsedCode: any = undefined; - if (!!code) { - parsedCode = JSON.parse(TezosLanguageUtil.translateMichelsonToMicheline(code)); - } - - let parsedStorage: any = undefined; - if (!!storage) { - parsedStorage = JSON.parse(TezosLanguageUtil.translateMichelsonToMicheline(storage)); - } - - const origination: TezosTypes.Operation = { - kind: "origination", - source: keyStore.publicKeyHash, - fee: fee.toString(), - counter: (Number(account.counter) + 1).toString(), - gas_limit: gas_limit, - storage_limit: storage_limit, - managerPubkey: keyStore.publicKeyHash, // mainnet, alphanet - //manager_pubkey: keyStore.publicKeyHash, // zeronet - balance: amount.toString(), - spendable: spendable, - delegatable: delegatable && !!delegate, - delegate: delegate, - script: code ? { code: parsedCode, storage: parsedStorage } : undefined - }; - const operations = await appendRevealOperation(server, keyStore, account, [origination]); - - return sendOperation(server, operations, keyStore, derivationPath); - } - - /** - * Invokes a contract with desired parameters - * - * @param {string} server Tezos node to connect to - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {string} to Contract address - * @param {number} amount Initial funding amount of new account - * @param {number} fee Operation fee - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @param {string} storage_limit Storage fee. - * @param {string} gas_limit Gas limit. - * @param {string} parameters Contract arguments expressed as Michelson - */ - export async function sendContractInvocationOperation( - server: string, - keyStore: KeyStore, - to: string, - amount: number, - fee: number, - derivationPath: string, - storageLimit: number, - gasLimit: number, - parameters?: string - ) { - const blockHead = await TezosNodeReader.getBlockHead(server); - const sourceAccount = await TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - - let transaction: TezosTypes.Operation = { - destination: to, - amount: amount.toString(), - storage_limit: storageLimit.toString(), - gas_limit: gasLimit.toString(), - counter: (Number(sourceAccount.counter) + 1).toString(), - fee: fee.toString(), - source: keyStore.publicKeyHash, - kind: "transaction" - }; - - if (!!parameters) { - const michelineParams = TezosLanguageUtil.translateMichelsonToMicheline(parameters); - ( transaction).parameters = JSON.parse(michelineParams); - } - - const operations = await appendRevealOperation(server, keyStore, sourceAccount, [transaction]); - return sendOperation(server, operations, keyStore, derivationPath); - } - - /** - * Creates and sends a reveal operation. - * - * @param {string} server Tezos node to connect to - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {number} fee Fee to pay - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @returns {Promise} Result of the operation - */ - export async function sendKeyRevealOperation( - server: string, - keyStore: KeyStore, - fee: number = 1300, - derivationPath: string = '') { - const blockHead = await TezosNodeReader.getBlockHead(server); - const account = await TezosNodeReader.getAccountForBlock(server, blockHead.hash, keyStore.publicKeyHash); - const revealOp: TezosTypes.Operation = { - kind: 'reveal', - source: keyStore.publicKeyHash, - fee: fee + '', - counter: (Number(account.counter) + 1).toString(), - gas_limit: '10000', - storage_limit: '0', - public_key: keyStore.publicKey - }; - const operations = [revealOp]; - - return sendOperation(server, operations, keyStore, derivationPath) - } - - /** - * Creates and sends an activation operation. - * - * @param {string} server Tezos node to connect to - * @param {KeyStore} keyStore Key pair along with public key hash - * @param {string} activationCode Activation code provided by fundraiser process - * @param {string} derivationPath BIP44 Derivation Path if signed with hardware, empty if signed with software - * @returns {Promise} Result of the operation - */ - export function sendIdentityActivationOperation(server: string, keyStore: KeyStore, activationCode: string, derivationPath: string) { - const activation = { kind: "activate_account", pkh: keyStore.publicKeyHash, secret: activationCode }; - - return sendOperation(server, [activation], keyStore, derivationPath); - } -} diff --git a/src/chain/tezos/lexer/Michelson.js b/src/chain/tezos/lexer/Michelson.js deleted file mode 100644 index 5b56c2a0..00000000 --- a/src/chain/tezos/lexer/Michelson.js +++ /dev/null @@ -1,996 +0,0 @@ -// Generated automatically by nearley, version 2.16.0 -// http://github.com/Hardmath123/nearley -(function () { -function id(x) { return x[0]; } - -const moo = require("moo"); - -/* - Assumptions: - - Grammar defined here: http://tezos.gitlab.io/mainnet/whitedoc/michelson.html#xii-full-grammar - - In lexer, types and instructions may have zero, one, two, or three arguments based on the keyword. - - Issue: Some keywords like "DIP" can have zero and one arguments, and the lexer is order-dependent from top to bottom. - This may impact parsing and lead to awkward parse errors, and needs to be addressed accordingly. - - Issue: Splitting instructions by number of arguments hasn't been done, so certain invalid michelson expressions like - "PAIR key key {DROP;}" will pass through even though PAIR is a constant expression. This is a false positive. - - Issue: Some macros are still not implemented: http://tezos.gitlab.io/mainnet/whitedoc/michelson.html#macros - - Issue: There is an ambiguous parsing between commands LE and LEFT. - - Issue: In general, if you have multiple Michelson instructions in a code block, all of them, no matter how nested, - need to have a semicolon at the end, unless it's a singleton code block. In regular Michelson, you can have the very - last instruction in a code block not have a semicolon. A workaround has been made, but this sometimes results - in multiple parse results that are equivalent. In this case, we postprocess to get a single entry instead - - Postprocessor functions and grammar definitions could use a proper refactor - - While the lexer has achieved a significant speedup, certain macros are defined by a grammar, and as such, have an infinitude - - of inputs, accounting for that in the lexer is necessary - - PUSH , data can be empty, but fixing this causes bugs elsewhere for unknown reasons - - We do not handle instances where parameter, storage, and code are given in a separate order - - There is a function called CREATE_CONTRACT which can create a contract inside of a contract, including the parameter, - storage, and code definitions. We do not handle this nesting, as we do a lot of preprocessing outside of the grammar. - - There may not be an exhaustive handling of annotations for types, but it should be covered for instructions -*/ - -/* - Lexer to parse keywords more efficiently. -*/ -const lexer = moo.compile({ - annot: ["%",":","@"], - lparen: '(', - rparen: ')', - lbrace: '{', - rbrace: '}', - ws: /[ \t]+/, - semicolon: ";", - comparableType: ['int', 'nat', 'string', 'bytes', 'mutez', 'bool', 'key_hash', 'timestamp'], - constantType: ['key', 'unit', 'signature', 'operation', 'address'], - singleArgType: ['option', 'list', 'set', 'contract'], - doubleArgType: ['pair', 'or', 'lambda', 'map', 'big_map'], - type: ['key', 'unit', 'signature', 'option', 'list', 'set', 'operation', 'address', 'contract', 'pair', 'or', 'lambda', 'map', 'big_map'], - instruction: ['DROP', 'DUP', 'SWAP', 'SOME', 'NONE', 'UNIT', 'IF_NONE', 'PAIR', 'CAR', 'CDR', 'LEFT', 'RIGHT', 'IF_LEFT', 'IF_RIGHT', - 'NIL', 'CONS', 'IF_CONS', 'SIZE', 'EMPTY_SET', 'EMPTY_MAP', 'MAP', 'ITER', 'MEM', 'GET', 'UPDATE', 'IF', 'LOOP', 'LOOP_LEFT', - 'LAMBDA', 'EXEC', 'DIP', 'FAILWITH', 'CAST', 'RENAME', 'CONCAT', 'SLICE', 'PACK', 'UNPACK', 'ADD', 'SUB', 'MUL', 'EDIV', 'ABS', 'NEG', - 'LSL', 'LSR', 'OR', 'AND', 'XOR', 'NOT', 'COMPARE', 'EQ', 'NEQ', 'LT', 'GT', 'LE', 'GE', 'SELF', 'CONTRACT', 'TRANSFER_TOKENS', - 'SET_DELEGATE', 'CREATE_CONTRACT', 'IMPLICIT_ACCOUNT', 'NOW', 'AMOUNT', 'BALANCE', 'CHECK_SIGNATURE', 'BLAKE2B', 'SHA256', - 'SHA512', 'HASH_KEY', 'STEPS_TO_QUOTA', 'SOURCE', 'SENDER', 'ADDRESS', 'FAIL', 'CDAR', 'CDDR', 'DUUP', 'DUUUP', 'DUUUUP', - 'DUUUUUP', 'DUUUUUUP', 'DUUUUUUUP', 'DIIP', 'DIIIP', 'DIIIIP', 'DIIIIIP', 'DIIIIIIP', 'DIIIIIIIP', 'REDUCE', 'CMPLT', 'UNPAIR', 'CMPGT', - 'CMPLE', 'CMPGE', 'UNPAPAIR', 'CAAR', 'CDDDDADR', 'CDDADDR', 'CDADDR', 'CDADAR', 'IFCMPEQ', 'CDDDADR', 'CADAR', 'CDDDAAR', - 'CADDR', 'CDDDDR', 'CDDAAR', 'CDDADAR', 'CDDDDDR', 'CDDDDAAR', 'ASSERT_CMPGE', 'CDAAR', 'CDADR', 'CDDAR', 'CDDDR', - 'CMPEQ', 'CAAR', 'CAAAR', 'CAAAAR', 'CAAAAAR', 'CAAAAAAR', 'CAAAAAAAR', 'CDDR', 'CDDDR', 'CDDDDR', 'CDDDDDR', 'CDDDDDDR', 'CDDDDDDDR', - 'ASSERT_CMPEQ', 'ASSERT_CMPLT', 'ISNAT', 'IFCMPGT', 'IFCMPGE', 'IFCMPLT', 'IFCMPLE', 'IF_SOME', 'CADR' ], - data: ['Unit', 'True', 'False', 'Left', 'Right', 'Pair', 'Some', 'None', 'instruction'], - constantData: ['Unit', 'True', 'False', 'None', 'instruction'], - singleArgData: ['Left', 'Right', 'Some'], - doubleArgData: ['Pair'], - singleArgTypeData: ['option', 'list', 'set', 'contract', 'Left', 'Right', 'Some'], - doubleArgTypeData: ['pair', 'or', 'lambda', 'map', 'big_map', 'Pair'], - elt: "Elt", - number: /-?[0-9]+/, - word: /[a-zA-z_0-9]+/, - string: /"(?:\\["\\]|[^\n"\\])*"/ -}); - - - - const checkC_R = c_r => { - var pattern = new RegExp('^C(A|D)(A|D)+R$') - return pattern.test(c_r) - } - - const mapper = a_or_d => { - switch(a_or_d) { - case "A": - return keywordToJson(['CAR']) - case "D": - return keywordToJson(['CDR']) - } - } - - const expandC_R = (c_r, annot) => { - var as_and_ds = c_r.substring(1,c_r.length-1) - var expandedC_R = as_and_ds.split('').map(x => mapper(x)) - //if annotations, put in last element of array - if (annot != null) { - const lastChar = as_and_ds[as_and_ds.length-1] - if (lastChar == 'A') { - expandedC_R[expandedC_R.length-1] = `{ "prim": "CAR", "annots": [${annot}] }` - } - if (lastChar == 'D') { - expandedC_R[expandedC_R.length-1] = `{ "prim": "CDR", "annots": [${annot}] }` - } - } - return `[${expandedC_R}]` - } - - //input: C*R - //remove first and last characters from string - //A -> keywordToJson(['CAR']) - //D -> keywordToJson(['CDR']) - // if annotations, put in last element of array - //return `${mappedArray}` - - const check_compare = cmp => - { - var pattern = new RegExp('^CMP(NEQ|EQ|GT|LT|GE|LE)$') - return pattern.test(cmp) - } - - const expand_cmp = (cmp, annot) => { - var op = cmp.substring(3) - var binary_op = keywordToJson([`${op}`]) - var compare = keywordToJson(['COMPARE']) - if (annot != null) { - binary_op = `{ "prim": "${op}", "annots": [${annot}] }`; - } - var result = [compare, binary_op] - return `[${result}]` - } - //input : CMP* - //take last characters of string that aren't CMP -> keywordToJson([last]) - // if annotations, put in last element of array - //return '${[keywordToJson(['COMPARE'])], ^} - - const check_dup = dup => - { - var pattern = new RegExp('^DUU+P$') - return pattern.test(dup) - } - - //currently does not handle annotations - const expand_dup = (dup, annot) => { - var pattern = new RegExp('^DUU+P$') - if (pattern.test(dup)) { - var newDup = dup.substring(0,1) + dup.substring(2) - var innerDup = expand_dup(newDup, annot) - return `[{ "prim": "DIP", "args": [ ${innerDup} ] },{"prim":"SWAP"}]`; - } - else { - if (annot == null) { - return `[{ "prim": "DUP" }]`; - } - else { - return `[{ "prim": "DUP", "annots": [${annot}] }]`; - } - } - /* - - if (dup == "DUP") { - return `{ "prim": "${dup}" }`; - - } - - if (dup == "DUUP") { - if (annot == null) { - - } - else { - - } - } - - - const newDup = dup.substring(1,dup.length-1) - - const dip = keywordToJson(['DIP']); - var dips = [] - - const swap = keywordToJson(['SWAP']); - var finalSwap = swap - if (annot != null) { - finalSwap = `{ "prim": "SWAP", "annots": [${annot}] }` - } - var swaps = [] - - for (let i = 0; i < newDup.length; i++) { - dips.push(dip); - swaps.push(swap); - } - - swaps[swaps.length-1] = finalSwap - - return `[${dips}, ${[keywordToJson(['DUP'])]}, ${swaps}]` - */ - - } - //input : D(U*)P - // DUP -> DUP - // DU(U+)P -> n = |U+|, repeat n keywordToJson(['DIP']); keywordToJson(['DUP']); repeat n keywordToJson(['SWAP']); - // // if no annot, return duuuup put annot in swap otherwise - - const check_assert = assert => - { - var pattern = new RegExp('^ASSERT$|^ASSERT_(EQ|NEQ|GT|LT|GE|LE|NONE|SOME|LEFT|RIGHT|CMPEQ|CMPNEQ|CMPGT|CMPLT|CMPGE|CMPLE)$') - return pattern.test(assert) - } - - const expand_assert = (assert, annot) => { - //input : ASSERT_CMP** - //ASSERT -> {"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]} - //ASSERT_* -> same as above, but [] -> expand * (comparison ops, CMP_comparison ops) - //ASSERT_NONE => IF_NONE {} {FAIL} - //ASSERT_SOME => IF_NONE {FAIL} {} - //ASSERT_LEFT => IF_LEFT {} {FAIL} - //ASSERT_RIGHT => IF_LEFT {FAIL} {} - // last five characters -> expand_cmp - // return [expand_cmp, assert] if no annot, put annot in assert otherwise - // if annotations, put in last element of array - switch (assert) { - case 'ASSERT': - if (annot == null) { - return `[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPEQ': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"EQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPGE': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"GE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPGT': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"GT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPLE': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"LE"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPLT': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"LT"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_CMPNEQ': - if (annot == null) { - return `[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[[{"prim":"COMPARE"},{"prim":"NEQ"}],{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_EQ': - if (annot == null) { - return `[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]]` - } - else { - return `[{"prim":"EQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_GE': - if (annot == null) { - return `[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"GE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_GT': - if (annot == null) { - return `[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"GT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_LE': - if (annot == null) { - return `[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"LE"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_LT': - if (annot == null) { - return `[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"LT"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - case 'ASSERT_NEQ': - if (annot == null) { - return `[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH"}]]]}]` - } - else { - return `[{"prim":"NEQ"},{"prim":"IF","args":[[],[[{"prim":"UNIT"},{"prim":"FAILWITH", "annots": [${annot}]}]]]}]` - } - } - } - - const check_fail = fail => { - return fail == "FAIL"; - } - - const expand_fail = (fail, annot) => { - // if annotations, put in last element of array, if no annot, put annot in FAILWITH otherwise - if (annot == null) { - return `[ { "prim": "UNIT" }, { "prim": "FAILWITH"} ]` - } - else { - return `[ { "prim": "UNIT" }, { "prim": "FAILWITH", "annots": [${annot}]} ]` - } - } - - const check_if = ifStatement => { - var pattern = new RegExp('^IF(EQ|NEQ|GT|LT|GE|LE|CMPEQ|CMPNEQ|CMPGT|CMPLT|CMPGE|CMPLE)$') - return pattern.test(ifStatement) - } - - const expandIF = (ifInstr, ifTrue, ifFalse, annot) => { - //IFEQ, IFGE, IFGT, IFLE, IFLT : EXACTLY THE SAME AS IFCMP, JUST REMOVE COMPARE - // if annotations, put in last element of array - switch (ifInstr) { - case 'IFCMPEQ': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPGE': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPGT': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPLE': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPLT': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFCMPNEQ': - if (annot == null) { - return `[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"COMPARE"},{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFEQ': - if (annot == null) { - return `[{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"EQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFGE': - if (annot == null) { - return `[{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"GE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFGT': - if (annot == null) { - return `[{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"GT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFLE': - if (annot == null) { - return `[{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"LE"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFLT': - if (annot == null) { - return `[{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"LT"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - case 'IFNEQ': - if (annot == null) { - return `[{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]]}]` - } - else { - return `[{"prim":"NEQ"},{"prim":"IF","args":[ [${ifTrue}] , [${ifFalse}]], "annots": [${annot}]}]` - } - } - } - - const check_dip = dip => { - var pattern = new RegExp('^DII+P$') - return pattern.test(dip) - } - - const expandDIP = (dip, instruction, annot) => { - //switch (dip) { - // case 'DIIP': - // return `[{ "prim": "DIP", "args": [ [ { "prim": "DIP", "args": [ [ ${instruction} ] ] } ] ] }]`; - //} - - // ANNOTATION LAST ONE - // DIP code -> return `{ "prim": "DIP", "args": [ [ ${code} ] ] }`; - // DI(I+)P code -> return `{ "prim": "DIP", "args": [ [ ${expandDIP(D(I+)P, instruction)} ] ] }`; - - var pattern = new RegExp('^DII+P$') - if (pattern.test(dip)) { - var newDip = dip.substring(0,1) + dip.substring(2) - var innerDip = expandDIP(newDip, instruction, annot) - return `[{ "prim": "DIP", "args": [ ${innerDip} ] }]`; - } - else { - //add annotation in this branch - if (annot == null) { - return `[{ "prim": "DIP", "args": [ [ ${instruction} ] ] }]`; - } - else { - return `[{ "prim": "DIP", "args": [ [ ${instruction} ] ], "annots": [${annot}] }]`; - } - } - - } - - //until we have proper checks for these cases - const check_other = word => { - return word == "UNPAIR" || word == "UNPAPAIR" - } - - const expand_other = (word, annot) => { - if (word == 'UNPAIR') { - if (annot == null) { - return '[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ] ]' - } - else { - return `[ [ { "prim": "DUP" }, { "prim": "CAR" }, { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ], "annots": [${annot}] } ] ]` - } - } - if (word == 'UNPAPAIR') { - if (annot == null) { - return `[ [ { "prim": "DUP" }, - { "prim": "CAR" }, - { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], - {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]]}]]]}] ` - } - else { - return `[ [ { "prim": "DUP" }, - { "prim": "CAR" }, - { "prim": "DIP", "args": [ [ { "prim": "CDR" } ] ] } ], - {"prim":"DIP","args":[[[{"prim":"DUP"},{"prim":"CAR"},{"prim":"DIP","args":[[{"prim":"CDR"}]],"annots": [${annot}]}]]]}] ` - } - } - } - - const checkKeyword = word => { - return check_assert(word) - || check_compare(word) - || check_dip(word) - || check_dup(word) - || check_fail(word) - || check_if(word) - || checkC_R(word) - || check_other(word) - } - - const expandKeyword = (word, annot) => { - if (checkC_R(word)) { - return expandC_R(word, annot) - } - if (check_assert(word)) { - return expand_assert(word, annot) - } - if (check_compare(word)) { - return expand_cmp(word, annot) - } - if (check_dip(word)) { - return expandDIP(word, annot) - } - if (check_dup(word)) { - return expand_dup(word, annot) - } - if (check_fail(word)) { - return expand_fail(word, annot) - } - if (check_if(word)) { - return expandIF(word, annot) - } - if (check_other(word)) { - return expand_other(word, annot) - } - } - - /** - * Given a int, convert it to JSON. - * Example: "3" -> { "int": "3" } - */ - const intToJson = d => { return `{ "int": "${parseInt(d[0])}" }`; } - - /** - * Given a string, convert it to JSON. - * Example: "string" -> "{ "string": "blah" }" - */ - const stringToJson = d => { return `{ "string": ${d[0]} }`; } - - /** - * Given a keyword, convert it to JSON. - * Example: "int" -> "{ "prim" : "int" }" - */ - const keywordToJson = d => { - const word = d[0].toString() - if (d.length == 1) { - if (checkKeyword(word)) { - return [expandKeyword(word, null)] - } - else { - return `{ "prim": "${d[0]}" }`; - } - } - else { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - if (checkKeyword(word)) { - return [expandKeyword(word, annot)] - } - else { - return `{ "prim": "${d[0]}", "annots": [${annot}] }`; - } - } - } - - /* - const typeKeywordToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[0]}", "annots": [${annot}] }`; - } - */ - - /** - * Given a keyword with one argument, convert it to JSON. - * Example: "option int" -> "{ prim: option, args: [int] }" - */ - const singleArgKeywordToJson = d => { return `{ "prim": "${d[0]}", "args": [ ${d[2]} ] }`; } - //changed 5 secs ago - - const comparableTypeToJson = d => { - const annot = d[3].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[2]}", "annots": [${annot}] }`; - } - - const singleArgTypeKeywordWithParenToJson = d => { - const annot = d[3].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[2]}", "args": [ [ ${d[7]} ] ], "annots": [${annot}] }`; - } - - const singleArgInstrKeywordToJson = d => { - const word = `${d[0].toString()}` - if (check_dip(word)) { - return expandDIP(word, d[2]) - } - else { - return `{ "prim": "${d[0]}", "args": [ [ ${d[2]} ] ] }`; - } - } - - const singleArgTypeKeywordToJson = d => { - const word = `${d[0].toString()}` - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - if (check_dip(word)) { - return expandDIP(word, d[2], annot) - } - else { - return `{ "prim": "${d[0]}", "args": [ ${d[3]} ], "annots": [${annot}] }`; - } - } - - /** - * Given a keyword with one argument and parentheses, convert it to JSON. - * Example: "(option int)" -> "{ prim: option, args: [{prim: int}] }" - */ - const singleArgKeywordWithParenToJson = d => { return `{ "prim": "${d[2]}", "args": [ ${d[4]} ] }`; } - //changed 5 secs ago - /** - * Given a keyword with two arguments, convert it into JSON. - * Example: "Pair unit instruction" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" - */ - const doubleArgKeywordToJson = d => { return `{ "prim": "${d[0]}", "args": [${d[2]}, ${d[4]}] }`; } - - const doubleArgInstrKeywordToJson = d => { - const word = `${d[0].toString()}` - if (check_if(word)) { - return expandIF(word, d[2], d[4]) - } - else { - return `{ "prim": "${d[0]}", "args": [ [${d[2]}], [${d[4]}] ] }`; - } - } - - /** - * Given a keyword with two arguments and parentheses, convert it into JSON. - * Example: "(Pair unit instruction)" -> "{ prim: Pair, args: [{prim: unit}, {prim: instruction}] }" - */ - const doubleArgKeywordWithParenToJson = d => { return `{ "prim": "${d[2]}", "args": [ ${d[4]}, ${d[6]} ] }`; } - - /** - * Given a keyword with three arguments, convert it into JSON. - * Example: "LAMBDA key unit {DIP;}" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" - */ - const tripleArgKeyWordToJson = d => { return `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, [${d[6]}] ] }`; } - - /** - * Given a keyword with three arguments and parentheses, convert it into JSON. - * Example: "(LAMBDA key unit {DIP;})" -> "{ prim: LAMBDA, args: [{prim: key}, {prim: unit}, {prim: DIP}] }" - */ - const tripleArgKeyWordWithParenToJson = d => { return `{ "prim": "${d[0]}", "args": [ ${d[2]}, ${d[4]}, ${d[6]} ] }`; } - - const nestedArrayChecker = x => { - if (Array.isArray(x)) { - if (Array.isArray(x[0])) { - return x[0] - } - else { - return x - } - } - else { - return x - } - } - - /** - * Given a list of michelson instructions, convert it into JSON. - * Example: "{CAR; NIL operation; PAIR;}" -> - * [ '{ prim: CAR }', - * '{ prim: NIL, args: [{ prim: operation }] }', - * '{ prim: PAIR }' ] - */ - const instructionSetToJsonNoSemi = d => { return d[2].map(x => x[0]).concat(d[3]).map(x => nestedArrayChecker(x)); } - const instructionSetToJsonSemi = d => { return d[2].map(x => x[0]).map(x => nestedArrayChecker(x)); } - - const scriptToJson = d => { - const parameterJson = d[0]; - const storageJson = d[2]; - const codeJson = `{ "prim": "code", "args": [ [ ${d[4]} ] ] }`; - return `[ ${parameterJson}, ${storageJson}, ${codeJson} ]`; - } - - const doubleArgTypeKeywordToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[0]}", "args": [ ${d[4]}, ${d[6]} ], "annots": [${annot}] }`; - } - - const doubleArgTypeKeywordWithParenToJson = d => { - const annot = d[3].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[2]}", "args": [ ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; - } - - const tripleArgTypeKeyWordToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "${d[0]}", "args": [ ${d[3]}, ${d[5]}, ${d[7]} ], "annots": [${annot}] }`; - } - - const pushToJson = d => { - return `{ "prim": "${d[0]}", "args": [${d[2]}, []] }`; - } - - const pushWithAnnotsToJson = d => { - const annot = d[1].map(x => `"${x[1] + x[2]}"`) - return `{ "prim": "PUSH", "args": [ ${d[3]}, ${d[5]} ], "annots": [${annot}] }`; - } - -var grammar = { - Lexer: lexer, - ParserRules: [ - {"name": "main", "symbols": ["instruction"], "postprocess": id}, - {"name": "main", "symbols": ["data"], "postprocess": id}, - {"name": "main", "symbols": ["type"], "postprocess": id}, - {"name": "main", "symbols": ["parameter"], "postprocess": id}, - {"name": "main", "symbols": ["storage"], "postprocess": id}, - {"name": "main", "symbols": ["code"], "postprocess": id}, - {"name": "main", "symbols": ["script"], "postprocess": id}, - {"name": "main", "symbols": ["parameterValue"], "postprocess": id}, - {"name": "main", "symbols": ["storageValue"], "postprocess": id}, - {"name": "main", "symbols": ["typeData"], "postprocess": id}, - {"name": "script", "symbols": ["parameter", "_", "storage", "_", "code"], "postprocess": scriptToJson}, - {"name": "parameter", "symbols": [{"literal":"parameter"}]}, - {"name": "parameter", "symbols": [{"literal":"Parameter"}]}, - {"name": "storage", "symbols": [{"literal":"Storage"}]}, - {"name": "storage", "symbols": [{"literal":"storage"}]}, - {"name": "code", "symbols": [{"literal":"Code"}]}, - {"name": "code", "symbols": [{"literal":"code"}]}, - {"name": "parameterValue", "symbols": ["parameter", "_", "typeData", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, - {"name": "storageValue", "symbols": ["storage", "_", "typeData", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, - {"name": "parameter", "symbols": ["parameter", "_", "type", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, - {"name": "storage", "symbols": ["storage", "_", "type", "_", "semicolons"], "postprocess": singleArgKeywordToJson}, - {"name": "code", "symbols": ["code", "_", "subInstruction", "_", "semicolons", "_"], "postprocess": d => d[2]}, - {"name": "code", "symbols": [(lexer.has("code") ? {type: "code"} : code), "_", {"literal":"{};"}], "postprocess": d => "code {}"}, - {"name": "type", "symbols": [(lexer.has("comparableType") ? {type: "comparableType"} : comparableType)], "postprocess": keywordToJson}, - {"name": "type", "symbols": [(lexer.has("constantType") ? {type: "constantType"} : constantType)], "postprocess": keywordToJson}, - {"name": "type", "symbols": [(lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "_", "type"], "postprocess": singleArgKeywordToJson}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "_", "type", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgKeywordWithParenToJson}, - {"name": "type", "symbols": [(lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "_", "type", "_", "type"], "postprocess": doubleArgKeywordToJson}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "_", "type", "_", "type", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgKeywordWithParenToJson}, - {"name": "type$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$1$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$1$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$1", "symbols": ["type$ebnf$1$subexpression$1"]}, - {"name": "type$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$1$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$1$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$1", "symbols": ["type$ebnf$1", "type$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("comparableType") ? {type: "comparableType"} : comparableType), "type$ebnf$1"], "postprocess": keywordToJson}, - {"name": "type$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$2$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$2$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$2", "symbols": ["type$ebnf$2$subexpression$1"]}, - {"name": "type$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$2$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$2$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$2", "symbols": ["type$ebnf$2", "type$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("constantType") ? {type: "constantType"} : constantType), "type$ebnf$2"], "postprocess": keywordToJson}, - {"name": "type$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$3$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$3$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$3", "symbols": ["type$ebnf$3$subexpression$1"]}, - {"name": "type$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$3$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$3$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$3", "symbols": ["type$ebnf$3", "type$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("comparableType") ? {type: "comparableType"} : comparableType), "type$ebnf$3", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": comparableTypeToJson}, - {"name": "type$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$4$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$4$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$4", "symbols": ["type$ebnf$4$subexpression$1"]}, - {"name": "type$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$4$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$4$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$4", "symbols": ["type$ebnf$4", "type$ebnf$4$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("constantType") ? {type: "constantType"} : constantType), "type$ebnf$4", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": comparableTypeToJson}, - {"name": "type$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$5$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$5$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$5", "symbols": ["type$ebnf$5$subexpression$1"]}, - {"name": "type$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$5$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$5$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$5", "symbols": ["type$ebnf$5", "type$ebnf$5$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgType") ? {type: "singleArgType"} : singleArgType), "type$ebnf$5", "_", "type", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgTypeKeywordWithParenToJson}, - {"name": "type$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$6$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$6$subexpression$1$subexpression$1"]}, - {"name": "type$ebnf$6", "symbols": ["type$ebnf$6$subexpression$1"]}, - {"name": "type$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "type$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "type$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "type$ebnf$6$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "type$ebnf$6$subexpression$2$subexpression$1"]}, - {"name": "type$ebnf$6", "symbols": ["type$ebnf$6", "type$ebnf$6$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "type", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("doubleArgType") ? {type: "doubleArgType"} : doubleArgType), "type$ebnf$6", "_", "type", "_", "type", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgTypeKeywordWithParenToJson}, - {"name": "typeData", "symbols": [(lexer.has("singleArgTypeData") ? {type: "singleArgTypeData"} : singleArgTypeData), "_", "typeData"], "postprocess": singleArgKeywordToJson}, - {"name": "typeData", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("singleArgTypeData") ? {type: "singleArgTypeData"} : singleArgTypeData), "_", "typeData", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": singleArgKeywordWithParenToJson}, - {"name": "typeData", "symbols": [(lexer.has("doubleArgTypeData") ? {type: "doubleArgTypeData"} : doubleArgTypeData), "_", "typeData", "_", "typeData"], "postprocess": doubleArgKeywordToJson}, - {"name": "typeData", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("doubleArgTypeData") ? {type: "doubleArgTypeData"} : doubleArgTypeData), "_", "typeData", "_", "typeData", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgKeywordWithParenToJson}, - {"name": "typeData", "symbols": [(lexer.has("data") ? {type: "data"} : data)], "postprocess": keywordToJson}, - {"name": "typeData", "symbols": [(lexer.has("data") ? {type: "data"} : data), "_", "typeData"], "postprocess": singleArgKeywordToJson}, - {"name": "typeData", "symbols": [(lexer.has("data") ? {type: "data"} : data), "_", "typeData", "_", "typeData"], "postprocess": doubleArgKeywordToJson}, - {"name": "typeData", "symbols": ["subTypeData"], "postprocess": id}, - {"name": "typeData", "symbols": ["subTypeElt"], "postprocess": id}, - {"name": "typeData", "symbols": [(lexer.has("number") ? {type: "number"} : number)], "postprocess": intToJson}, - {"name": "typeData", "symbols": [(lexer.has("string") ? {type: "string"} : string)], "postprocess": stringToJson}, - {"name": "typeData", "symbols": [(lexer.has("word") ? {type: "word"} : word)], "postprocess": stringToJson}, - {"name": "subTypeData$ebnf$1$subexpression$1", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subTypeData$ebnf$1", "symbols": ["subTypeData$ebnf$1$subexpression$1"]}, - {"name": "subTypeData$ebnf$1$subexpression$2", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subTypeData$ebnf$1", "symbols": ["subTypeData$ebnf$1", "subTypeData$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subTypeData", "symbols": [{"literal":"{"}, "_", "subTypeData$ebnf$1", {"literal":"}"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subTypeData$ebnf$2$subexpression$1", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subTypeData$ebnf$2", "symbols": ["subTypeData$ebnf$2$subexpression$1"]}, - {"name": "subTypeData$ebnf$2$subexpression$2", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subTypeData$ebnf$2", "symbols": ["subTypeData$ebnf$2", "subTypeData$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subTypeData", "symbols": [{"literal":"("}, "_", "subTypeData$ebnf$2", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subTypeElt$ebnf$1$subexpression$1", "symbols": ["typeElt", {"literal":";"}, "_"]}, - {"name": "subTypeElt$ebnf$1", "symbols": ["subTypeElt$ebnf$1$subexpression$1"]}, - {"name": "subTypeElt$ebnf$1$subexpression$2", "symbols": ["typeElt", {"literal":";"}, "_"]}, - {"name": "subTypeElt$ebnf$1", "symbols": ["subTypeElt$ebnf$1", "subTypeElt$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subTypeElt", "symbols": [{"literal":"{"}, "_", "subTypeElt$ebnf$1", {"literal":"}"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subTypeElt$ebnf$2$subexpression$1", "symbols": ["typeElt", {"literal":";"}, "_"]}, - {"name": "subTypeElt$ebnf$2", "symbols": ["subTypeElt$ebnf$2$subexpression$1"]}, - {"name": "subTypeElt$ebnf$2$subexpression$2", "symbols": ["typeElt", {"literal":";"}, "_"]}, - {"name": "subTypeElt$ebnf$2", "symbols": ["subTypeElt$ebnf$2", "subTypeElt$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subTypeElt", "symbols": [{"literal":"("}, "_", "subTypeElt$ebnf$2", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, - {"name": "typeElt", "symbols": [(lexer.has("elt") ? {type: "elt"} : elt), "_", "typeData", "_", "typeData"], "postprocess": doubleArgKeywordToJson}, - {"name": "subInstruction$ebnf$1$subexpression$1", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, - {"name": "subInstruction$ebnf$1", "symbols": ["subInstruction$ebnf$1$subexpression$1"]}, - {"name": "subInstruction$ebnf$1$subexpression$2", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, - {"name": "subInstruction$ebnf$1", "symbols": ["subInstruction$ebnf$1", "subInstruction$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "subInstruction$ebnf$1", "instruction", "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": instructionSetToJsonNoSemi}, - {"name": "subInstruction$ebnf$2$subexpression$1", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, - {"name": "subInstruction$ebnf$2", "symbols": ["subInstruction$ebnf$2$subexpression$1"]}, - {"name": "subInstruction$ebnf$2$subexpression$2", "symbols": ["instruction", "_", (lexer.has("semicolon") ? {type: "semicolon"} : semicolon), "_"]}, - {"name": "subInstruction$ebnf$2", "symbols": ["subInstruction$ebnf$2", "subInstruction$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "subInstruction$ebnf$2", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": instructionSetToJsonSemi}, - {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", "instruction", "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => d[2]}, - {"name": "subInstruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => ""}, - {"name": "instruction", "symbols": ["subInstruction"], "postprocess": id}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction)], "postprocess": keywordToJson}, - {"name": "instruction$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$1$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$1$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$1$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$1$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$1", "symbols": ["instruction$ebnf$1$subexpression$1"]}, - {"name": "instruction$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$1$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$1$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$1$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$1$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$1", "symbols": ["instruction$ebnf$1", "instruction$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$1"], "postprocess": keywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "subInstruction"], "postprocess": singleArgInstrKeywordToJson}, - {"name": "instruction$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$2$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$2$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$2$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$2$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$2", "symbols": ["instruction$ebnf$2$subexpression$1"]}, - {"name": "instruction$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$2$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$2$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$2$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$2$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$2", "symbols": ["instruction$ebnf$2", "instruction$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$2", "_", "subInstruction"], "postprocess": singleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "type"], "postprocess": singleArgKeywordToJson}, - {"name": "instruction$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$3$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$3$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$3$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$3$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$3", "symbols": ["instruction$ebnf$3$subexpression$1"]}, - {"name": "instruction$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$3$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$3$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$3$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$3$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$3", "symbols": ["instruction$ebnf$3", "instruction$ebnf$3$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$3", "_", "type"], "postprocess": singleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "data"], "postprocess": singleArgKeywordToJson}, - {"name": "instruction$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$4$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$4$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$4$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$4$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$4", "symbols": ["instruction$ebnf$4$subexpression$1"]}, - {"name": "instruction$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$4$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$4$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$4$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$4$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$4", "symbols": ["instruction$ebnf$4", "instruction$ebnf$4$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$4", "_", "data"], "postprocess": singleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "type", "_", "type", "_", "subInstruction"], "postprocess": tripleArgKeyWordToJson}, - {"name": "instruction$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$5$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$5$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$5$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$5$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$5", "symbols": ["instruction$ebnf$5$subexpression$1"]}, - {"name": "instruction$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$5$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$5$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$5$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$5$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$5", "symbols": ["instruction$ebnf$5", "instruction$ebnf$5$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$5", "_", "type", "_", "type", "_", "subInstruction"], "postprocess": tripleArgTypeKeyWordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "subInstruction", "_", "subInstruction"], "postprocess": doubleArgInstrKeywordToJson}, - {"name": "instruction$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$6$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$6$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$6$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$6$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$6", "symbols": ["instruction$ebnf$6$subexpression$1"]}, - {"name": "instruction$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$6$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$6$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$6$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$6$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$6", "symbols": ["instruction$ebnf$6", "instruction$ebnf$6$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$6", "_", "subInstruction", "_", "subInstruction"], "postprocess": doubleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "_", "type", "_", "type"], "postprocess": doubleArgKeywordToJson}, - {"name": "instruction$ebnf$7$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$7$subexpression$1$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$7$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$7$subexpression$1$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$7$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$7$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$7", "symbols": ["instruction$ebnf$7$subexpression$1"]}, - {"name": "instruction$ebnf$7$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$7$subexpression$2$subexpression$1", "symbols": ["storage"]}, - {"name": "instruction$ebnf$7$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$7$subexpression$2$subexpression$1", "symbols": [(lexer.has("string") ? {type: "string"} : string)]}, - {"name": "instruction$ebnf$7$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$7$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$7", "symbols": ["instruction$ebnf$7", "instruction$ebnf$7$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [(lexer.has("instruction") ? {type: "instruction"} : instruction), "instruction$ebnf$7", "_", "type", "_", "type"], "postprocess": doubleArgTypeKeywordToJson}, - {"name": "instruction", "symbols": [{"literal":"PUSH"}, "_", "type", "_", "data"], "postprocess": doubleArgKeywordToJson}, - {"name": "instruction$ebnf$8$subexpression$1$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$8$subexpression$1$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "instruction$ebnf$8$subexpression$1$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$8$subexpression$1", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$8$subexpression$1$subexpression$1"]}, - {"name": "instruction$ebnf$8", "symbols": ["instruction$ebnf$8$subexpression$1"]}, - {"name": "instruction$ebnf$8$subexpression$2$subexpression$1", "symbols": [(lexer.has("parameter") ? {type: "parameter"} : parameter)]}, - {"name": "instruction$ebnf$8$subexpression$2$subexpression$1", "symbols": [(lexer.has("storage") ? {type: "storage"} : storage)]}, - {"name": "instruction$ebnf$8$subexpression$2$subexpression$1", "symbols": [(lexer.has("word") ? {type: "word"} : word)]}, - {"name": "instruction$ebnf$8$subexpression$2", "symbols": ["_", (lexer.has("annot") ? {type: "annot"} : annot), "instruction$ebnf$8$subexpression$2$subexpression$1"]}, - {"name": "instruction$ebnf$8", "symbols": ["instruction$ebnf$8", "instruction$ebnf$8$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "instruction", "symbols": [{"literal":"PUSH"}, "instruction$ebnf$8", "_", "type", "_", "data"], "postprocess": pushWithAnnotsToJson}, - {"name": "instruction", "symbols": [(lexer.has("lbrace") ? {type: "lbrace"} : lbrace), "_", (lexer.has("rbrace") ? {type: "rbrace"} : rbrace)], "postprocess": d => ""}, - {"name": "data", "symbols": [(lexer.has("data") ? {type: "data"} : data)], "postprocess": keywordToJson}, - {"name": "data", "symbols": [(lexer.has("data") ? {type: "data"} : data), "_", "data"], "postprocess": singleArgKeywordToJson}, - {"name": "data", "symbols": [(lexer.has("data") ? {type: "data"} : data), "_", "data", "_", "data"], "postprocess": doubleArgKeywordToJson}, - {"name": "data", "symbols": [(lexer.has("lparen") ? {type: "lparen"} : lparen), "_", (lexer.has("data") ? {type: "data"} : data), "_", "data", "_", "data", "_", (lexer.has("rparen") ? {type: "rparen"} : rparen)], "postprocess": doubleArgKeywordWithParenToJson}, - {"name": "data", "symbols": ["subData"], "postprocess": id}, - {"name": "data", "symbols": ["subElt"], "postprocess": id}, - {"name": "data", "symbols": [(lexer.has("number") ? {type: "number"} : number)], "postprocess": intToJson}, - {"name": "data", "symbols": [(lexer.has("string") ? {type: "string"} : string)], "postprocess": stringToJson}, - {"name": "data", "symbols": [(lexer.has("word") ? {type: "word"} : word)], "postprocess": stringToJson}, - {"name": "subData$ebnf$1$subexpression$1", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subData$ebnf$1", "symbols": ["subData$ebnf$1$subexpression$1"]}, - {"name": "subData$ebnf$1$subexpression$2", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subData$ebnf$1", "symbols": ["subData$ebnf$1", "subData$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subData", "symbols": [{"literal":"{"}, "_", "subData$ebnf$1", {"literal":"}"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subData$ebnf$2$subexpression$1", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subData$ebnf$2", "symbols": ["subData$ebnf$2$subexpression$1"]}, - {"name": "subData$ebnf$2$subexpression$2", "symbols": ["data", {"literal":";"}, "_"]}, - {"name": "subData$ebnf$2", "symbols": ["subData$ebnf$2", "subData$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subData", "symbols": [{"literal":"("}, "_", "subData$ebnf$2", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subElt$ebnf$1$subexpression$1", "symbols": ["elt", {"literal":";"}, "_"]}, - {"name": "subElt$ebnf$1", "symbols": ["subElt$ebnf$1$subexpression$1"]}, - {"name": "subElt$ebnf$1$subexpression$2", "symbols": ["elt", {"literal":";"}, "_"]}, - {"name": "subElt$ebnf$1", "symbols": ["subElt$ebnf$1", "subElt$ebnf$1$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subElt", "symbols": [{"literal":"{"}, "_", "subElt$ebnf$1", {"literal":"}"}], "postprocess": instructionSetToJsonSemi}, - {"name": "subElt$ebnf$2$subexpression$1", "symbols": ["elt", {"literal":";"}, "_"]}, - {"name": "subElt$ebnf$2", "symbols": ["subElt$ebnf$2$subexpression$1"]}, - {"name": "subElt$ebnf$2$subexpression$2", "symbols": ["elt", {"literal":";"}, "_"]}, - {"name": "subElt$ebnf$2", "symbols": ["subElt$ebnf$2", "subElt$ebnf$2$subexpression$2"], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "subElt", "symbols": [{"literal":"("}, "_", "subElt$ebnf$2", {"literal":")"}], "postprocess": instructionSetToJsonSemi}, - {"name": "elt", "symbols": [(lexer.has("elt") ? {type: "elt"} : elt), "_", "data", "_", "data"], "postprocess": doubleArgKeywordToJson}, - {"name": "_$ebnf$1", "symbols": []}, - {"name": "_$ebnf$1", "symbols": ["_$ebnf$1", /[\s]/], "postprocess": function arrpush(d) {return d[0].concat([d[1]]);}}, - {"name": "_", "symbols": ["_$ebnf$1"]}, - {"name": "semicolons", "symbols": []}, - {"name": "semicolons", "symbols": ["semicolons", {"literal":";"}]} -] - , ParserStart: "main" -} -if (typeof module !== 'undefined'&& typeof module.exports !== 'undefined') { - module.exports = grammar; -} else { - window.grammar = grammar; -} -})(); diff --git a/src/identity/tezos/TezosFileWallet.ts b/src/identity/tezos/TezosFileWallet.ts deleted file mode 100644 index 778f587e..00000000 --- a/src/identity/tezos/TezosFileWallet.ts +++ /dev/null @@ -1,78 +0,0 @@ -import * as fs from "fs"; - -import {Wallet, EncryptedWalletVersionOne} from "../../types/wallet/Wallet"; -import {KeyStore} from "../../types/wallet/KeyStore"; -import {CryptoUtils} from "../../utils/CryptoUtils"; -import {TezosMessageUtils} from '../../chain/tezos/TezosMessageUtil'; - -/** - * Functions for Tezos file wallet functionality. - */ -export namespace TezosFileWallet { - /** - * Saves a wallet to a given file. - * - * @param {string} filename Name of file - * @param {Wallet} wallet Wallet object - * @param {string} passphrase User-supplied passphrase - * @returns {Promise} Wallet object loaded from disk - */ - export async function saveWallet(filename: string, wallet: Wallet, passphrase: string): Promise { - const keys = JSON.stringify(wallet.identities); - const salt = await CryptoUtils.generateSaltForPwHash(); - const encryptedKeys = await CryptoUtils.encryptMessage(keys, passphrase, salt); - - const encryptedWallet: EncryptedWalletVersionOne = { - version: '1', - salt: TezosMessageUtils.readBufferWithHint(salt, ''), - ciphertext: TezosMessageUtils.readBufferWithHint(encryptedKeys, ''), - kdf: 'Argon2' - }; - - const p = new Promise((resolve, reject) => { - fs.writeFile(filename, JSON.stringify(encryptedWallet), err => { - if (err) { reject(err); return; } - resolve(); - }); - }); - await p; - return loadWallet(filename, passphrase); - } - - /** - * Loads a wallet from a given file. - * - * @param {string} filename Name of file - * @param {string} passphrase User-supplied passphrase - * @returns {Promise} Loaded wallet - */ - export async function loadWallet(filename: string, passphrase: string): Promise { - const p = new Promise((resolve, reject) => { - fs.readFile(filename, (err, data) => { - if (err) { reject(err); return; } - const encryptedWallet: EncryptedWalletVersionOne = JSON.parse(data.toString()) as EncryptedWalletVersionOne; - resolve(encryptedWallet); - }); - }); - - const ew = await p; - const encryptedKeys = TezosMessageUtils.writeBufferWithHint(ew.ciphertext); - const salt = TezosMessageUtils.writeBufferWithHint(ew.salt); - const keys = JSON.parse(await CryptoUtils.decryptMessage(encryptedKeys, passphrase, salt)) as KeyStore[]; - - return { identities: keys }; - } - - /** - * Creates a new wallet file. - * @param {string} filename Where to save the wallet file - * @param {string} password User-supplied passphrase used to secure wallet file - * @returns {Promise} Object corresponding to newly-created wallet - */ - export async function createWallet(filename: string, password: string): Promise { - const wallet: Wallet = { identities: [] }; - await saveWallet(filename, wallet, password); - - return wallet - } -} diff --git a/src/identity/tezos/TezosLedgerWallet.ts b/src/identity/tezos/TezosLedgerWallet.ts deleted file mode 100644 index 6e88b44c..00000000 --- a/src/identity/tezos/TezosLedgerWallet.ts +++ /dev/null @@ -1,72 +0,0 @@ -/** - * These two lines allow us to interface with Ledgerjs and use their transport layer code - */ -let Transport = require("@ledgerhq/hw-transport-node-hid").default; -let App = require("basil-tezos-ledger").default; - -import {TezosMessageUtils} from '../../chain/tezos/TezosMessageUtil'; -import {HardwareDeviceType} from "../../types/wallet/HardwareDeviceType"; -import {KeyStore, StoreType} from "../../types/wallet/KeyStore"; - -/** - * Current solution to keep global instance of Ledgerjs transport object for signing use. - */ -class TransportInstance { - static transport = null; - static async getInstance() { - if (this.transport === null) { - this.transport = await Transport.create(); - } - return this.transport - } -} - -export namespace TezosLedgerWallet { - export async function unlockAddress(deviceType: HardwareDeviceType, derivationPath: string): Promise { - if (deviceType !== HardwareDeviceType.LedgerNanoS) { - throw new Error("Unsupported hardware device"); - } - - const hexEncodedPublicKey = await getTezosPublicKey(derivationPath); - //We slice off a byte to make sure we have a 64 bits coming in from the ledger package - const publicKeyBytes = Buffer.from(hexEncodedPublicKey, 'hex').slice(1); - const publicKey = TezosMessageUtils.readKeyWithHint(publicKeyBytes, "edpk"); - const publicKeyHash = TezosMessageUtils.computeKeyHash(publicKeyBytes, 'tz1'); - - return { publicKey: publicKey, privateKey: '', publicKeyHash: publicKeyHash, seed: '', storeType: StoreType.Hardware }; - } - - /** - * Given a BIP44 derivation path for Tezos, get the Tezos Public Key - * - * @param derivationPath BIP44 Derivation Path - */ - export async function getTezosPublicKey(derivationPath: string): Promise { - const transport = await TransportInstance.getInstance(); - const xtz = new App(transport); - const result = await xtz.getAddress(derivationPath, true); - const hexEncodedPublicKey = result.publicKey; - - return hexEncodedPublicKey; - } - - /** - * Given a BIP44 derivation path for Tezos, and the hex encoded, watermarked Tezos Operation, sign using the ledger - * - * @param derivationPath BIP44 Derivation Path - * @param watermarkedOpInHex Operation - */ - export async function signTezosOperation(derivationPath: string, watermarkedOpInHex: string): Promise { - const transport = await TransportInstance.getInstance(); - const xtz = new App(transport); - const result = await xtz.signOperation(derivationPath, watermarkedOpInHex); - const hexEncodedSignature = result.signature; - const signatureBytes = Buffer.from(hexEncodedSignature, 'hex'); - - return signatureBytes; - } - - export function initLedgerTransport() { - TransportInstance.transport = null; - } -} diff --git a/src/identity/tezos/TezosWalletUtil.ts b/src/identity/tezos/TezosWalletUtil.ts deleted file mode 100644 index 5a537da1..00000000 --- a/src/identity/tezos/TezosWalletUtil.ts +++ /dev/null @@ -1,65 +0,0 @@ -import * as bip39 from 'bip39'; - -import {TezosMessageUtils} from '../../chain/tezos/TezosMessageUtil'; -import {KeyStore, StoreType} from '../../types/wallet/KeyStore'; -import {CryptoUtils} from '../../utils/CryptoUtils' - -export namespace TezosWalletUtil { - /** - * Unlocks an identity supplied during the 2017 Tezos fundraiser. - * - * To get an account for testing on Tezos Alphanet go to https://faucet.tzalpha.net - * - * @param {string} mnemonic Fifteen word mnemonic phrase from fundraiser PDF. - * @param {string} email Email address from fundraiser PDF. - * @param {string} password Password from fundraiser PDF. - * @param {string} pkh The public key hash supposedly produced by the given mnemonic and passphrase - * @returns {Promise} Wallet file - */ - export async function unlockFundraiserIdentity(mnemonic: string, email: string, password: string, pkh: string) : Promise { - return await getKeysFromMnemonicAndPassphrase(mnemonic, email + password, StoreType.Fundraiser, pkh); - } - - /** - * Generates a fifteen word mnemonic phrase using the BIP39 standard. - */ - export function generateMnemonic(): string { - return bip39.generateMnemonic(160) - } - - /** - * Generates a key pair based on a mnemonic. - * - * @param {string} mnemonic Fifteen word mnemonic phrase - * @param {string} passphrase User-supplied passphrase - * @returns {Promise} Unlocked key pair - */ - export async function unlockIdentityWithMnemonic(mnemonic: string, passphrase: string): Promise { - return await getKeysFromMnemonicAndPassphrase(mnemonic, passphrase, StoreType.Mnemonic); - } - - /** - * Generates keys from a user-supplied mnemonic and passphrase. - * - * @param {string} mnemonic Fifteen word mnemonic phrase from fundraiser PDF. - * @param {string} passphrase User-supplied passphrase - * @param {string} pkh The public key hash supposedly produced by the given mnemonic and passphrase - * @param {boolean} checkPKH Check whether presumed public key hash matches the actual public key hash - * @param {StoreType} storeType Type of the generated key store - * @returns {Promise} Generated keys - */ - export async function getKeysFromMnemonicAndPassphrase(mnemonic: string, passphrase: string, storeType: StoreType, pkh?: string) : Promise { - if (mnemonic.split(' ').length !== 15) { throw new Error('The mnemonic should be 15 words.'); } - if (!bip39.validateMnemonic(mnemonic)) { throw new Error('The given mnemonic could not be validated.'); } - - const seed = (await bip39.mnemonicToSeed(mnemonic, passphrase)).slice(0, 32); - const keys = await CryptoUtils.generateKeys(seed); - const privateKey = TezosMessageUtils.readKeyWithHint(keys.privateKey, 'edsk'); - const publicKey = TezosMessageUtils.readKeyWithHint(keys.publicKey, 'edpk'); - const publicKeyHash = TezosMessageUtils.computeKeyHash(keys.publicKey, 'tz1'); - - if (!!pkh && publicKeyHash !== pkh) { throw new Error('The given mnemonic and passphrase do not correspond to the applied public key hash'); } - - return { publicKey, privateKey, publicKeyHash, seed: '', storeType }; - } -} diff --git a/src/index-web.ts b/src/index-web.ts deleted file mode 100644 index 5a6ff89a..00000000 --- a/src/index-web.ts +++ /dev/null @@ -1,22 +0,0 @@ -import FetchSelector from './utils/FetchSelector'; - -FetchSelector.setFetch(window.fetch); - -export * from './chain/tezos/TezosLanguageUtil'; -export * from './chain/tezos/TezosMessageUtil'; -export * from './chain/tezos/TezosNodeReader'; -export * from './chain/tezos/TezosNodeWriter'; - -export * from './identity/tezos/TezosWalletUtil'; -export * from './identity/tezos/TezosFileWallet'; - -export * from './reporting/tezos/TezosConseilClient'; - -export * from './reporting/ConseilDataClient'; -export * from './reporting/ConseilMetadataClient'; -export * from './reporting/ConseilQueryBuilder'; - -export * from './types/conseil/QueryTypes'; -export * from './types/wallet/KeyStore'; - -export * from './utils/CryptoUtils'; diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 1fc0908a..00000000 --- a/src/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import fetch from 'node-fetch'; -import FetchSelector from './utils/FetchSelector'; -import DeviceSelector from './utils/DeviceSelector'; -import { TezosLedgerWallet } from './identity/tezos/TezosLedgerWallet'; - -FetchSelector.setFetch(fetch); -DeviceSelector.setLedgerUtils(TezosLedgerWallet); - -export * from './chain/tezos/TezosLanguageUtil'; -export * from './chain/tezos/TezosMessageUtil'; -export * from "./chain/tezos/TezosNodeReader"; -export * from "./chain/tezos/TezosNodeWriter"; - -export * from "./identity/tezos/TezosFileWallet"; -export * from "./identity/tezos/TezosLedgerWallet"; -export * from "./identity/tezos/TezosWalletUtil"; - -export * from "./reporting/tezos/TezosConseilClient"; - -export * from './reporting/ConseilDataClient'; -export * from './reporting/ConseilMetadataClient'; -export * from './reporting/ConseilQueryBuilder'; - -export * from './types/conseil/QueryTypes'; -export * from './types/wallet/KeyStore'; - -export * from './utils/CryptoUtils'; diff --git a/src/reporting/tezos/TezosConseilClient.ts b/src/reporting/tezos/TezosConseilClient.ts deleted file mode 100644 index 39da7a9b..00000000 --- a/src/reporting/tezos/TezosConseilClient.ts +++ /dev/null @@ -1,161 +0,0 @@ -import {ConseilQueryBuilder} from "../ConseilQueryBuilder"; -import {ConseilQuery, ConseilOperator, ConseilServerInfo, ConseilSortDirection} from "../../types/conseil/QueryTypes" -import {ConseilDataClient} from "../ConseilDataClient"; -import {OperationKindType} from "../../types/tezos/TezosChainTypes"; - -/** - * Functions for querying the Conseil backend REST API v2 for Tezos chain data. - */ -export namespace TezosConseilClient { - const BLOCKS = 'blocks'; - const ACCOUNTS = 'accounts'; - const OPERATION_GROUPS = 'operation_groups'; - const OPERATIONS = 'operations'; - const FEES = 'fees'; - const PROPOSALS = 'proposals'; - const BAKERS = 'bakers'; - const BALLOTS = 'ballots'; - - /** - * Returns a record set for a specific entity of the Tezos platform. Entity list and metadata can be retrieved using ConseilMetadataClient. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - * @param entity Entity to retrieve. - * @param query Query to submit. - */ - export async function getTezosEntityData(serverInfo: ConseilServerInfo, network: string, entity: string, query: ConseilQuery): Promise { - return ConseilDataClient.executeEntityQuery(serverInfo, 'tezos', network, entity, query); - } - - /** - * Get the head block from the Tezos platform given a network. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - */ - export async function getBlockHead(serverInfo: ConseilServerInfo, network: string): Promise { - const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addOrdering(ConseilQueryBuilder.blankQuery(), 'level', ConseilSortDirection.DESC), 1); - - return getTezosEntityData(serverInfo, network, BLOCKS, query); - } - - /** - * Get a block by hash from the Tezos platform given a network. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - * @param hash Block hash to query for. - */ - export async function getBlock(serverInfo: ConseilServerInfo, network: string, hash: string): Promise { - const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'hash', ConseilOperator.EQ, [hash], false), 1); - - return getTezosEntityData(serverInfo, network, BLOCKS, query); - } - - /** - * Get an account from the Tezos platform given a network by account id. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - * @param accountID Account hash to query for. - */ - export async function getAccount(serverInfo: ConseilServerInfo, network: string, accountID: string): Promise { - const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'account_id', ConseilOperator.EQ, [accountID], false), 1); - - return getTezosEntityData(serverInfo, network, ACCOUNTS, query); - } - - /** - * Get an operation group from the Tezos platform given a network by id. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - * @param operationGroupID Operation group hash to query for. - */ - export async function getOperationGroup(serverInfo: ConseilServerInfo, network: string, operationGroupID: string): Promise { - const query = ConseilQueryBuilder.setLimit(ConseilQueryBuilder.addPredicate(ConseilQueryBuilder.blankQuery(), 'operation_id', ConseilOperator.EQ, [operationGroupID], false), 1); - - return getTezosEntityData(serverInfo, network, OPERATION_GROUPS, query); - } - - /** - * Request block-entity data for a given network. Rather than simply requesting a block by hash, this function allows modification of the response to contain a subset of block attributes subject to a filter on some of them. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - * @param query Conseil JSON query. See reference. - * - * @see [Conseil Query Format Spec]{@link https://github.com/Cryptonomic/Conseil/blob/master/doc/Query.md} - */ - export async function getBlocks(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { - return getTezosEntityData(serverInfo, network, BLOCKS, query) - } - - /** - * Request account-entity data for a given network. Rather than simply requesting an account by hash, this function allows modification of the response to contain a subset of account attributes subject to a filter on some of them. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - * @param query Conseil JSON query. See reference. - * - * @see [Conseil Query Format Spec]{@link https://github.com/Cryptonomic/Conseil/blob/master/doc/Query.md} - */ - export async function getAccounts(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { - return getTezosEntityData(serverInfo, network, ACCOUNTS, query) - } - - /** - * Request operation group-entity data for a given network. Rather than simply requesting an operation group by hash, this function allows modification of the response to contain a subset of operation group attributes subject to a filter on some of them. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - * @param query Conseil JSON query. See reference. - * - * @see [Conseil Query Format Spec]{@link https://github.com/Cryptonomic/Conseil/blob/master/doc/Query.md} - */ - export async function getOperationGroups(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { - return getTezosEntityData(serverInfo, network, OPERATION_GROUPS, query) - } - - /** - * Request operation-entity data for a given network. This function allows modification of the response to contain a subset of operation attributes subject to a filter on some of them. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - * @param query Conseil JSON query. See reference. - * - * @see [Conseil Query Format Spec]{@link https://github.com/Cryptonomic/Conseil/blob/master/doc/Query.md} - */ - export async function getOperations(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { - return getTezosEntityData(serverInfo, network, OPERATIONS, query) - } - - /** - * Request pre-computed fee statistics for operation fees by operation kind. The query returns the latest record. - * - * @param serverInfo Conseil server connection definition. - * @param network Tezos network to query, mainnet, alphanet, etc. - * @param operationType Tezos operation kind - */ - export async function getFeeStatistics(serverInfo: ConseilServerInfo, network: string, operationType: OperationKindType) { - let query = ConseilQueryBuilder.blankQuery(); - query = ConseilQueryBuilder.addPredicate(query, 'kind', ConseilOperator.EQ, [operationType]); - query = ConseilQueryBuilder.addOrdering(query, 'timestamp', ConseilSortDirection.DESC); - query = ConseilQueryBuilder.setLimit(query, 1); - - return getTezosEntityData(serverInfo, network, FEES, query); - } - - export async function getProposals(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { - return getTezosEntityData(serverInfo, network, PROPOSALS, query) - } - - export async function getBakers(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { - return getTezosEntityData(serverInfo, network, BAKERS, query) - } - - export async function getBallots(serverInfo: ConseilServerInfo, network: string, query: ConseilQuery): Promise { - return getTezosEntityData(serverInfo, network, BALLOTS, query) - } -} diff --git a/src/types/conseil/ErrorTypes.ts b/src/types/conseil/ErrorTypes.ts deleted file mode 100644 index 84f03180..00000000 --- a/src/types/conseil/ErrorTypes.ts +++ /dev/null @@ -1,67 +0,0 @@ -import {ConseilQuery} from "./QueryTypes"; - -/** - * Object to store details of an HTTP request failure. This would describe an error generated after sending a request, things that didn't result in a 200, or similarly "ok" status code. - */ -export class ServiceRequestError extends Error { - httpStatus: number; - httpMessage: string; - conseilURL: string; - data: string | null; - - constructor(httpStatus: number, httpMessage: string, conseilURL: string, data: string | null){ - super(); - - this.httpStatus = httpStatus; - this.httpMessage = httpMessage; - this.conseilURL = conseilURL; - this.data = data; - } -} - -/** - * A specialization of ServiceRequestError for Conseil service requests. - */ -export class ConseilRequestError extends ServiceRequestError { - conseilQuery: ConseilQuery | null; - - constructor(httpStatus: number, httpMessage: string, conseilURL: string, conseilQuery: ConseilQuery | null){ - super(httpStatus, httpMessage, conseilURL, null); - - this.conseilQuery = conseilQuery; - } -} - -/** - * A container for response failures. Meaning a response was sent by the server, but there was some issue processing it after it was received. - */ -export class ServiceResponseError extends Error { - httpStatus: number; - httpMessage: string; - conseilURL: string; - data: string | null; - response: any; - - constructor(httpStatus: number, httpMessage: string, conseilURL: string, data: string | null, response: any){ - super(); - - this.httpStatus = httpStatus; - this.httpMessage = httpMessage; - this.conseilURL = conseilURL; - this.data = data; - this.response = response; - } -} - -/** - * A specialization of ServiceResponseError for Conseil services. - */ -export class ConseilResponseError extends ServiceResponseError { - conseilQuery: ConseilQuery | null; - - constructor(httpStatus: number, httpMessage: string, conseilURL: string, conseilQuery: ConseilQuery | null, response: any){ - super(httpStatus, httpMessage, conseilURL, null, response); - - this.conseilQuery = conseilQuery; - } -} diff --git a/src/types/conseil/MetadataTypes.ts b/src/types/conseil/MetadataTypes.ts deleted file mode 100644 index c50ebf7f..00000000 --- a/src/types/conseil/MetadataTypes.ts +++ /dev/null @@ -1,41 +0,0 @@ -export interface PlatformDefinition { - name: string, - displayName: string -} - -export interface NetworkDefinition { - name: string, - displayName: string, - platform: string, - network: string -} - -export interface EntityDefinition { - name: string, - displayName: string, - count: number, - network: string -} - -export interface AttributeDefinition { - name: string, - displayName: string, - dataType: AttrbuteDataType, - cardinality: number, - keyType: AttrbuteKeyType, - entity: string, - dataFormat: string -} - -export enum AttrbuteDataType { - STRING = 'String', - INT = 'Int', - DECIMAL = 'Decimal', - BOOLEAN = 'Boolean' -} - -export enum AttrbuteKeyType { - PRIMARYKEY = 'PrimaryKey', - UNIQUEKEY = 'UniqueKey', - NONKEY = 'NonKey' -} \ No newline at end of file diff --git a/src/types/tezos/TezosChainTypes.ts b/src/types/tezos/TezosChainTypes.ts deleted file mode 100644 index 836ee768..00000000 --- a/src/types/tezos/TezosChainTypes.ts +++ /dev/null @@ -1,146 +0,0 @@ -/** - * Types used to process data returned from the Tezos node. - */ - -export interface BlockHeader { - level: number, - proto: number, - predecessor: string, - timestamp: string, - validation_pass: number, - operations_hash: string, - fitness: string[], - context: string, - priority: number, - proof_of_work_nonce: string, - signature: string -} - -export interface BlockMetadata { - protocol: string, - chain_id: string, - hash: string, - metadata: BlockHeader -} - -export interface AccountDelegate { - setable: boolean, - value: string -} - -export interface Account { - manager: string, - balance: number, - spendable: boolean, - delegate: AccountDelegate, - script: string, - counter: number -} - -export interface ManagerKey { - manager: string, - key: string -} - -export interface AlphaOperationResult { - status: string, - originated_contracts: string[] - errors: string[] -} - -export interface AlphaOperationContentsAndResult { - kind: string, - metadata: AlphaOperationResult -} - -export interface AlphaOperationsWithMetadata { - contents: AlphaOperationContentsAndResult[], - signature: string, - kind: string, //only if error - id: string, //only if error - contract: string //only if error -} - -export interface InjectedOperation { - injectedOperation: string -} - -// abstracts Transaction, Delegation, Reveal, and Origination operations -export interface Operation { - kind: string, - source: string, - fee: string, - counter: string, - storage_limit: string, - gas_limit: string, - delegate?: string, - public_key?: string, - managerPubkey?: string, // mainnet, alphanet - //manager_pubkey?: string, // zeronet - balance?: string, - spendable?: boolean, - delegatable?: boolean, - destination?: string, - amount?: string, - script?: string | object, - parameters?: string; -} - -/** - * This object does not match the RPC entity by the same name. - */ -export interface Ballot { - source: string, - period: number, - proposal: string, - vote: BallotVote -} - -export interface ContractOriginationOperation extends Operation { - script: string; -} - -export interface ContractInvocationOperation extends Operation { - parameters: string; -} - -/** - * Output of operation signing. - */ -export interface SignedOperationGroup { - bytes: Buffer; - signature: string; -} - -/** - * Result of a successfully sent operation - */ -export interface OperationResult { - results: AlphaOperationsWithMetadata; - operationGroupID: string; -} - -export enum OperationKindType { - SeedNonceRevelation = 'seed_nonce_revelation', - Delegation = 'delegation', - Transaction = 'transaction', - AccountActivation = 'activate_account', - Origination = 'origination', - Reveal = 'reveal', - Endorsement = "endorsement", - Ballot = 'ballot' -} - -export enum BallotVote { - Yay = 0, - Nay = 1, - Pass = 2 -} - -/** - * This object does not match the RPC entity by the same name. - */ -export interface Activation { - pkh: string, - secret: string -} \ No newline at end of file diff --git a/src/types/wallet/Error.ts b/src/types/wallet/Error.ts deleted file mode 100644 index 74f5cde2..00000000 --- a/src/types/wallet/Error.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * A generic Error container - */ -export interface Error { - error: string -} \ No newline at end of file diff --git a/src/types/wallet/HardwareDeviceType.ts b/src/types/wallet/HardwareDeviceType.ts deleted file mode 100644 index e6bd47f5..00000000 --- a/src/types/wallet/HardwareDeviceType.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Enum describing the hardware device a Tezos Operation is acting upon - */ -export enum HardwareDeviceType { - LedgerNanoS = 0, - TrezorT = 1 -} \ No newline at end of file diff --git a/src/types/wallet/KeyStore.ts b/src/types/wallet/KeyStore.ts deleted file mode 100644 index 2112cc8f..00000000 --- a/src/types/wallet/KeyStore.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Represents a generic cryptocurrency key store. - * The seed is only used for HD wallets. - */ -export interface KeyStore { - publicKey: string, - privateKey: string, - publicKeyHash: string, - seed: string, - storeType: StoreType -} - -/** - * Type of key store, i.e. whether it was generated from a fundraiser PDF or from a new mnemonic - */ -export enum StoreType { - Mnemonic, - Fundraiser, - Hardware -} diff --git a/src/types/wallet/Wallet.ts b/src/types/wallet/Wallet.ts deleted file mode 100644 index a5b32fa8..00000000 --- a/src/types/wallet/Wallet.ts +++ /dev/null @@ -1,21 +0,0 @@ -import {KeyStore} from "./KeyStore"; - -/** - * Represents a generic cryptocurrency wallet. - */ -export interface Wallet { - identities: KeyStore[] -} - -/** - * Represents the first version of an encrypted wallet. - */ -export interface EncryptedWalletVersionOne { - version: string, - salt: string, - ciphertext: string, - /** - * Key derivation function - */ - kdf: string -} \ No newline at end of file diff --git a/src/utils/DeviceSelector.ts b/src/utils/DeviceSelector.ts deleted file mode 100644 index 782a7c68..00000000 --- a/src/utils/DeviceSelector.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Ledger interface abstraction. - * - * Rather than importing the ledger library directly the code that needs it will look it up here and - * only execute if it is indeed available. This is done in an effort to provide the ability to package - * different versions of ConseilJS, a light-weight one for web reporting tools like Arronax, a full - * version for nodejs-based use, etc. - */ -export default class DeviceSelector { - static ledgerUtils: any = null; - static setLedgerUtils(ledger: any) { - this.ledgerUtils = ledger; - } - - static getLedgerUtils() { - return this.ledgerUtils; - } -} diff --git a/test/CryptoUtils.spec.ts b/test/CryptoUtils.spec.ts deleted file mode 100644 index f5924228..00000000 --- a/test/CryptoUtils.spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -import 'mocha'; -import {expect} from 'chai'; - -import {CryptoUtils} from "../src/utils/CryptoUtils"; - -describe('encryptMessage() and decryptMessage()', () => { - it('should correctly encrypt and decrypt text', async () => { - const salt = await CryptoUtils.generateSaltForPwHash(); - const message = "hello"; - const passphrase = "Spring12345!!!"; - const encrypted = await CryptoUtils.encryptMessage(message, passphrase, salt); - const decrypted = await CryptoUtils.decryptMessage(encrypted, passphrase, salt); - expect(decrypted).to.equal(message); - }); - - it('should be not encrypt if the password strength is less than 3', async () => { - const salt = await CryptoUtils.generateSaltForPwHash(); - const message = "hello"; - const passphrase = "password"; - try { - const encrypted = await CryptoUtils.encryptMessage(message, passphrase, salt); - await CryptoUtils.decryptMessage(encrypted, passphrase, salt); - } catch (err) { - expect(err.message).to.equal('The password strength should not be less than 3.'); - } - }); -}); - -describe('getPasswordStrength', () => { - it('should not be less than 3', () => { - const score = CryptoUtils.getPasswordStrength('Spring12345!'); - expect(score).to.greaterThan(2); - }); - - it('should be less than 3', () => { - const score = CryptoUtils.getPasswordStrength('Spring'); - expect(score).to.lessThan(3); - }); -}); diff --git a/test/TezosOperations.spec.ts b/test/TezosOperations.spec.ts deleted file mode 100644 index 9f740740..00000000 --- a/test/TezosOperations.spec.ts +++ /dev/null @@ -1,333 +0,0 @@ -import "mocha"; -import { expect, use } from "chai"; -import chaiAsPromised from 'chai-as-promised'; -import nock from 'nock'; -import { Operation, Ballot } from "../src/types/tezos/TezosChainTypes"; - -import { TezosNodeReader, TezosWalletUtil, TezosNodeWriter } from "../src"; -import { TezosMessageUtils } from '../src/chain/tezos/TezosMessageUtil'; -import mochaAsync from '../test/mochaTestHelper'; -import { - blockHead, - forgedOpGroupList, - appliedOpList, - signedOpGroup, - injectOpList, - accountMockList, - managerKeyMockList, - walletInfoLists -} from './TezosOperations.responses'; - -use(chaiAsPromised); - -const { unlockFundraiserIdentity } = TezosWalletUtil; -const { - signOperationGroup, - forgeOperations, - applyOperation, - injectOperation, - sendIdentityActivationOperation, - sendKeyRevealOperation, - sendTransactionOperation, - sendAccountOriginationOperation, - sendDelegationOperation, - sendContractInvocationOperation -} = TezosNodeWriter; - -let keyStore; -let keyStore1; -let ops; -let opIndex = 0; -const [info0, info1] = walletInfoLists; - -const ktAddress = 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM'; - -describe('Tezos Operations Test', () => { - before(mochaAsync(async () => { - keyStore = await unlockFundraiserIdentity(info0.mnemonic.join(' '), info0.email, info0.password, info0.pkh); - keyStore.storeType = 'Fundraiser'; - - keyStore1 = await unlockFundraiserIdentity(info1.mnemonic.join(' '), info1.email, info1.password, info1.pkh); - keyStore1.storeType = 'Fundraiser'; - const nockOb = nock('http://conseil.server'); - nockOb - .persist() - .get(`/chains/main/blocks/head`) - .reply(200, blockHead); - - const accountUrl = `/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore.publicKeyHash}`; - nockOb - .get(accountUrl) - .reply(200, accountMockList[0]); - - const accountUrl1 = `/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore1.publicKeyHash}`; - nockOb - .get(accountUrl1) - .reply(200, accountMockList[1]); - const accountDelegateUrl = `/chains/main/blocks/${blockHead.hash}/context/contracts/${ktAddress}`; - nockOb - .get(accountDelegateUrl) - .reply(200, accountMockList[2]); - - const accountMangerUrl = `/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore.publicKeyHash}/manager_key`; - nockOb - .get(accountMangerUrl) - .reply(200, managerKeyMockList[0]); - const nonAccountMangerUrl = `/chains/main/blocks/${blockHead.hash}/context/contracts/${keyStore1.publicKeyHash}/manager_key`; - nockOb - .get(nonAccountMangerUrl) - .reply(200, managerKeyMockList[1]); - const ktAccountMangerUrl = `/chains/main/blocks/${blockHead.hash}/context/contracts/${ktAddress}/manager_key`; - nockOb - .get(ktAccountMangerUrl) - .reply(200, managerKeyMockList[0]); - - })); - describe('Some Base Operations Test', () => { - before(async () => { - const activation = { - kind: 'activate_account', - pkh: keyStore.publicKeyHash, - secret: info0.secret - }; - ops = [activation]; - const nockOb1 = nock('http://conseil.server'); - nockOb1 - .persist() - .filteringRequestBody(body => '*') - .post(`/chains/main/blocks/head/helpers/forge/operations`, '*') - .reply(200, forgedOpGroupList[0]) - .post(`/chains/main/blocks/head/helpers/preapply/operations`, '*') - .reply(200, appliedOpList[0]) - .post(`/injection/operation?chain=main`, '*') - .reply(200, injectOpList[0]); - }); - - it('TezosNodeReader.getBlockHead test ---', mochaAsync(async () => { - const block = await TezosNodeReader.getBlockHead('http://conseil.server'); - expect(block).to.be.an('object'); - expect(block.hash).to.exist; - })); - - it("correctly encode operations locally", () => { - let messages: any = []; - messages.push({ - kind: "reveal", - source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", - fee: "0", - counter: "425748", - storage_limit: "0", - gas_limit: "10000", - public_key: "edpkuDuXgPVJi3YK2GKL6avAK3GyjqyvpJjG9gTY5r2y72R7Teo65i" - } as Operation); - messages.push({ - kind: "transaction", - source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", - fee: "10000", - counter: "9", - storage_limit: "10001", - gas_limit: "10002", - amount: "10000000", - destination: "tz2G4TwEbsdFrJmApAxJ1vdQGmADnBp95n9m" - } as Operation); - messages.push({ - kind: "origination", - source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", - fee: "10000", - counter: "9", - storage_limit: "10001", - gas_limit: "10002", - managerPubkey: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", - balance: "10003", - spendable: true, - delegatable: true, - delegate: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX" - } as Operation); - messages.push({ - kind: "delegation", - source: "tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX", - fee: "10000", - counter: "9", - storage_limit: "10001", - gas_limit: "10002", - delegate: 'tz3WXYtyDUNL91qfiCJtVUX746QpNv5i5ve5' - } as Operation); - - const result = forgeOperations(blockHead, messages); - - expect(result).to.equal('560a037fdd573fcb59a49b5835658fab813b57b3a25e96710ec97aad0614c34f07000069ef8fb5d47d8a4321c94576a2316a632be8ce890094fe19904e00004c7b0501f6ea08f472b7e88791d3b8da49d64ac1e2c90f93c27e6531473305c608000069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e80ade204000154f5d8f71ce18f9f05bb885a4120e64c667bc1b40009000069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914e0069ef8fb5d47d8a4321c94576a2316a632be8ce89934effffff0069ef8fb5d47d8a4321c94576a2316a632be8ce89000a000069ef8fb5d47d8a4321c94576a2316a632be8ce89904e09924e914eff026fde46af0356a0476dae4e4600172dc9309b3aa4'); - }); - - it("correctly encode ballot locally", () => { - const message: Ballot = { - source: 'tz1VJAdH2HRUZWfohXW59NPYQKFMe1csroaX', - period: 10, - proposal: 'Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd', - vote: 0 - }; - - const result = forgeOperations(blockHead, [message]); - - expect(result).to.equal('560a037fdd573fcb59a49b5835658fab813b57b3a25e96710ec97aad0614c34f060069ef8fb5d47d8a4321c94576a2316a632be8ce890000000aab22e46e7872aa13e366e455bb4f5dbede856ab0864e1da7e122554579ee71f800'); - }); - - it('signOperationGroup test ---', mochaAsync(async () => { - const signedOpGroup = await signOperationGroup(forgedOpGroupList[0], keyStore, ''); - expect(signedOpGroup).to.be.an('object'); - expect(signedOpGroup.signature).to.exist; - - const opGroupHash = TezosMessageUtils.computeOperationHash(signedOpGroup); - expect(opGroupHash).to.equal('opBpn8Uzt1c67jw7a3H5nDkpryDkVF1W9SmiWBHtnnofg8TL7LA'); - })); - - it('TezosNodeReader.applyOperation test ---', mochaAsync(async () => { - const appliedOp = await TezosNodeWriter.applyOperation('http://conseil.server', blockHead, [ops], signedOpGroup); - expect(appliedOp).to.be.an('array'); - expect(appliedOp[0]).to.be.an('object'); - expect(appliedOp[0].contents).to.be.an('array'); - })); - - it('applyOperation test ---', mochaAsync(async () => { - const appliedOp = await applyOperation('http://conseil.server', blockHead, ops, signedOpGroup); - expect(appliedOp).to.be.an('array'); - expect(appliedOp[0]).to.be.an('object'); - expect(appliedOp[0].contents).to.be.an('array'); - })); - - it('TezosNode.injectOperation test ---', mochaAsync(async () => { - const payload = signedOpGroup; - const injectOp = await TezosNodeWriter.injectOperation('http://conseil.server', payload); - expect(injectOp).to.be.a('string'); - })); - - it('injectOperation test ---', mochaAsync(async () => { - const injectOp = await injectOperation('http://conseil.server', signedOpGroup); - expect(injectOp).to.exist; - })); - - it('TezosNode.getAccountForBlock', mochaAsync(async () => { - const account = await TezosNodeReader.getAccountForBlock('http://conseil.server', blockHead.hash, keyStore.publicKeyHash); - expect(account).to.be.an('object'); - expect(account.manager).to.be.a('string'); - })); - - it('TezosNode.getAccountManagerForBlock', mochaAsync(async () => { - const managerKey = await TezosNodeReader.getAccountManagerForBlock('http://conseil.server', blockHead.hash, keyStore.publicKeyHash); - expect(managerKey).to.be.an('object'); - expect(managerKey.manager).to.be.a('string'); - })); - - it('isManagerKeyRevealedForAccount should be true', mochaAsync(async () => { - const isManagerRevealed = await TezosNodeReader.isManagerKeyRevealedForAccount('http://conseil.server', keyStore); - expect(isManagerRevealed).to.be.true; - })); - - it('isManagerKeyRevealedForAccount should be false', mochaAsync(async () => { - const isManagerRevealed = await TezosNodeReader.isManagerKeyRevealedForAccount('http://conseil.server', keyStore1); - expect(isManagerRevealed).to.be.false; - })); - - it('isImplicitAndEmpty should be true', mochaAsync(async () => { - const isImplicit = await TezosNodeReader.isImplicitAndEmpty('http://conseil.server', keyStore1.publicKeyHash); - expect(isImplicit).to.be.true; - })); - - it('isImplicitAndEmpty should be false', mochaAsync(async () => { - const isImplicit = await TezosNodeReader.isImplicitAndEmpty('http://conseil.server', keyStore.publicKeyHash); - expect(isImplicit).to.be.false; - })); - }); - - describe('Main Operations Test', () => { - beforeEach(async () => { - const nockOb2 = nock('http://conseil.server'); - nockOb2 - .persist() - .filteringRequestBody(body => '*') - .post(`/chains/main/blocks/head/helpers/forge/operations`, '*') - .reply(200, forgedOpGroupList[opIndex]) - .post(`/chains/main/blocks/head/helpers/preapply/operations`, '*') - .reply(200, appliedOpList[opIndex]) - .post(`/injection/operation?chain=main`, '*') - .reply(200, injectOpList[opIndex]); - opIndex ++; - }); - it('sendIdentityActivationOperation', mochaAsync(async () => { - const activeResult = await sendIdentityActivationOperation('http://conseil.server',keyStore, info0.secret, ''); - expect(activeResult).to.exist; - expect(activeResult.operationGroupID).to.be.a('string'); - })); - - it('sendKeyRevealOperation', mochaAsync(async () => { - const revealResult = await sendKeyRevealOperation( - 'http://conseil.server', - keyStore, - 0, - '' - ); - expect(revealResult).to.exist; - expect(revealResult.operationGroupID).to.be.a('string'); - })); - - it('sendTransactionOperation', mochaAsync(async () => { - const toAddress = 'tz1fX6A2miVXjNyReg2dpt2TsXLkZ4w7zRGa'; - const amount = 10000000; - const fee = 100000; - const sendResult = await sendTransactionOperation( - 'http://conseil.server', - keyStore, - toAddress, - amount, - fee, - '' - ); - expect(sendResult).to.exist; - expect(sendResult.operationGroupID).to.be.a('string'); - })); - - it('sendOriginationOperation', mochaAsync(async () => { - const bakerAddress = 'tz1db53osfzRqqgQeLtBt4kcFcQoXJwPJJ5G'; - const amount = 10000000; - const fee = 100000; - const originationResult = await sendAccountOriginationOperation( - 'http://conseil.server', - keyStore, - amount, - bakerAddress, - true, - true, - fee, - '' - ); - expect(originationResult).to.exist; - expect(originationResult.operationGroupID).to.be.a('string'); - })); - - it('sendDelegationOperation', mochaAsync(async () => { - keyStore.publicKeyHash = 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM'; - const bakerAddress = 'tz3gN8NTLNLJg5KRsUU47NHNVHbdhcFXjjaB'; - const fee = 300000; - const delegationResult = await sendDelegationOperation('http://conseil.server', keyStore, bakerAddress, fee, ''); - expect(delegationResult).to.exist; - expect(delegationResult.operationGroupID).to.be.a('string'); - })); - - it('sendContractInvocationOperation', mochaAsync(async () => { - let result = await sendContractInvocationOperation('http://conseil.server', keyStore, 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM', 10000, 1000, '', 1000, 1000); - expect(result.operationGroupID).to.equal('opBpn8Uzt1c67jw7a3H5nDkpryDkVF1W9SmiWBHtnnofg8TL7LA'); - - result = await sendContractInvocationOperation('http://conseil.server', keyStore, 'KT1WvyJ1qUrWzShA2T6QeL7AW4DR6GspUimM', 10000, 1000, '', 1000, 1000, 'parameter string; storage string; code {CAR; NIL operation; PAIR;};'); - expect(result.operationGroupID).to.equal('opBpn8Uzt1c67jw7a3H5nDkpryDkVF1W9SmiWBHtnnofg8TL7LA'); - })); - }); - - describe('Errors Test', () => { - it('test error paths', mochaAsync(async () => { - const nockedserver = nock('http://conseil.server'); - nock.cleanAll(); - - nockedserver.get(`/chains/main/blocks/head`).reply(404, blockHead); - await expect(TezosNodeReader.getBlockHead('http://conseil.server')).to.be.rejected; - })); - }); -}); diff --git a/test/chain/tezos/TezosLanguageUtil.spec.ts b/test/chain/tezos/TezosLanguageUtil.spec.ts deleted file mode 100644 index 3e8a0798..00000000 --- a/test/chain/tezos/TezosLanguageUtil.spec.ts +++ /dev/null @@ -1,193 +0,0 @@ -import { expect } from 'chai'; -import { TezosLanguageUtil } from '../../../src/chain/tezos/TezosLanguageUtil'; -import 'mocha'; - -import * as fs from 'fs'; -import * as path from 'path'; - -describe("Tezos Micheline fragment decoding", () => { - it('Small int', () => { - let result = TezosLanguageUtil.hexToMicheline('0006'); - expect(result.code).to.equal('{ "int": "6" }'); - - result = TezosLanguageUtil.hexToMicheline('0046'); - expect(result.code).to.equal('{ "int": "-6" }'); - - result = TezosLanguageUtil.hexToMicheline('003f'); - expect(result.code).to.equal('{ "int": "63" }'); - - result = TezosLanguageUtil.hexToMicheline('007f'); - expect(result.code).to.equal('{ "int": "-63" }'); - }); - - it('Medium int', () => { - let result = TezosLanguageUtil.hexToMicheline('00a101'); - expect(result.code).to.equal('{ "int": "97" }'); - - result = TezosLanguageUtil.hexToMicheline('00ff01'); - expect(result.code).to.equal('{ "int": "-127" }'); - - result = TezosLanguageUtil.hexToMicheline('00840e'); - expect(result.code).to.equal('{ "int": "900" }'); - - result = TezosLanguageUtil.hexToMicheline('00c40e'); - expect(result.code).to.equal('{ "int": "-900" }'); - }); - - it('Large int', () => { - let result = TezosLanguageUtil.hexToMicheline('00ba9af7ea06'); - expect(result.code).to.equal('{ "int": "917431994" }'); - - result = TezosLanguageUtil.hexToMicheline('00fa9af7ea06'); - expect(result.code).to.equal('{ "int": "-917431994" }'); - - result = TezosLanguageUtil.hexToMicheline('00a1d22c'); - expect(result.code).to.equal('{ "int": "365729" }'); - - result = TezosLanguageUtil.hexToMicheline('00e1d22c'); - expect(result.code).to.equal('{ "int": "-365729" }'); - - result = TezosLanguageUtil.hexToMicheline('0080f9b9d4c723'); - expect(result.code).to.equal('{ "int": "610913435200" }'); - - result = TezosLanguageUtil.hexToMicheline('00c0f9b9d4c723'); - expect(result.code).to.equal('{ "int": "-610913435200" }'); - }); - - it('string', () => { - const result = TezosLanguageUtil.hexToMicheline('01000000096d696368656c696e65'); - expect(result.code).to.equal('{ "string": "micheline" }'); - }); - - it('empty string', () => { - const result = TezosLanguageUtil.hexToMicheline('0100000000'); - expect(result.code).to.equal('{ "string": "" }'); - }); - - it('bytes', () => { - const result = TezosLanguageUtil.hexToMicheline('0a000000080123456789abcdef'); - expect(result.code).to.equal('{ "bytes": "0123456789abcdef" }'); - }); - - it('Mixed literal value array', () => { - const result = TezosLanguageUtil.hexToMicheline('02000000210061010000000574657a6f730100000000010000000b63727970746f6e6f6d6963'); - expect(result.code).to.equal('[ { "int": "-33" }, { "string": "tezos" }, { "string": "" }, { "string": "cryptonomic" } ]'); - }); - - it('Bare primitive', () => { - const result = TezosLanguageUtil.hexToMicheline('0343'); - expect(result.code).to.equal('{ "prim": "PUSH" }'); - }); - - it('Single primitive with a single annotation', () => { - const result = TezosLanguageUtil.hexToMicheline('04430000000440636261'); - expect(result.code).to.equal('{ "prim": "PUSH", "annots": [ "@cba" ] }'); - }); - - it('Single primitive with a single argument', () => { - const result = TezosLanguageUtil.hexToMicheline('053d036d'); - expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" } ] }'); - }); - - it('Single primitive with two arguments', () => { - const result = TezosLanguageUtil.hexToMicheline('063d036d0000000440636261'); - expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" } ], "annots": [ "@cba" ] }'); - }); - - it('Single primitive with two arguments', () => { - const result = TezosLanguageUtil.hexToMicheline('073d036d036d'); - expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" } ] }'); - }); - - it('Single primitive with two arguments and annotation', () => { - const result = TezosLanguageUtil.hexToMicheline('083d036d036d0000000440636261'); - expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" } ], "annots": [ "@cba" ] }'); - }); - - it('Single primitive with more than two arguments and no annotations', () => { - const result = TezosLanguageUtil.hexToMicheline('093d00000006036d036d036d00000000'); - expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" }, { "prim": "operation" } ] }'); - }); - - it('Single primitive with more than two arguments and multiple annotations', () => { - const result = TezosLanguageUtil.hexToMicheline('093d00000006036d036d036d00000011407265642040677265656e2040626c7565'); - expect(result.code).to.equal('{ "prim": "NIL", "args": [ { "prim": "operation" }, { "prim": "operation" }, { "prim": "operation" } ], "annots": [ "@red", "@green", "@blue" ] }'); - }); - - it("test various parsing and encoding failures", () => { - expect(() => TezosLanguageUtil.hexToMicheline('c0ffee')).to.throw('Unknown Micheline field type \'c0\''); - expect(() => TezosLanguageUtil.hexToMicheline('c')).to.throw('Malformed Micheline fragment \'c\''); - }); - - it('Serialize Michelson directly to hex', () => { - const contract = `parameter (list int); - storage (list int); - code { CAR; MAP { PUSH int 1; ADD }; NIL operation; PAIR }`; // add1_list - const result = TezosLanguageUtil.translateMichelsonToHex(contract); - - expect(result).to.equal('0000001e050202000000170316053802000000080743035b00010312053d036d0342000000060501055f035b'); - }); -}); - -function preProcessMicheline(code: string): string[] { - const container = JSON.parse(code); - let parts: string[] = []; - - parts.push(JSON.stringify(container.script[indexOfKey(container, 'code')], null, 1)); - parts.push(JSON.stringify(container.script[indexOfKey(container, 'storage')], null, 1)); - - for (let i = 0; i < parts.length; i++) { - parts[i] = TezosLanguageUtil.normalizeMichelineWhiteSpace(parts[i]); - } - - return parts; -} - -function indexOfKey(container: any, key: string): number { - if (!!!container.script) { throw new Error('script property not found'); } - - for (let i = 0; i < container.script.length; i++) { - if (container.script[i]['prim'] === key) { return i; } - } - - throw new Error(`${key} key was not found`); -} - -function preProcessHex(hex: string): string[] { - let parts: string[] = []; - - let offset = 0; - while (offset < hex.length) { - let partlength = parseInt(hex.substring(offset, offset + 8), 16) * 2; - offset += 8; - parts.push(hex.substring(offset, offset + partlength)); - offset += partlength; - } - - return parts; -} - -describe('Hex to Micheline official contract tests', async () => { - const contractSampleRoot = 'test/chain/tezos/lexer/samples'; - const p = new Promise((resolve, reject) => { - fs.readdir(contractSampleRoot, function (err, items) { - if (!!err) { reject(err); return; } - resolve([... new Set(items.map(f => path.basename(f, path.extname(f))))]); - }); - }); - const samples = await p; - - for (let i = 0; i < samples.length; i++) { - const contractName = samples[i]; - if (!fs.existsSync(`${contractSampleRoot}/${contractName}.micheline`)) { continue; } - it(`Hex/Micheline contract ${contractName}`, () => { - const micheline = fs.readFileSync(`${contractSampleRoot}/${contractName}.micheline`, 'utf8'); - const hexaline = fs.readFileSync(`${contractSampleRoot}/${contractName}.hex`, 'utf8'); - - const parsedMicheline = `{ "script": ${preProcessHex(hexaline).map(h => TezosLanguageUtil.hexToMicheline(h).code).join(', ')} }`; - const expectedMicheline = `{ "script": ${preProcessMicheline(micheline).join(', ')} }`; - - expect(parsedMicheline).to.equal(expectedMicheline); - }); - } -}); \ No newline at end of file diff --git a/test/chain/tezos/lexer/MichelsonParser.spec.ts b/test/chain/tezos/lexer/MichelsonParser.spec.ts deleted file mode 100644 index 75f4af17..00000000 --- a/test/chain/tezos/lexer/MichelsonParser.spec.ts +++ /dev/null @@ -1,37 +0,0 @@ -import 'mocha'; -import { expect } from 'chai'; - -import { TezosLanguageUtil } from "../../../../src/chain/tezos/TezosLanguageUtil"; -import * as fs from 'fs'; -import * as path from 'path'; -import { parse } from 'url'; - -describe('Michelson/Micheline official contract tests', async () => { - const contractSampleRoot = 'test/chain/tezos/lexer/samples'; - const p = new Promise((resolve, reject) => { - fs.readdir(contractSampleRoot, function(err, items) { - if (!!err) { reject(err); return; } - resolve([... new Set(items.map(f => path.basename(f, path.extname(f))))]); - }); - }); - const samples = await p; - - for (let i = 0; i < samples.length; i++) { - const contractName = samples[i]; - if(!fs.existsSync(`${contractSampleRoot}/${contractName}.michelson`)) { continue; } - it(`Michelson/Micheline contract test: ${contractName}`, () => { - let michelson = fs.readFileSync(`${contractSampleRoot}/${contractName}.michelson`, 'utf8'); - let micheline = fs.readFileSync(`${contractSampleRoot}/${contractName}.micheline`, 'utf8'); - - let michelineObject = JSON.parse(micheline) - delete michelineObject.storage - delete michelineObject.input - delete michelineObject.amount - const trimmedMicheline = JSON.stringify(michelineObject).replace(/[\n\r\t\s]/g,''); - - //let parsedMicheline = `{"script":${TezosLanguageUtil.translateMichelsonToMicheline(michelson)}}`; - //parsedMicheline = parsedMicheline.replace(/[\n\r\t\s]/g,''); - //expect(parsedMicheline).to.equal(trimmedMicheline); - }); - } -}); diff --git a/test/chain/tezos/lexer/samples/accounts.hex b/test/chain/tezos/lexer/samples/accounts.hex deleted file mode 100644 index c98e2f18..00000000 --- a/test/chain/tezos/lexer/samples/accounts.hex +++ /dev/null @@ -1 +0,0 @@ -0000038d0502020000038603210316072e020000009703210200000025051f020000001e051f020000001704170000000f2573746f7265645f62616c616e63650321051f0200000002034c042900000011406f70745f707265765f62616c616e63650200000046072f0200000013051f0200000004031303460350053d036d034202000000270458000000114070726576696f75735f62616c616e6365031303120346034c0350053d036d034202000002df03210321032103210416000000052566726f6d0200000041051f020000003a051f0200000033020000001803170416000000102577697468647261775f616d6f756e74030c040e0000000e407369676e65645f616d6f756e74051f0200000011020000000c0317041700000004257369670318072c0200000000020000001807430368010000000d426164207369676e617475726503270200000025051f020000001e051f020000001704170000000f2573746f7265645f62616c616e636503210416000000052566726f6d042b0000000a4066726f6d5f686173680321051f020000000b051f0200000002034c034c0329072f02000000230743036801000000164163636f756e7420646f6573206e6f742065786973740342032702000001be0458000000114070726576696f75735f62616c616e6365051f020000000203200321020000002f051f0200000028051f02000000210321020000001803170416000000102577697468647261775f616d6f756e740321051f02000000180200000013031904370000000b406e6f745f656e6f756768034c072c020000001b0743036801000000104e6f7420656e6f7567682066756e647303270200000120044b0000000c406e65775f62616c616e6365051f020000000b0321051f0200000002034c03210843036a000000000005407a65726f0200000015031904250000000d406e756c6c5f62616c616e6365072c02000000160320063e036a0000000c406e65775f62616c616e6365020000001204460000000c406e65775f62616c616e6365034c0416000000052566726f6d042b0000000a4066726f6d5f686173680350034c0321020000001803170416000000102577697468647261775f616d6f756e74051f020000002e0416000000052566726f6d042b0000000a4066726f6d5f68617368041e0000000d4066726f6d5f6163636f756e74034f044d00000016407769647468647261775f7472616e736665725f6f70053d036d034c031b03420000001b05010860035d036a0000000f3a73746f7265645f62616c616e6365 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/accounts.micheline b/test/chain/tezos/lexer/samples/accounts.micheline deleted file mode 100644 index 48e0d5d1..00000000 --- a/test/chain/tezos/lexer/samples/accounts.micheline +++ /dev/null @@ -1,666 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"or", - "args":[ - { - "prim":"key_hash", - "annots":[ - "%Initialize" - ] - }, - { - "prim":"pair", - "args":[ - { - "prim":"key", - "annots":[ - "%from" - ] - }, - { - "prim":"pair", - "args":[ - { - "prim":"mutez", - "annots":[ - "%withdraw_amount" - ] - }, - { - "prim":"signature", - "annots":[ - "%sig" - ] - } - ] - } - ], - "annots":[ - "%Withdraw" - ] - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"map", - "args":[ - { - "prim":"key_hash" - }, - { - "prim":"mutez" - } - ], - "annots":[ - ":stored_balance" - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"IF_LEFT", - "args":[ - [ - { - "prim":"DUP" - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR", - "annots":[ - "%stored_balance" - ] - }, - { - "prim":"DUP" - } - ] - ] - } - ] - ] - } - ], - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"GET", - "annots":[ - "@opt_prev_balance" - ] - }, - [ - { - "prim":"IF_NONE", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"AMOUNT" - }, - { - "prim":"SOME" - } - ] - ] - }, - { - "prim":"UPDATE" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ], - [ - { - "prim":"RENAME", - "annots":[ - "@previous_balance" - ] - }, - { - "prim":"AMOUNT" - }, - { - "prim":"ADD" - }, - { - "prim":"SOME" - }, - { - "prim":"SWAP" - }, - { - "prim":"UPDATE" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ] - ], - [ - { - "prim":"DUP" - }, - { - "prim":"DUP" - }, - { - "prim":"DUP" - }, - { - "prim":"DUP" - }, - { - "prim":"CAR", - "annots":[ - "%from" - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CAR", - "annots":[ - "%withdraw_amount" - ] - } - ], - { - "prim":"PACK" - }, - { - "prim":"BLAKE2B", - "annots":[ - "@signed_amount" - ] - } - ] - ] - } - ] - ] - } - ], - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CDR", - "annots":[ - "%sig" - ] - } - ] - ] - ] - }, - { - "prim":"CHECK_SIGNATURE" - }, - { - "prim":"IF", - "args":[ - [ - - ], - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"string" - }, - { - "string":"Bad signature" - } - ] - }, - { - "prim":"FAILWITH" - } - ] - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR", - "annots":[ - "%stored_balance" - ] - }, - { - "prim":"DUP" - } - ] - ] - } - ] - ] - } - ], - { - "prim":"CAR", - "annots":[ - "%from" - ] - }, - { - "prim":"HASH_KEY", - "annots":[ - "@from_hash" - ] - }, - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"GET" - }, - { - "prim":"IF_NONE", - "args":[ - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"string" - }, - { - "string":"Account does not exist" - } - ] - }, - { - "prim":"PAIR" - }, - { - "prim":"FAILWITH" - } - ], - [ - { - "prim":"RENAME", - "annots":[ - "@previous_balance" - ] - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DROP" - } - ] - ] - }, - { - "prim":"DUP" - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - }, - [ - { - "prim":"CDR" - }, - { - "prim":"CAR", - "annots":[ - "%withdraw_amount" - ] - } - ], - { - "prim":"DUP" - } - ] - ] - } - ] - ] - } - ], - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"COMPARE" - }, - { - "prim":"LT", - "annots":[ - "@not_enough" - ] - } - ] - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"IF", - "args":[ - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"string" - }, - { - "string":"Not enough funds" - } - ] - }, - { - "prim":"FAILWITH" - } - ], - [ - { - "prim":"SUB", - "annots":[ - "@new_balance" - ] - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SWAP" - } - ] - ] - } - ] - ] - }, - { - "prim":"DUP" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"mutez" - }, - { - "int":"0" - } - ], - "annots":[ - "@zero" - ] - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"EQ", - "annots":[ - "@null_balance" - ] - } - ], - { - "prim":"IF", - "args":[ - [ - { - "prim":"DROP" - }, - { - "prim":"NONE", - "args":[ - { - "prim":"mutez" - } - ], - "annots":[ - "@new_balance" - ] - } - ], - [ - { - "prim":"SOME", - "annots":[ - "@new_balance" - ] - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CAR", - "annots":[ - "%from" - ] - }, - { - "prim":"HASH_KEY", - "annots":[ - "@from_hash" - ] - }, - { - "prim":"UPDATE" - }, - { - "prim":"SWAP" - }, - { - "prim":"DUP" - }, - [ - { - "prim":"CDR" - }, - { - "prim":"CAR", - "annots":[ - "%withdraw_amount" - ] - } - ], - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CAR", - "annots":[ - "%from" - ] - }, - { - "prim":"HASH_KEY", - "annots":[ - "@from_hash" - ] - }, - { - "prim":"IMPLICIT_ACCOUNT", - "annots":[ - "@from_account" - ] - } - ] - ] - }, - { - "prim":"UNIT" - }, - { - "prim":"TRANSFER_TOKENS", - "annots":[ - "@widthdraw_transfer_op" - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CONS" - }, - { - "prim":"PAIR" - } - ] - ] - } - ] - ] - } - ] - ] - } - ] - ] - } - ], - "storage":{ - "string":"before" - }, - "input":{ - "string":"after" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/add1.hex b/test/chain/tezos/lexer/samples/add1.hex deleted file mode 100644 index b4c47a59..00000000 --- a/test/chain/tezos/lexer/samples/add1.hex +++ /dev/null @@ -1 +0,0 @@ -000000170502020000001003160743035b00010312053d036d0342000000040501035b \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/add1.micheline b/test/chain/tezos/lexer/samples/add1.micheline deleted file mode 100644 index f8e0d1ce..00000000 --- a/test/chain/tezos/lexer/samples/add1.micheline +++ /dev/null @@ -1,11 +0,0 @@ -{ "script": - [ { "prim": "parameter", "args": [ { "prim": "int" } ] }, - { "prim": "storage", "args": [ { "prim": "int" } ] }, - { "prim": "code", - "args": - [ [ { "prim": "CAR" }, - { "prim": "PUSH", - "args": [ { "prim": "int" }, { "int": "1" } ] }, - { "prim": "ADD" }, - { "prim": "NIL", "args": [ { "prim": "operation" } ] }, - { "prim": "PAIR" } ] ] } ] } \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/add1_list.hex b/test/chain/tezos/lexer/samples/add1_list.hex deleted file mode 100644 index 9292758f..00000000 --- a/test/chain/tezos/lexer/samples/add1_list.hex +++ /dev/null @@ -1 +0,0 @@ -0000001e050202000000170316053802000000080743035b00010312053d036d0342000000060501055f035b \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/add1_list.micheline b/test/chain/tezos/lexer/samples/add1_list.micheline deleted file mode 100644 index 739f74e3..00000000 --- a/test/chain/tezos/lexer/samples/add1_list.micheline +++ /dev/null @@ -1,17 +0,0 @@ -{ "script": - [ { "prim": "parameter", - "args": [ { "prim": "list", "args": [ { "prim": "int" } ] } ] }, - { "prim": "storage", - "args": [ { "prim": "list", "args": [ { "prim": "int" } ] } ] }, - { "prim": "code", - "args": - [ [ { "prim": "CAR" }, - { "prim": "MAP", - "args": - [ [ { "prim": "PUSH", - "args": [ { "prim": "int" }, { "int": "1" } ] }, - { "prim": "ADD" } ] ] }, - { "prim": "NIL", "args": [ { "prim": "operation" } ] }, - { "prim": "PAIR" } ] ] } ], - "storage": { "string": "before" }, "input": { "string": "after" }, - "amount": "50000" } \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/after_strategy.hex b/test/chain/tezos/lexer/samples/after_strategy.hex deleted file mode 100644 index 0f4e0890..00000000 --- a/test/chain/tezos/lexer/samples/after_strategy.hex +++ /dev/null @@ -1 +0,0 @@ -000000320502020000002b03210316051f02000000160200000004031703170321034002000000040319032a03420342053d036d03420000000c05010765076503620359036b \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/after_strategy.micheline b/test/chain/tezos/lexer/samples/after_strategy.micheline deleted file mode 100644 index e719936f..00000000 --- a/test/chain/tezos/lexer/samples/after_strategy.micheline +++ /dev/null @@ -1,102 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"nat" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"nat" - }, - { - "prim":"bool" - } - ] - }, - { - "prim":"timestamp" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - } - ], - { - "prim":"DUP" - }, - { - "prim":"NOW" - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"GT" - } - ] - ] - ] - }, - { - "prim":"PAIR" - }, - { - "prim":"PAIR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/always.hex b/test/chain/tezos/lexer/samples/always.hex deleted file mode 100644 index e563ad82..00000000 --- a/test/chain/tezos/lexer/samples/always.hex +++ /dev/null @@ -1 +0,0 @@ -0000001905020200000012031607430359030a034c0342053d036d0342000000080501076503620359 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/always.micheline b/test/chain/tezos/lexer/samples/always.micheline deleted file mode 100644 index 115fe5fb..00000000 --- a/test/chain/tezos/lexer/samples/always.micheline +++ /dev/null @@ -1,73 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"nat" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"nat" - }, - { - "prim":"bool" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"True" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"PAIR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/append.hex b/test/chain/tezos/lexer/samples/append.hex deleted file mode 100644 index 8554db2b..00000000 --- a/test/chain/tezos/lexer/samples/append.hex +++ /dev/null @@ -1 +0,0 @@ -0000003e0502020000003703160200000012020000000d03210316051f02000000020317053d035b034c05520200000002031b05520200000002031b053d036d0342000000060501055f035b \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/append.micheline b/test/chain/tezos/lexer/samples/append.micheline deleted file mode 100644 index 45d1897a..00000000 --- a/test/chain/tezos/lexer/samples/append.micheline +++ /dev/null @@ -1,122 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"int" - } - ] - }, - { - "prim":"list", - "args":[ - { - "prim":"int" - } - ] - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"int" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CAR" - }, - [ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - } - ] - ] - } - ] - ], - { - "prim":"NIL", - "args":[ - { - "prim":"int" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"ITER", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - }, - { - "prim":"ITER", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/at_least.hex b/test/chain/tezos/lexer/samples/at_least.hex deleted file mode 100644 index 30b89fdc..00000000 --- a/test/chain/tezos/lexer/samples/at_least.hex +++ /dev/null @@ -1 +0,0 @@ -000000310502020000002a031703210313020000000403190337072c02000000090200000004034f03270200000006053d036d0342000000040501036a \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/at_least.micheline b/test/chain/tezos/lexer/samples/at_least.micheline deleted file mode 100644 index 105ebdf0..00000000 --- a/test/chain/tezos/lexer/samples/at_least.micheline +++ /dev/null @@ -1,79 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"mutez" - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"DUP" - }, - { - "prim":"AMOUNT" - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"LT" - } - ], - { - "prim":"IF", - "args":[ - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ], - [ - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/auction.hex b/test/chain/tezos/lexer/samples/auction.hex deleted file mode 100644 index b09b39ff..00000000 --- a/test/chain/tezos/lexer/samples/auction.hex +++ /dev/null @@ -1 +0,0 @@ -0000009c0502020000009503210200000004031703160321034002000000040319032a072c02000000090200000004034f03270200000000034c03210316051f020000000902000000040317031703130342034c051f0200000004034c0342032103160313020000000403190332072c02000000090200000004034f0327020000000003210316051f02000000040317031e034f034d053d036d034c031b03420000000c05010765036b0765036a035d \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/auction.micheline b/test/chain/tezos/lexer/samples/auction.micheline deleted file mode 100644 index c227591e..00000000 --- a/test/chain/tezos/lexer/samples/auction.micheline +++ /dev/null @@ -1,216 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"key_hash" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"timestamp" - }, - { - "prim":"pair", - "args":[ - { - "prim":"mutez" - }, - { - "prim":"key_hash" - } - ] - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - [ - { - "prim":"CDR" - }, - { - "prim":"CAR" - } - ], - { - "prim":"DUP" - }, - { - "prim":"NOW" - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"GT" - } - ], - { - "prim":"IF", - "args":[ - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ], - [ - - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - } - ] - ] - ] - }, - { - "prim":"AMOUNT" - }, - { - "prim":"PAIR" - }, - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SWAP" - }, - { - "prim":"PAIR" - } - ] - ] - }, - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"AMOUNT" - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"LE" - } - ], - { - "prim":"IF", - "args":[ - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ], - [ - - ] - ] - }, - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"IMPLICIT_ACCOUNT" - } - ] - ] - }, - { - "prim":"UNIT" - }, - { - "prim":"TRANSFER_TOKENS" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CONS" - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/auction_two.hex b/test/chain/tezos/lexer/samples/auction_two.hex deleted file mode 100644 index 5ebe1704..00000000 --- a/test/chain/tezos/lexer/samples/auction_two.hex +++ /dev/null @@ -1 +0,0 @@ -000003aa050202000003a30321051f02000000160417000000104073746f726167655f736c6173685f3104160000001240706172616d657465725f736c6173685f320200000017051f020000000e0421000000084073746f72616765034c04160000000c2561756374696f6e5f656e6403400319032a072c0200000004034f03270200000002034f0320041300000008406e65775f6269640200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c0200000014031704160000000c25686967686573745f6269640200000017051f020000000e042100000008406e65775f626964034c03190332072c0200000004034f03270200000002034f03200200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c020000002003170417000000184070726576696f75735f6269646465722025626964646572041e0000000a40726566756e645f746f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c0200000022031704160000001a4070726576696f75735f6269642025686967686573745f626964034f044d00000003406f700200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c032104160000000c2561756374696f6e5f656e64034c0317041700000007256269646465720200000029051f0200000020051f0200000017051f020000000e042100000008406e65775f626964034c034c034c020000001e051f0200000017051f0200000010051f0200000009051f020000000203200200000025051f020000001e051f0200000017051f0200000010051f0200000009051f0200000002032004420000001425686967686573745f6269642025626964646572034c0442000000154073746f72616765202561756374696f6e5f656e64032104160000000c2561756374696f6e5f656e64034c031704160000000c25686967686573745f626964020000001d051f0200000014051f020000000b051f02000000020321034c034c034c020000001e051f0200000017051f0200000010051f0200000009051f02000000020320034c04420000001425686967686573745f6269642025626964646572034c0442000000154073746f72616765202561756374696f6e5f656e64053d036d0200000014051f020000000b051f02000000020321034c034c0200000017051f0200000010051f0200000009051f02000000020320031b03420000004305010865046b0000000c2561756374696f6e5f656e640765046a0000000c25686967686573745f626964045d0000000725626964646572000000083a73746f72616765 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/auction_two.micheline b/test/chain/tezos/lexer/samples/auction_two.micheline deleted file mode 100644 index e436a9d6..00000000 --- a/test/chain/tezos/lexer/samples/auction_two.micheline +++ /dev/null @@ -1,694 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"key_hash" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"timestamp", - "annots":[ - "%auction_end" - ] - }, - { - "prim":"pair", - "args":[ - { - "prim":"mutez", - "annots":[ - "%highest_bid" - ] - }, - { - "prim":"key_hash", - "annots":[ - "%bidder" - ] - } - ] - } - ], - "annots":[ - ":storage" - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR", - "annots":[ - "@storage_slash_1" - ] - } - ] - ] - }, - { - "prim":"CAR", - "annots":[ - "@parameter_slash_2" - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP", - "annots":[ - "@storage" - ] - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - { - "prim":"CAR", - "annots":[ - "%auction_end" - ] - }, - { - "prim":"NOW" - }, - { - "prim":"COMPARE" - }, - { - "prim":"GT" - }, - { - "prim":"IF", - "args":[ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ], - [ - { - "prim":"UNIT" - } - ] - ] - }, - { - "prim":"DROP" - }, - { - "prim":"AMOUNT", - "annots":[ - "@new_bid" - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP", - "annots":[ - "@storage" - ] - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - [ - { - "prim":"CDR" - }, - { - "prim":"CAR", - "annots":[ - "%highest_bid" - ] - } - ], - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP", - "annots":[ - "@new_bid" - ] - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - { - "prim":"COMPARE" - }, - { - "prim":"LE" - }, - { - "prim":"IF", - "args":[ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ], - [ - { - "prim":"UNIT" - } - ] - ] - }, - { - "prim":"DROP" - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP", - "annots":[ - "@storage" - ] - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - [ - { - "prim":"CDR" - }, - { - "prim":"CDR", - "annots":[ - "@previous_bidder", - "%bidder" - ] - } - ], - { - "prim":"IMPLICIT_ACCOUNT", - "annots":[ - "@refund_to" - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP", - "annots":[ - "@storage" - ] - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - [ - { - "prim":"CDR" - }, - { - "prim":"CAR", - "annots":[ - "@previous_bid", - "%highest_bid" - ] - } - ], - { - "prim":"UNIT" - }, - { - "prim":"TRANSFER_TOKENS", - "annots":[ - "@op" - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP", - "annots":[ - "@storage" - ] - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - { - "prim":"DUP" - }, - { - "prim":"CAR", - "annots":[ - "%auction_end" - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CDR" - }, - { - "prim":"CDR", - "annots":[ - "%bidder" - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP", - "annots":[ - "@new_bid" - ] - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DROP" - } - ] - ] - } - ] - ] - } - ] - ] - } - ] - ] - } - ], - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DROP" - } - ] - ] - } - ] - ] - } - ] - ] - } - ] - ] - } - ] - ] - } - ], - { - "prim":"PAIR", - "annots":[ - "%highest_bid", - "%bidder" - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"PAIR", - "annots":[ - "@storage", - "%auction_end" - ] - }, - { - "prim":"DUP" - }, - { - "prim":"CAR", - "annots":[ - "%auction_end" - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CDR" - }, - { - "prim":"CAR", - "annots":[ - "%highest_bid" - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DROP" - } - ] - ] - } - ] - ] - } - ] - ] - } - ] - ] - } - ], - { - "prim":"SWAP" - }, - { - "prim":"PAIR", - "annots":[ - "%highest_bid", - "%bidder" - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"PAIR", - "annots":[ - "@storage", - "%auction_end" - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DROP" - } - ] - ] - } - ] - ] - } - ] - ] - } - ], - { - "prim":"CONS" - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/auction_two.michelson b/test/chain/tezos/lexer/samples/auction_two.michelson deleted file mode 100644 index 2f8f7982..00000000 --- a/test/chain/tezos/lexer/samples/auction_two.michelson +++ /dev/null @@ -1,58 +0,0 @@ -parameter key_hash; -storage - (pair :storage - (timestamp %auction_end) - (pair (mutez %highest_bid) (key_hash %bidder))); -code { DUP ; - DIP { CDR @storage_slash_1 } ; - CAR @parameter_slash_2 ; - DUUP @storage ; - CAR %auction_end ; - NOW ; - COMPARE ; - GT ; - IF { UNIT ; FAILWITH } { UNIT } ; - DROP ; - AMOUNT @new_bid ; - DUUUP @storage ; - CDAR %highest_bid ; - DUUP @new_bid ; - COMPARE ; - LE ; - IF { UNIT ; FAILWITH } { UNIT } ; - DROP ; - DUUUP @storage ; - CDDR @previous_bidder %bidder ; - IMPLICIT_ACCOUNT @refund_to ; - DUUUUP @storage ; - CDAR @previous_bid %highest_bid ; - UNIT ; - TRANSFER_TOKENS @op ; - DUUUUP @storage ; - DUP ; - CAR %auction_end ; - SWAP ; - CDR ; - CDR %bidder ; - DUUUUP @new_bid ; - DIIIIP { DROP } ; - DIIIIIP { DROP } ; - PAIR %highest_bid %bidder ; - SWAP ; - PAIR @storage %auction_end ; - DUP ; - CAR %auction_end ; - SWAP ; - CDR ; - CAR %highest_bid ; - DUUUUP ; - DIIIIP { DROP } ; - SWAP ; - PAIR %highest_bid %bidder ; - SWAP ; - PAIR @storage %auction_end ; - NIL operation ; - DUUUP ; - DIIIP { DROP } ; - CONS ; - PAIR }; \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/bad_lockup.hex b/test/chain/tezos/lexer/samples/bad_lockup.hex deleted file mode 100644 index f0740b6d..00000000 --- a/test/chain/tezos/lexer/samples/bad_lockup.hex +++ /dev/null @@ -1 +0,0 @@ -000000760502020000006f0317032103160340020000000403190337072c02000000090200000004034f0327020000000003210200000004031703160743036a008084af5f034f034d034c03210200000004031703170743036a008084af5f034f034d051f0200000002034c053d036d034c031b034c031b03420000001005010765036b0765055a036c055a036c \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/bad_lockup.micheline b/test/chain/tezos/lexer/samples/bad_lockup.micheline deleted file mode 100644 index 5b3e4255..00000000 --- a/test/chain/tezos/lexer/samples/bad_lockup.micheline +++ /dev/null @@ -1,37 +0,0 @@ - { "script": - [ { "prim": "parameter", "args": [ { "prim": "unit" } ] }, - { "prim": "storage", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "timestamp" }, - { "prim": "pair", - "args": - [ { "prim": "contract", - "args": [ { "prim": "unit" } ] }, - { "prim": "contract", - "args": [ { "prim": "unit" } ] } ] } ] } ] }, - { "prim": "code", - "args": - [ [ { "prim": "CDR" }, { "prim": "DUP" }, { "prim": "CAR" }, - { "prim": "NOW" }, - [ { "prim": "COMPARE" }, { "prim": "LT" } ], - { "prim": "IF", - "args": - [ [ [ { "prim": "UNIT" }, { "prim": "FAILWITH" } ] ], - [] ] }, { "prim": "DUP" }, - [ { "prim": "CDR" }, { "prim": "CAR" } ], - { "prim": "PUSH", - "args": [ { "prim": "mutez" }, { "int": "100000000" } ] }, - { "prim": "UNIT" }, { "prim": "TRANSFER_TOKENS" }, - { "prim": "SWAP" }, { "prim": "DUP" }, - [ { "prim": "CDR" }, { "prim": "CDR" } ], - { "prim": "PUSH", - "args": [ { "prim": "mutez" }, { "int": "100000000" } ] }, - { "prim": "UNIT" }, { "prim": "TRANSFER_TOKENS" }, - { "prim": "DIP", "args": [ [ { "prim": "SWAP" } ] ] }, - { "prim": "NIL", "args": [ { "prim": "operation" } ] }, - { "prim": "SWAP" }, { "prim": "CONS" }, { "prim": "SWAP" }, - { "prim": "CONS" }, { "prim": "PAIR" } ] ] } ], - "storage": { "int": "1000" }, "input": { "prim": "Unit" }, - "amount": "50000" } \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/big_map_union.hex b/test/chain/tezos/lexer/samples/big_map_union.hex deleted file mode 100644 index 8af46f04..00000000 --- a/test/chain/tezos/lexer/samples/big_map_union.hex +++ /dev/null @@ -1 +0,0 @@ -000000a9050202000000a2020000002b020000000d03210316051f02000000020317051f0200000012020000000d03210316051f02000000020317055202000000630200000012020000000d03210316051f020000000203170200000014051f020000000b051f02000000020321034c034c020000000b051f02000000020321034c0329072f02000000060743035b00000200000000034c051f02000000040312034603500342053d036d03420000000c0501076507610368035b036c \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/big_map_union.micheline b/test/chain/tezos/lexer/samples/big_map_union.micheline deleted file mode 100644 index 149e5ee3..00000000 --- a/test/chain/tezos/lexer/samples/big_map_union.micheline +++ /dev/null @@ -1,232 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"string" - }, - { - "prim":"int" - } - ] - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"big_map", - "args":[ - { - "prim":"string" - }, - { - "prim":"int" - } - ] - }, - { - "prim":"unit" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - [ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - } - ] - ] - } - ], - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - } - ] - ] - } - ] - ] - ] - } - ], - { - "prim":"ITER", - "args":[ - [ - [ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - } - ] - ] - } - ] - ], - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - } - ] - ] - }, - { - "prim":"SWAP" - } - ], - { - "prim":"GET" - }, - { - "prim":"IF_NONE", - "args":[ - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"int" - }, - { - "int":"0" - } - ] - } - ], - [ - - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"ADD" - }, - { - "prim":"SOME" - } - ] - ] - }, - { - "prim":"UPDATE" - } - ] - ] - }, - { - "prim":"PAIR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/cadr_annotation.hex b/test/chain/tezos/lexer/samples/cadr_annotation.hex deleted file mode 100644 index cb068df1..00000000 --- a/test/chain/tezos/lexer/samples/cadr_annotation.hex +++ /dev/null @@ -1 +0,0 @@ -000000380502020000003104160000000640706172616d0200000016031604170000000e406e616d6520256e6f5f6e616d650320034f053d036d0342000000040501036c \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/cadr_annotation.micheline b/test/chain/tezos/lexer/samples/cadr_annotation.micheline deleted file mode 100644 index b075ec38..00000000 --- a/test/chain/tezos/lexer/samples/cadr_annotation.micheline +++ /dev/null @@ -1,20 +0,0 @@ - { "script": - [ { "prim": "parameter", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "unit" }, - { "prim": "string", "annots": [ "%no_name" ] } ], - "annots": [ "%p1" ] }, { "prim": "bool" } ] } ] }, - { "prim": "storage", "args": [ { "prim": "unit" } ] }, - { "prim": "code", - "args": - [ [ { "prim": "CAR", "annots": [ "@param" ] }, - [ { "prim": "CAR" }, - { "prim": "CDR", "annots": [ "@name", "%no_name" ] } ], - { "prim": "DROP" }, { "prim": "UNIT" }, - { "prim": "NIL", "args": [ { "prim": "operation" } ] }, - { "prim": "PAIR" } ] ] } ], "storage": { "int": "1000" }, - "input": { "prim": "Unit" }, "amount": "50000" } \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/concat.hex b/test/chain/tezos/lexer/samples/concat.hex deleted file mode 100644 index 7510e696..00000000 --- a/test/chain/tezos/lexer/samples/concat.hex +++ /dev/null @@ -1 +0,0 @@ -000000260502020000001f0321051f020000000a0317053d0368034c031b0316031b031a053d036d03420000000405010368 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/concat.micheline b/test/chain/tezos/lexer/samples/concat.micheline deleted file mode 100644 index d2d68dbb..00000000 --- a/test/chain/tezos/lexer/samples/concat.micheline +++ /dev/null @@ -1,81 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CONS" - } - ] - ] - }, - { - "prim":"CAR" - }, - { - "prim":"CONS" - }, - { - "prim":"CONCAT" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/conditionals.hex b/test/chain/tezos/lexer/samples/conditionals.hex deleted file mode 100644 index 45420c20..00000000 --- a/test/chain/tezos/lexer/samples/conditionals.hex +++ /dev/null @@ -1 +0,0 @@ -0000005d050202000000560316072e02000000000200000042072f02000000090200000004034f0327020000002d0743035b000002000000040319032a072c02000000090200000004034f03270200000009074303680100000000053d036d03420000000405010368 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/conditionals.micheline b/test/chain/tezos/lexer/samples/conditionals.micheline deleted file mode 100644 index 3a4f75a2..00000000 --- a/test/chain/tezos/lexer/samples/conditionals.micheline +++ /dev/null @@ -1,135 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"or", - "args":[ - { - "prim":"string" - }, - { - "prim":"option", - "args":[ - { - "prim":"int" - } - ] - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"IF_LEFT", - "args":[ - [ - - ], - [ - { - "prim":"IF_NONE", - "args":[ - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ], - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"int" - }, - { - "int":"0" - } - ] - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"GT" - } - ], - { - "prim":"IF", - "args":[ - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ], - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"string" - }, - { - "string":"" - } - ] - } - ] - ] - } - ] - ] - } - ] - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/cons_twice.hex b/test/chain/tezos/lexer/samples/cons_twice.hex deleted file mode 100644 index 3d9c4410..00000000 --- a/test/chain/tezos/lexer/samples/cons_twice.hex +++ /dev/null @@ -1 +0,0 @@ -000000270502020000002003210316051f020000000203170321051f0200000002031b031b053d036d0342000000060501055f0362 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/cons_twice.micheline b/test/chain/tezos/lexer/samples/cons_twice.micheline deleted file mode 100644 index c66be3d8..00000000 --- a/test/chain/tezos/lexer/samples/cons_twice.micheline +++ /dev/null @@ -1,82 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"nat" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"nat" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - } - ] - ] - }, - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - }, - { - "prim":"CONS" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/cps_fact.hex b/test/chain/tezos/lexer/samples/cps_fact.hex deleted file mode 100644 index 90ab8a9a..00000000 --- a/test/chain/tezos/lexer/samples/cps_fact.hex +++ /dev/null @@ -1 +0,0 @@ -000000ea050202000000e30200000012020000000d03210316051f02000000020317051f020000002f034903540348020000002403190325072c020000000002000000140320084303620001000000084073746f726167650321074303620001020000008903190328072c02000000080320053d036d03420200000071074303620001034c044b0000000a40706172616d657465720356072f0200000006053d036d034202000000450321051f02000000160743036200010312043a000000084073746f72616765034c051f0200000019051f020000000803490743036a0000034d053d036d034c031b034c03420000000405010362 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/cps_fact.micheline b/test/chain/tezos/lexer/samples/cps_fact.micheline deleted file mode 100644 index 38443d76..00000000 --- a/test/chain/tezos/lexer/samples/cps_fact.micheline +++ /dev/null @@ -1,277 +0,0 @@ -{ - "script":[ - { - "prim":"storage", - "args":[ - { - "prim":"nat" - } - ] - }, - { - "prim":"parameter", - "args":[ - { - "prim":"nat" - } - ] - }, - { - "prim":"code", - "args":[ - [ - [ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - } - ] - ] - } - ] - ], - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SELF" - }, - { - "prim":"ADDRESS" - }, - { - "prim":"SENDER" - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"EQ" - }, - { - "prim":"IF", - "args":[ - [ - - ], - [ - { - "prim":"DROP" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"nat" - }, - { - "int":"1" - } - ], - "annots":[ - "@storage" - ] - } - ] - ] - } - ] - ] - ] - }, - { - "prim":"DUP" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"nat" - }, - { - "int":"1" - } - ] - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"GE" - }, - { - "prim":"IF", - "args":[ - [ - { - "prim":"DROP" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ], - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"nat" - }, - { - "int":"1" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"SUB", - "annots":[ - "@parameter" - ] - }, - { - "prim":"ISNAT" - }, - { - "prim":"IF_NONE", - "args":[ - [ - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ], - [ - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"nat" - }, - { - "int":"1" - } - ] - }, - { - "prim":"ADD" - }, - { - "prim":"MUL", - "annots":[ - "@storage" - ] - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SELF" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"mutez" - }, - { - "int":"0" - } - ] - } - ] - ] - }, - { - "prim":"TRANSFER_TOKENS" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CONS" - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"PAIR" - } - ] - ] - } - ] - ] - } - ] - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/create_add1_lists.hex b/test/chain/tezos/lexer/samples/create_add1_lists.hex deleted file mode 100644 index f6737a98..00000000 --- a/test/chain/tezos/lexer/samples/create_add1_lists.hex +++ /dev/null @@ -1 +0,0 @@ -000000830502020000007c0320053d035b03130743035903030321053e035d0743035d0100000024747a3163786377776e7a454e52646865324b62385a645472644e793462464e7953637835051d020000002a0500055f035b0501055f035b050202000000170316053802000000080743035b00010312053d036d0342053d036d034c031b0342000000040501036e \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/create_add1_lists.micheline b/test/chain/tezos/lexer/samples/create_add1_lists.micheline deleted file mode 100644 index 35e9f418..00000000 --- a/test/chain/tezos/lexer/samples/create_add1_lists.micheline +++ /dev/null @@ -1,173 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"address" - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DROP" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"int" - } - ] - }, - { - "prim":"AMOUNT" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"False" - } - ] - }, - { - "prim":"DUP" - }, - { - "prim":"NONE", - "args":[ - { - "prim":"key_hash" - } - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"key_hash" - }, - { - "string":"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - } - ] - }, - { - "prim":"CREATE_CONTRACT", - "args":[ - [ - { - "prim":"parameter", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"int" - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"int" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"MAP", - "args":[ - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"int" - }, - { - "int":"1" - } - ] - }, - { - "prim":"ADD" - } - ] - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ] - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CONS" - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/data_publisher.hex b/test/chain/tezos/lexer/samples/data_publisher.hex deleted file mode 100644 index 8eddf363..00000000 --- a/test/chain/tezos/lexer/samples/data_publisher.hex +++ /dev/null @@ -1 +0,0 @@ -000000950502020000008e03210316051f020000000403170321034c051f02000000020321020000000403160316051f020000001103210316051f02000000060317030c030e0318072c020000003c03170321051f02000000120316051f020000000902000000040316031603170743036200010312051f0200000002034c034c03420342053d036d034202000000090200000004034f03270000000c050107650765035c03620368 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/data_publisher.micheline b/test/chain/tezos/lexer/samples/data_publisher.micheline deleted file mode 100644 index 322eb159..00000000 --- a/test/chain/tezos/lexer/samples/data_publisher.micheline +++ /dev/null @@ -1,233 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"signature" - }, - { - "prim":"pair", - "args":[ - { - "prim":"string" - }, - { - "prim":"nat" - } - ] - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"key" - }, - { - "prim":"nat" - } - ] - }, - { - "prim":"string" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"DUP" - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - } - ] - ] - }, - [ - { - "prim":"CAR" - }, - { - "prim":"CAR" - } - ], - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"PACK" - }, - { - "prim":"BLAKE2B" - } - ] - ] - } - ] - ] - }, - { - "prim":"CHECK_SIGNATURE" - }, - { - "prim":"IF", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CAR" - }, - { - "prim":"CAR" - } - ] - ] - ] - } - ] - ] - }, - { - "prim":"CDR" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"nat" - }, - { - "int":"1" - } - ] - }, - { - "prim":"ADD" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"PAIR" - }, - { - "prim":"PAIR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ], - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ] - ] - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/dispatch.hex b/test/chain/tezos/lexer/samples/dispatch.hex deleted file mode 100644 index b9f4eafe..00000000 --- a/test/chain/tezos/lexer/samples/dispatch.hex +++ /dev/null @@ -1 +0,0 @@ -0000006d050202000000660321051f02000000090200000004031703170316072e0200000024051f020000000203210329072f02000000090200000004034f03270200000000034f0326020000001a03210316051f02000000040317034603500743036801000000000342053d036d03420000001005010765036807600368075e036c0368 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/dispatch.micheline b/test/chain/tezos/lexer/samples/dispatch.micheline deleted file mode 100644 index 47d1a5e5..00000000 --- a/test/chain/tezos/lexer/samples/dispatch.micheline +++ /dev/null @@ -1,196 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"or", - "args":[ - { - "prim":"string" - }, - { - "prim":"pair", - "args":[ - { - "prim":"string" - }, - { - "prim":"lambda", - "args":[ - { - "prim":"unit" - }, - { - "prim":"string" - } - ] - } - ] - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"string" - }, - { - "prim":"map", - "args":[ - { - "prim":"string" - }, - { - "prim":"lambda", - "args":[ - { - "prim":"unit" - }, - { - "prim":"string" - } - ] - } - ] - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - } - ] - ] - ] - }, - { - "prim":"CAR" - }, - { - "prim":"IF_LEFT", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - } - ] - ] - }, - { - "prim":"GET" - }, - { - "prim":"IF_NONE", - "args":[ - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ], - [ - - ] - ] - }, - { - "prim":"UNIT" - }, - { - "prim":"EXEC" - } - ], - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"SOME" - } - ] - ] - }, - { - "prim":"UPDATE" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"string" - }, - { - "string":"" - } - ] - } - ] - ] - }, - { - "prim":"PAIR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/empty.hex b/test/chain/tezos/lexer/samples/empty.hex deleted file mode 100644 index 48d4599a..00000000 --- a/test/chain/tezos/lexer/samples/empty.hex +++ /dev/null @@ -1 +0,0 @@ -0000000f050202000000080317053d036d0342000000040501036c \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/empty.micheline b/test/chain/tezos/lexer/samples/empty.micheline deleted file mode 100644 index dcd4e59b..00000000 --- a/test/chain/tezos/lexer/samples/empty.micheline +++ /dev/null @@ -1,48 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/empty_two.hex b/test/chain/tezos/lexer/samples/empty_two.hex deleted file mode 100644 index 67aa4b6b..00000000 --- a/test/chain/tezos/lexer/samples/empty_two.hex +++ /dev/null @@ -1 +0,0 @@ -0000000f050202000000080316053d036d03420000000405010368 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/empty_two.micheline b/test/chain/tezos/lexer/samples/empty_two.micheline deleted file mode 100644 index 0d078029..00000000 --- a/test/chain/tezos/lexer/samples/empty_two.micheline +++ /dev/null @@ -1,48 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/fail_amount.hex b/test/chain/tezos/lexer/samples/fail_amount.hex deleted file mode 100644 index 38dee1e6..00000000 --- a/test/chain/tezos/lexer/samples/fail_amount.hex +++ /dev/null @@ -1 +0,0 @@ -0000003a05020200000033032003130743036a0080dac40902000000040319032a072c02000000090200000004034f03270200000000034f053d036d0342000000040501036c \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/fail_amount.micheline b/test/chain/tezos/lexer/samples/fail_amount.micheline deleted file mode 100644 index f6f7959d..00000000 --- a/test/chain/tezos/lexer/samples/fail_amount.micheline +++ /dev/null @@ -1,91 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DROP" - }, - { - "prim":"AMOUNT" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"mutez" - }, - { - "int":"10000000" - } - ] - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"GT" - } - ], - { - "prim":"IF", - "args":[ - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ], - [ - - ] - ] - }, - { - "prim":"UNIT" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/faucet.hex b/test/chain/tezos/lexer/samples/faucet.hex deleted file mode 100644 index 858fa8fb..00000000 --- a/test/chain/tezos/lexer/samples/faucet.hex +++ /dev/null @@ -1 +0,0 @@ -000000860502020000007f0200000012020000000d03210316051f02000000020317034c0743035b00ac0404120000001340464956455f4d494e555445535f4c415445520340020000001e020000000403190328072c020000000002000000090200000004034f0327031e0743036a0080897a034f034d053d036d034c031b051f020000000203400342000000040501036b \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/faucet.micheline b/test/chain/tezos/lexer/samples/faucet.micheline deleted file mode 100644 index 31b2aa7f..00000000 --- a/test/chain/tezos/lexer/samples/faucet.micheline +++ /dev/null @@ -1,152 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"key_hash" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"timestamp" - } - ] - }, - { - "prim":"code", - "args":[ - [ - [ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - } - ] - ] - } - ] - ], - { - "prim":"SWAP" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"int" - }, - { - "int":"300" - } - ] - }, - { - "prim":"ADD", - "annots":[ - "@FIVE_MINUTES_LATER" - ] - }, - { - "prim":"NOW" - }, - [ - [ - { - "prim":"COMPARE" - }, - { - "prim":"GE" - } - ], - { - "prim":"IF", - "args":[ - [ - - ], - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ] - ] - } - ], - { - "prim":"IMPLICIT_ACCOUNT" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"mutez" - }, - { - "int":"1000000" - } - ] - }, - { - "prim":"UNIT" - }, - { - "prim":"TRANSFER_TOKENS" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CONS" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"NOW" - } - ] - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/forward.hex b/test/chain/tezos/lexer/samples/forward.hex deleted file mode 100644 index 406ebb05..00000000 --- a/test/chain/tezos/lexer/samples/forward.hex +++ /dev/null @@ -1 +0,0 @@ -000005ad050202000005a60321020000000a031703170316031703170743035b0080c60a034c0312034003190337072c020000010903210316072e02000000f00321074303680100000005627579657203190325072c02000000540320032102000000080317031603170316051f020000000203130312051f020000000f03210200000008031703160317031703420743036200000342051f02000000090200000004031703170342053d036d0342020000007c07430368010000000673656c6c657203190325072c0200000054032102000000080317031603170317051f020000000203130312051f020000000f032102000000080317031603170316034c03420743036200000342051f02000000090200000004031703170342053d036d034202000000090200000004034f032702000000090200000004034f0327020000046e03150743036a0000020000001903190325072c02000000090200000004034f03270200000000032102000000080317031703160316051f02000000110321020000000a03170317031703160317033a074303620002033a031503190337072c02000000b7031703210200000006031603170316051f02000000110321020000000a03170317031703160316034f034d053d036d034c031b034c03210200000006031603170317051f02000000110321020000000a03170317031703160317034f034d034c051f0200000002031b03210200000006031603170316051f020000000d0321020000000603160317031703120315034b051f020000000f032102000000080317031703170317034f034d051f0200000002034c031b0342020000034e0321020000000a03170317031603170316034003190337072c02000000090200000004034f032702000003220321020000000a031703170316031703160743035b0080c60a0312034003190337072c02000000f003210316072e02000000d7074303680100000005627579657203190325072c02000000b0032102000000080317031603170316051f02000000020313031203210200000037051f0200000030051f0200000029032102000000080317031703160316051f02000000110321020000000a03170317031703160316033a051f02000000190319032a072c02000000090200000004034f03270200000000051f020000000f03210200000008031703160317031703420743036200000342051f02000000090200000004031703170342053d036d034202000000090200000004034f032702000000090200000004034f03270200000205032102000000080317031703160316051f02000000110321020000000a03170317031703160316033a051f020000000f0321020000000803170316031703160319033c072c020000003f0315051f02000000130321020000000c0317031703170317031603170200000010051f0200000009051f02000000020317034f034d053d036d034c031b034202000001770321020000000a031703170316031703160743035b0080c60a03120743035b0080c60a0312034003190337072c02000001010321020000000a03170317031703170317035403480319033c072c02000000090200000004034f0327020000000003210316072e02000000090200000004034f032702000000b8051f020000000d032102000000060317031603160312051f020000000d032102000000060317031603170342051f02000000090200000004031703170342034f034203210200000006031703160316051f020000000f03210200000008031703170316031603190337072c02000000060317053d036d020000003d0315051f02000000130321020000000c0317031703170317031603170200000010051f0200000009051f02000000020317034f034d053d036d034c031b0342020000003f0315051f02000000130321020000000c0317031703170317031603160200000010051f0200000009051f02000000020317034f034d053d036d034c031b03420000003205010765076503620765036a036a0765076503620765036b036b07650765036a036a07650765055a036c055a036c055a036c \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/forward.micheline b/test/chain/tezos/lexer/samples/forward.micheline deleted file mode 100644 index 835bcc5d..00000000 --- a/test/chain/tezos/lexer/samples/forward.micheline +++ /dev/null @@ -1,649 +0,0 @@ - { "script": - [ { "prim": "parameter", - "args": - [ { "prim": "or", - "args": [ { "prim": "string" }, { "prim": "nat" } ] } ] }, - { "prim": "storage", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "nat" }, - { "prim": "pair", - "args": - [ { "prim": "mutez" }, { "prim": "mutez" } ] } ] }, - { "prim": "pair", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "nat" }, - { "prim": "pair", - "args": - [ { "prim": "timestamp" }, - { "prim": "timestamp" } ] } ] }, - { "prim": "pair", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "mutez" }, - { "prim": "mutez" } ] }, - { "prim": "pair", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "contract", - "args": [ { "prim": "unit" } ] }, - { "prim": "contract", - "args": [ { "prim": "unit" } ] } ] }, - { "prim": "contract", - "args": [ { "prim": "unit" } ] } ] } ] } ] } ] } ] }, - { "prim": "code", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, { "prim": "CDR" }, { "prim": "CAR" }, - { "prim": "CDR" }, { "prim": "CDR" } ], - { "prim": "PUSH", - "args": [ { "prim": "int" }, { "int": "86400" } ] }, - { "prim": "SWAP" }, { "prim": "ADD" }, { "prim": "NOW" }, - { "prim": "COMPARE" }, { "prim": "LT" }, - { "prim": "IF", - "args": - [ [ { "prim": "DUP" }, { "prim": "CAR" }, - { "prim": "IF_LEFT", - "args": - [ [ { "prim": "DUP" }, - { "prim": "PUSH", - "args": - [ { "prim": "string" }, - { "string": "buyer" } ] }, - { "prim": "COMPARE" }, { "prim": "EQ" }, - { "prim": "IF", - "args": - [ [ { "prim": "DROP" }, - { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CDR" }, - { "prim": "CAR" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "AMOUNT" } ] ] }, - { "prim": "ADD" }, - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CDR" }, - { "prim": "CDR" } ] ] ] }, - { "prim": "PAIR" }, - { "prim": "PUSH", - "args": - [ { "prim": "nat" }, - { "int": "0" } ] }, - { "prim": "PAIR" }, - { "prim": "DIP", - "args": - [ [ [ { "prim": "CDR" }, - { "prim": "CDR" } ] ] ] }, - { "prim": "PAIR" }, - { "prim": "NIL", - "args": [ { "prim": "operation" } ] }, - { "prim": "PAIR" } ], - [ { "prim": "PUSH", - "args": - [ { "prim": "string" }, - { "string": "seller" } ] }, - { "prim": "COMPARE" }, - { "prim": "EQ" }, - { "prim": "IF", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CDR" }, - { "prim": "CDR" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "AMOUNT" } ] ] }, - { "prim": "ADD" }, - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CDR" }, - { "prim": "CAR" } ] ] ] }, - { "prim": "SWAP" }, - { "prim": "PAIR" }, - { "prim": "PUSH", - "args": - [ { "prim": "nat" }, - { "int": "0" } ] }, - { "prim": "PAIR" }, - { "prim": "DIP", - "args": - [ [ [ { "prim": "CDR" }, - { "prim": "CDR" } ] ] ] }, - { "prim": "PAIR" }, - { "prim": "NIL", - "args": - [ { "prim": "operation" } ] }, - { "prim": "PAIR" } ], - [ [ { "prim": "UNIT" }, - { "prim": "FAILWITH" } ] ] ] } ] ] } ], - [ [ { "prim": "UNIT" }, - { "prim": "FAILWITH" } ] ] ] } ], - [ { "prim": "BALANCE" }, - { "prim": "PUSH", - "args": [ { "prim": "mutez" }, { "int": "0" } ] }, - [ { "prim": "COMPARE" }, { "prim": "EQ" }, - { "prim": "IF", - "args": - [ [ [ { "prim": "UNIT" }, - { "prim": "FAILWITH" } ] ], [] ] } ], - { "prim": "DUP" }, - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CAR" }, { "prim": "CAR" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CDR" }, { "prim": "CAR" }, - { "prim": "CDR" } ] ] ] }, - { "prim": "MUL" }, - { "prim": "PUSH", - "args": [ { "prim": "nat" }, { "int": "2" } ] }, - { "prim": "MUL" }, { "prim": "BALANCE" }, - { "prim": "COMPARE" }, { "prim": "LT" }, - { "prim": "IF", - "args": - [ [ { "prim": "CDR" }, { "prim": "DUP" }, - [ { "prim": "CAR" }, { "prim": "CDR" }, - { "prim": "CAR" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CAR" } ] ] ] }, - { "prim": "UNIT" }, - { "prim": "TRANSFER_TOKENS" }, - { "prim": "NIL", - "args": [ { "prim": "operation" } ] }, - { "prim": "SWAP" }, { "prim": "CONS" }, - { "prim": "SWAP" }, { "prim": "DUP" }, - [ { "prim": "CAR" }, { "prim": "CDR" }, - { "prim": "CDR" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CDR" } ] ] ] }, - { "prim": "UNIT" }, - { "prim": "TRANSFER_TOKENS" }, - { "prim": "SWAP" }, - { "prim": "DIP", - "args": [ [ { "prim": "CONS" } ] ] }, - { "prim": "DUP" }, - [ { "prim": "CAR" }, { "prim": "CDR" }, - { "prim": "CAR" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CAR" }, - { "prim": "CDR" }, - { "prim": "CDR" } ] ] ] }, - { "prim": "ADD" }, { "prim": "BALANCE" }, - { "prim": "SUB" }, - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CDR" } ] ] ] }, - { "prim": "UNIT" }, - { "prim": "TRANSFER_TOKENS" }, - { "prim": "DIP", - "args": [ [ { "prim": "SWAP" } ] ] }, - { "prim": "CONS" }, { "prim": "PAIR" } ], - [ { "prim": "DUP" }, - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CAR" }, { "prim": "CDR" }, - { "prim": "CAR" } ], { "prim": "NOW" }, - { "prim": "COMPARE" }, { "prim": "LT" }, - { "prim": "IF", - "args": - [ [ [ { "prim": "UNIT" }, - { "prim": "FAILWITH" } ] ], - [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CDR" }, - { "prim": "CAR" } ], - { "prim": "PUSH", - "args": - [ { "prim": "int" }, - { "int": "86400" } ] }, - { "prim": "ADD" }, { "prim": "NOW" }, - { "prim": "COMPARE" }, - { "prim": "LT" }, - { "prim": "IF", - "args": - [ [ { "prim": "DUP" }, - { "prim": "CAR" }, - { "prim": "IF_LEFT", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": - "string" }, - { "string": - "buyer" } ] }, - { "prim": "COMPARE" }, - { "prim": "EQ" }, - { "prim": "IF", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CDR" }, - { "prim": - "CAR" } ], - { "prim": - "DIP", - "args": - [ [ { "prim": - "AMOUNT" } ] ] }, - { "prim": - "ADD" }, - { "prim": - "DUP" }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CAR" } ], - { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CAR" } ] ] ] }, - { "prim": - "MUL" } ] ] } ] ] } ], - { "prim": - "DIP", - "args": - [ [ { "prim": - "COMPARE" }, - { "prim": - "GT" }, - { "prim": - "IF", - "args": - [ [ [ { "prim": - "UNIT" }, - { "prim": - "FAILWITH" } ] ], - [] ] } ] ] }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" } ] ] ] }, - { "prim": - "PAIR" }, - { "prim": - "PUSH", - "args": - [ { "prim": - "nat" }, - { "int": - "0" } ] }, - { "prim": - "PAIR" }, - { "prim": - "DIP", - "args": - [ [ [ { "prim": - "CDR" }, - { "prim": - "CDR" } ] ] ] }, - { "prim": - "PAIR" }, - { "prim": - "NIL", - "args": - [ { "prim": - "operation" } ] }, - { "prim": - "PAIR" } ], - [ [ { "prim": - "UNIT" }, - { "prim": - "FAILWITH" } ] ] ] } ], - [ [ { "prim": "UNIT" }, - { "prim": - "FAILWITH" } ] ] ] } ], - [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CAR" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CAR" } ] ] ] }, - { "prim": "MUL" }, - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CDR" }, - { "prim": "CAR" } ] ] ] }, - { "prim": "COMPARE" }, - { "prim": "NEQ" }, - { "prim": "IF", - "args": - [ [ { "prim": "BALANCE" }, - { "prim": "DIP", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CDR" } ] ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "CDR" } ] ] } ] ] } ], - { "prim": "UNIT" }, - { "prim": - "TRANSFER_TOKENS" }, - { "prim": "NIL", - "args": - [ { "prim": - "operation" } ] }, - { "prim": "SWAP" }, - { "prim": "CONS" }, - { "prim": "PAIR" } ], - [ { "prim": "DUP" }, - [ { "prim": "CDR" }, - { "prim": "CDR" }, - { "prim": "CAR" }, - { "prim": "CDR" }, - { "prim": "CAR" } ], - { "prim": "PUSH", - "args": - [ { "prim": "int" }, - { "int": - "86400" } ] }, - { "prim": "ADD" }, - { "prim": "PUSH", - "args": - [ { "prim": "int" }, - { "int": - "86400" } ] }, - { "prim": "ADD" }, - { "prim": "NOW" }, - { "prim": "COMPARE" }, - { "prim": "LT" }, - { "prim": "IF", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" } ], - { "prim": - "ADDRESS" }, - { "prim": - "SENDER" }, - { "prim": - "COMPARE" }, - { "prim": - "NEQ" }, - { "prim": - "IF", - "args": - [ [ [ { "prim": - "UNIT" }, - { "prim": - "FAILWITH" } ] ], - [] ] }, - { "prim": - "DUP" }, - { "prim": - "CAR" }, - { "prim": - "IF_LEFT", - "args": - [ [ [ { "prim": - "UNIT" }, - { "prim": - "FAILWITH" } ] ], - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CAR" } ] ] ] }, - { "prim": - "ADD" }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CDR" } ] ] ] }, - { "prim": - "PAIR" }, - { "prim": - "DIP", - "args": - [ [ [ { "prim": - "CDR" }, - { "prim": - "CDR" } ] ] ] }, - { "prim": - "PAIR" }, - { "prim": - "UNIT" }, - { "prim": - "PAIR" }, - { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CAR" } ], - { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CAR" } ] ] ] }, - { "prim": - "COMPARE" }, - { "prim": - "LT" }, - { "prim": - "IF", - "args": - [ [ { "prim": - "CDR" }, - { "prim": - "NIL", - "args": - [ { "prim": - "operation" } ] } ], - [ { "prim": - "BALANCE" }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CDR" } ] ] ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "CDR" } ] ] } ] ] } ], - { "prim": - "UNIT" }, - { "prim": - "TRANSFER_TOKENS" }, - { "prim": - "NIL", - "args": - [ { "prim": - "operation" } ] }, - { "prim": - "SWAP" }, - { "prim": - "CONS" } ] ] } ] ] }, - { "prim": - "PAIR" } ], - [ { "prim": - "BALANCE" }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CAR" }, - { "prim": - "CAR" } ] ] ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "CDR" } ] ] } ] ] } ], - { "prim": - "UNIT" }, - { "prim": - "TRANSFER_TOKENS" }, - { "prim": - "NIL", - "args": - [ { "prim": - "operation" } ] }, - { "prim": - "SWAP" }, - { "prim": - "CONS" }, - { "prim": - "PAIR" } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ], - "storage": { "int": "1000" }, "input": { "prim": "Unit" }, - "amount": "50000" } \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/infinite_loop.hex b/test/chain/tezos/lexer/samples/infinite_loop.hex deleted file mode 100644 index 16272ca9..00000000 --- a/test/chain/tezos/lexer/samples/infinite_loop.hex +++ /dev/null @@ -1 +0,0 @@ -000000240502020000001d032007430359030a0534020000000607430359030a034f053d036d0342000000040501036c \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/infinite_loop.micheline b/test/chain/tezos/lexer/samples/infinite_loop.micheline deleted file mode 100644 index 50f4842f..00000000 --- a/test/chain/tezos/lexer/samples/infinite_loop.micheline +++ /dev/null @@ -1,80 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DROP" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"True" - } - ] - }, - { - "prim":"LOOP", - "args":[ - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"True" - } - ] - } - ] - ] - }, - { - "prim":"UNIT" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/insertion_sort.hex b/test/chain/tezos/lexer/samples/insertion_sort.hex deleted file mode 100644 index 21a1d3a9..00000000 --- a/test/chain/tezos/lexer/samples/insertion_sort.hex +++ /dev/null @@ -1 +0,0 @@ -000000c9050202000000c20316053d035b034c055202000000ad034c0200000012051f020000000b051f0200000004053d035b07430359030a05340200000078072d0200000062034c051f020000002903210200000010051f0200000009051f02000000020321051f0200000009020000000403190337034c034c072c0200000018051f020000000b034c051f0200000002031b07430359030a020000000a034c031b074303590303020000000a053d035b074303590303034c031b034c05520200000002031b053d036d0342000000060501055f035b \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/insertion_sort.micheline b/test/chain/tezos/lexer/samples/insertion_sort.micheline deleted file mode 100644 index 86794cab..00000000 --- a/test/chain/tezos/lexer/samples/insertion_sort.micheline +++ /dev/null @@ -1,278 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"int" - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"int" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"int" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"ITER", - "args":[ - [ - { - "prim":"SWAP" - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"NIL", - "args":[ - { - "prim":"int" - } - ] - } - ] - ] - } - ] - ] - } - ], - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"True" - } - ] - }, - { - "prim":"LOOP", - "args":[ - [ - { - "prim":"IF_CONS", - "args":[ - [ - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - } - ] - ] - } - ] - ] - } - ], - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"COMPARE" - }, - { - "prim":"LT" - } - ] - ] - ] - }, - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"IF", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - } - ] - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"True" - } - ] - } - ], - [ - { - "prim":"SWAP" - }, - { - "prim":"CONS" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"False" - } - ] - } - ] - ] - } - ], - [ - { - "prim":"NIL", - "args":[ - { - "prim":"int" - } - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"False" - } - ] - } - ] - ] - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CONS" - }, - { - "prim":"SWAP" - }, - { - "prim":"ITER", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - } - ] - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/int_publisher.hex b/test/chain/tezos/lexer/samples/int_publisher.hex deleted file mode 100644 index 7351b6f5..00000000 --- a/test/chain/tezos/lexer/samples/int_publisher.hex +++ /dev/null @@ -1 +0,0 @@ -000000cc050202000000c5032103210316072f020000003a0743036a0080897a0313020000000403190332072c02000000090200000004034f032702000000000317051f0200000009020000000403170317020000006a0321051f0200000002034c034c020000000403170316051f020000001103210316051f02000000060317030c030e0318072c02000000180317034c051f0200000002032102000000040317031603420200000016032003210317051f0200000009020000000403170317051f02000000020320053d036d03420000000805010765035c035b \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/int_publisher.micheline b/test/chain/tezos/lexer/samples/int_publisher.micheline deleted file mode 100644 index 37d02437..00000000 --- a/test/chain/tezos/lexer/samples/int_publisher.micheline +++ /dev/null @@ -1,268 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"option", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"signature" - }, - { - "prim":"int" - } - ] - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"key" - }, - { - "prim":"int" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"IF_NONE", - "args":[ - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"mutez" - }, - { - "int":"1000000" - } - ] - }, - { - "prim":"AMOUNT" - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"LE" - } - ], - { - "prim":"IF", - "args":[ - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ], - [ - - ] - ] - }, - { - "prim":"CDR" - }, - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - } - ] - ] - ] - } - ], - [ - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"SWAP" - }, - [ - { - "prim":"CDR" - }, - { - "prim":"CAR" - } - ], - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"PACK" - }, - { - "prim":"BLAKE2B" - } - ] - ] - } - ] - ] - }, - { - "prim":"CHECK_SIGNATURE" - }, - { - "prim":"IF", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - } - ] - ] - }, - [ - { - "prim":"CDR" - }, - { - "prim":"CAR" - } - ], - { - "prim":"PAIR" - } - ], - [ - { - "prim":"DROP" - }, - { - "prim":"DUP" - }, - { - "prim":"CDR" - }, - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - } - ] - ] - ] - } - ] - ] - } - ] - ] - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DROP" - } - ] - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/king_of_tez.hex b/test/chain/tezos/lexer/samples/king_of_tez.hex deleted file mode 100644 index 494fa731..00000000 --- a/test/chain/tezos/lexer/samples/king_of_tez.hex +++ /dev/null @@ -1 +0,0 @@ -0000009d050202000000960321020000000403170316034002000000040319032a072c020000001803160313034203400743035b0080ea4903120342053d036d020000005a032102000000060317031703160313020000000403190337072c02000000090200000004034f0327020000002d03160321051f02000000120313034203400743035b0080ea4903120342031e0313034f034d053d036d034c031b03420000000c05010765036b0765036a035d \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/king_of_tez.micheline b/test/chain/tezos/lexer/samples/king_of_tez.micheline deleted file mode 100644 index 596d272d..00000000 --- a/test/chain/tezos/lexer/samples/king_of_tez.micheline +++ /dev/null @@ -1,228 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"key_hash" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"timestamp" - }, - { - "prim":"pair", - "args":[ - { - "prim":"mutez" - }, - { - "prim":"key_hash" - } - ] - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - [ - { - "prim":"CDR" - }, - { - "prim":"CAR" - } - ], - { - "prim":"NOW" - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"GT" - } - ], - { - "prim":"IF", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"AMOUNT" - }, - { - "prim":"PAIR" - }, - { - "prim":"NOW" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"int" - }, - { - "int":"604800" - } - ] - }, - { - "prim":"ADD" - }, - { - "prim":"PAIR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - } - ], - [ - { - "prim":"DUP" - }, - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - }, - { - "prim":"CAR" - } - ], - { - "prim":"AMOUNT" - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"LT" - } - ], - { - "prim":"IF", - "args":[ - [ - [ - { - "prim":"UNIT" - }, - { - "prim":"FAILWITH" - } - ] - ], - [ - { - "prim":"CAR" - }, - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"AMOUNT" - }, - { - "prim":"PAIR" - }, - { - "prim":"NOW" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"int" - }, - { - "int":"604800" - } - ] - }, - { - "prim":"ADD" - }, - { - "prim":"PAIR" - } - ] - ] - }, - { - "prim":"IMPLICIT_ACCOUNT" - }, - { - "prim":"AMOUNT" - }, - { - "prim":"UNIT" - }, - { - "prim":"TRANSFER_TOKENS" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CONS" - } - ] - ] - } - ] - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/list_of_transactions.hex b/test/chain/tezos/lexer/samples/list_of_transactions.hex deleted file mode 100644 index dc6bcbc1..00000000 --- a/test/chain/tezos/lexer/samples/list_of_transactions.hex +++ /dev/null @@ -1 +0,0 @@ -0000005c0502020000005503170321051f0200000004053d036d07430359030a05340200000035072d020000001d0743036a0080897a034f034d034c051f0200000002031b07430359030a020000000c053d055a036c07430359030303200342000000080501055f055a036c \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/list_of_transactions.micheline b/test/chain/tezos/lexer/samples/list_of_transactions.micheline deleted file mode 100644 index cc082131..00000000 --- a/test/chain/tezos/lexer/samples/list_of_transactions.micheline +++ /dev/null @@ -1,163 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"contract", - "args":[ - { - "prim":"unit" - } - ] - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - } - ] - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"True" - } - ] - }, - { - "prim":"LOOP", - "args":[ - [ - { - "prim":"IF_CONS", - "args":[ - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"mutez" - }, - { - "int":"1000000" - } - ] - }, - { - "prim":"UNIT" - }, - { - "prim":"TRANSFER_TOKENS" - }, - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"True" - } - ] - } - ], - [ - { - "prim":"NIL", - "args":[ - { - "prim":"contract", - "args":[ - { - "prim":"unit" - } - ] - } - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"False" - } - ] - } - ] - ] - } - ] - ] - }, - { - "prim":"DROP" - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/mist_wallet_current.hex b/test/chain/tezos/lexer/samples/mist_wallet_current.hex deleted file mode 100644 index e5c01ac0..00000000 --- a/test/chain/tezos/lexer/samples/mist_wallet_current.hex +++ /dev/null @@ -1 +0,0 @@ -00003ac905020200003ac20321051f02000000160417000000104073746f726167655f736c6173685f3104160000001240706172616d657465725f736c6173685f32093100000cc7076508640865065a036c0000001a3a556e6974436f6e7472616374202564657374696e6174696f6e046a0000000725616d6f756e74000000163a7472616e73616374696f6e2025576974686472617707640865036e036e0000000c254368616e67654f776e65720764046e00000009254164644f776e65720764046e0000000c2552656d6f76654f776e65720764046200000012254368616e6765526571756972656d656e740764046a0000000e255365744461696c794c696d69740764046c000000102552657365745370656e74546f646179065a036c000000133a556e6974436f6e747261637420254b696c6c000000113a77616c6c65745f6f7065726174696f6e086504620000000b256d5f7265717569726564076504620000000d256d5f6e756d5f6f776e65727307650666036e00000009256d5f6f776e657273076508600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f73746174650000000a256d5f70656e64696e670765046a0000000e256d5f6461696c795f6c696d69740765046a0000000e256d5f7370656e745f746f646179046b00000007256d5f6c617374000000083a73746f726167650864086504620000000b256d5f7265717569726564076504620000000d256d5f6e756d5f6f776e65727307650666036e00000009256d5f6f776e657273076508600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f73746174650000000a256d5f70656e64696e670765046a0000000e256d5f6461696c795f6c696d69740765046a0000000e256d5f7370656e745f746f646179046b00000007256d5f6c6173740000001e3a73746f726167652025436f6e6669726d6174696f6e735f4e6565646564086504620000000b256d5f7265717569726564076504620000000d256d5f6e756d5f6f776e65727307650666036e00000009256d5f6f776e657273076508600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f73746174650000000a256d5f70656e64696e670765046a0000000e256d5f6461696c795f6c696d69740765046a0000000e256d5f7370656e745f746f646179046b00000007256d5f6c617374000000113a73746f726167652025457865637574650000000d3a636865636b5f726573756c74020000092b045800000015405f6f705f73746f726167655f736c6173685f313203210417000000084073746f72616765044700000006406f776e65720200000017051f020000000e0421000000084073746f72616765034c0200000015051f020000000c042100000006406f776e6572034c034203210417000000084073746f72616765020000001303170317041600000009256d5f6f776e657273034c04160000000540616464720339033f072c0200000004034f03270200000002034f03200200000014051f020000000b051f02000000020321034c034c041600000003406f70040c00000009406f705f62797465730200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c020000001603170317031704160000000a256d5f70656e64696e670200000018051f020000000f042100000009406f705f6279746573034c0329072f020000006607430566036e02000000000200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c04160000000b256d5f7265717569726564044200000016257965744e656564656420256f776e657273446f6e6502000000000458000000084070656e64696e670421000000084070656e64696e6704170000000b256f776e657273446f6e650200000027051f020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c034c0339072c0200000004034f03270200000002034f03200743036200010200000017051f020000000e0421000000084070656e64696e67034c04160000000a257965744e656564656403190332072c02000001e40200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c03170317074307600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f7374617465020000000004420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c0442000000144073746f7261676520256d5f72657175697265640644086504620000000b256d5f7265717569726564076504620000000d256d5f6e756d5f6f776e65727307650666036e00000009256d5f6f776e657273076508600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f73746174650000000a256d5f70656e64696e670765046a0000000e256d5f6461696c795f6c696d69740765046a0000000e256d5f7370656e745f746f646179046b00000007256d5f6c617374000000083a73746f726167650000000a2520254578656375746502000004c70421000000084070656e64696e6704170000000b256f776e657273446f6e650743035b00010200000020051f0200000017051f020000000e0421000000084070656e64696e67034c034c04160000000a257965744e65656465640330034b03210311034c0328072c02000000000200000004034f032704580000000e406e65775f7965744e656564656404420000001f4070656e64696e6720257965744e656564656420256f776e657273446f6e650200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c031703170200000056051f020000004d051f0200000044051f020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c034c034c034c034c020000001603170317031704160000000a256d5f70656e64696e67020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084070656e64696e67034c034c034c034c034c04160000000a257965744e65656465640200000044051f020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084070656e64696e67034c034c034c034c034c034c04170000000b256f776e657273446f6e650200000066051f020000005d051f0200000054051f020000004b051f0200000042051f0200000039051f0200000030051f0200000027051f020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c034c034c034c034c034c034c034c034c051f020000000607430359030a0350034c04420000001f4070656e64696e6720257965744e656564656420256f776e657273446f6e650200000057051f020000004e051f0200000045051f020000003c051f0200000033051f020000002a051f0200000021051f0200000018051f020000000f042100000009406f705f6279746573034c034c034c034c034c034c034c034c051f020000000203460200000033051f020000002c051f0200000025051f020000001e051f0200000017051f0200000010051f0200000009051f02000000020320035004420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c0442000000144073746f7261676520256d5f72657175697265640633086504620000000b256d5f7265717569726564076504620000000d256d5f6e756d5f6f776e65727307650666036e00000009256d5f6f776e657273076508600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f73746174650000000a256d5f70656e64696e670765046a0000000e256d5f6461696c795f6c696d69740765046a0000000e256d5f7370656e745f746f646179046b00000007256d5f6c617374000000083a73746f726167650000001725436f6e6669726d6174696f6e735f4e65656465642025051f020000000a032003200320032003200000001040636f6e6669726d416e64436865636b0200000019051f020000001004210000000a40706172616d65746572034c072e02000005c504580000000c406f705f736c6173685f33330200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c0421000000084073746f726167650421000000084073746f726167650347034203210417000000084073746f72616765020000001303170317041600000009256d5f6f776e657273034c04160000000540616464720339072c0200000002034f0200000004034f0327051f020000000203200320044700000006406f776e6572020000001b051f0200000012051f0200000009042100000003406f70034c034c040c00000009406f705f62797465730200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c020000001603170317031704160000000a256d5f70656e64696e670200000018051f020000000f042100000009406f705f6279746573034c0329072f0200000004034f032702000004580421000000084070656e64696e6704170000000b256f776e657273446f6e650200000027051f020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c034c0339072c02000003b80421000000084070656e64696e6704170000000b256f776e657273446f6e650743036200010200000020051f0200000017051f020000000e0421000000084070656e64696e67034c034c04160000000a257965744e6565646564031204420000001f4070656e64696e6720257965744e656564656420256f776e657273446f6e650200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c031703170200000056051f020000004d051f0200000044051f020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c034c034c034c034c020000001603170317031704160000000a256d5f70656e64696e67020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084070656e64696e67034c034c034c034c034c04160000000a257965744e65656465640200000044051f020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084070656e64696e67034c034c034c034c034c034c04170000000b256f776e657273446f6e650200000066051f020000005d051f0200000054051f020000004b051f0200000042051f0200000039051f0200000030051f0200000027051f020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c034c034c034c034c034c034c034c034c051f02000000060743035903030350034c04420000001f4070656e64696e6720257965744e656564656420256f776e657273446f6e650200000057051f020000004e051f0200000045051f020000003c051f0200000033051f020000002a051f0200000021051f0200000018051f020000000f042100000009406f705f6279746573034c034c034c034c034c034c034c034c051f020000000203460200000033051f020000002c051f0200000025051f020000001e051f0200000017051f0200000010051f0200000009051f02000000020320035004420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f7265717569726564063d036d00000006406e6f5f6f700342020000003e0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c063d036d00000006406e6f5f6f700342051f02000000020320051f0200000008032003200320032002000027ae072e02000006ba04580000001340706172616d657465725f736c6173685f3430020000001f051f020000001604210000001040636f6e6669726d416e64436865636b034c0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c0200000022051f0200000019051f020000001004210000000a40706172616d65746572034c034c06330764046e00000009254164644f776e65720764046e0000000c2552656d6f76654f776e65720764046200000012254368616e6765526571756972656d656e740764046a0000000e255365744461696c794c696d69740764046c000000102552657365745370656e74546f646179065a036c000000133a556e6974436f6e747261637420254b696c6c0000000e254368616e67654f776e6572202506440865065a036c0000001a3a556e6974436f6e7472616374202564657374696e6174696f6e046a0000000725616d6f756e740000000c3a7472616e73616374696f6e000000042520255f03420326072e02000000270458000000114073746f726167655f736c6173685f3432063d036d00000006406e6f5f6f70034202000004f80458000000114073746f726167655f736c6173685f34330200000019051f020000001004210000000a40706172616d65746572034c03210416000000054066726f6d020000000b051f02000000020321034c041700000004405f746f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c020000001d051f0200000014051f020000000b0421000000054066726f6d034c034c034203210417000000084073746f72616765020000001303170317041600000009256d5f6f776e657273034c04160000000540616464720339033f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c0200000014051f020000000b051f02000000020321034c034c034203210417000000084073746f72616765020000001303170317041600000009256d5f6f776e657273034c041600000005406164647203390341072c0200000004034f032702000003670200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c03170317074307600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f7374617465020000000004420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f72657175697265640421000000084073746f72616765032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c031703170200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c020000001303170317041600000009256d5f6f776e6572730200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b0421000000054066726f6d034c034c034c034c034c034c051f02000000060743035903030350044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c0442000000144073746f7261676520256d5f72657175697265640421000000084073746f72616765032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c031703170200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c020000001303170317041600000009256d5f6f776e6572730200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c051f020000000607430359030a020000002e051f0200000027051f0200000020051f0200000019051f0200000012051f020000000b051f0200000004032003200350044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f7265717569726564063d036d00000006406e6f5f6f700342051f02000000080320032003200320051f0200000002032002000020e8072e020000053204580000000f406f776e65725f736c6173685f3439020000001f051f020000001604210000001040636f6e6669726d416e64436865636b034c0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c06330764046e0000000c2552656d6f76654f776e65720764046200000012254368616e6765526571756972656d656e740764046a0000000e255365744461696c794c696d69740764046c000000102552657365745370656e74546f646179065a036c000000133a556e6974436f6e747261637420254b696c6c0000000b254164644f776e6572202506440765036e036e000000042520255f06440865065a036c0000001a3a556e6974436f6e7472616374202564657374696e6174696f6e046a0000000725616d6f756e740000000c3a7472616e73616374696f6e000000042520255f03420326072e02000000270458000000114073746f726167655f736c6173685f3531063d036d00000006406e6f5f6f700342020000037c0458000000114073746f726167655f736c6173685f35320421000000084073746f72616765020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c034203210417000000084073746f72616765020000001303170317041600000009256d5f6f776e657273034c04160000000540616464720339072c0200000004034f03270200000002034f03200421000000084073746f72616765032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c03170317074307600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f7374617465020000000004420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f72657175697265640421000000084073746f72616765032104160000000b256d5f7265717569726564034c031703170743036200010200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c0200000015031704160000000d256d5f6e756d5f6f776e657273031204420000000d256d5f6e756d5f6f776e657273034c0442000000144073746f7261676520256d5f72657175697265640421000000084073746f72616765032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c031703170200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c020000001303170317041600000009256d5f6f776e657273020000004b051f0200000042051f0200000039051f0200000030051f0200000027051f020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c034c034c034c034c034c051f020000000607430359030a0200000030051f0200000029051f0200000022051f020000001b051f0200000014051f020000000d051f02000000060320032003200350044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f7265717569726564063d036d00000006406e6f5f6f700342051f020000000203200200001baa072e02000005bb04580000000f406f776e65725f736c6173685f3535020000001f051f020000001604210000001040636f6e6669726d416e64436865636b034c0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c06330764046200000012254368616e6765526571756972656d656e740764046a0000000e255365744461696c794c696d69740764046c000000102552657365745370656e74546f646179065a036c000000133a556e6974436f6e747261637420254b696c6c0000000e2552656d6f76654f776e657220250644036e000000042520255f06440765036e036e000000042520255f06440865065a036c0000001a3a556e6974436f6e7472616374202564657374696e6174696f6e046a0000000725616d6f756e740000000c3a7472616e73616374696f6e000000042520255f03420326072e02000000270458000000114073746f726167655f736c6173685f3537063d036d00000006406e6f5f6f700342020000040a0458000000114073746f726167655f736c6173685f35380421000000084073746f72616765020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c034203210417000000084073746f72616765020000001303170317041600000009256d5f6f776e657273034c04160000000540616464720339033f072c0200000004034f03270200000002034f03200421000000084073746f726167650200000015031704160000000d256d5f6e756d5f6f776e6572730200000017051f020000000e0421000000084073746f72616765034c04160000000b256d5f726571756972656403190328072c0200000004034f03270200000002034f03200421000000084073746f72616765032104160000000b256d5f7265717569726564034c031703170743035b00010200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c0200000015031704160000000d256d5f6e756d5f6f776e6572730330034b03210311034c0328072c02000000000200000004034f032704580000000f406e65775f6e756d5f6f776e65727304420000000d256d5f6e756d5f6f776e657273034c0442000000144073746f7261676520256d5f72657175697265640421000000084073746f72616765032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c031703170200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c020000001303170317041600000009256d5f6f776e6572730200000042051f0200000039051f0200000030051f0200000027051f020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c034c034c034c034c051f0200000006074303590303020000002e051f0200000027051f0200000020051f0200000019051f0200000012051f020000000b051f0200000004032003200350044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c0442000000144073746f7261676520256d5f7265717569726564032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c03170317074307600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f7374617465020000000004420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f7265717569726564063d036d00000006406e6f5f6f700342051f0200000002032002000015e3072e02000003310458000000124072657175697265645f736c6173685f3634020000001f051f020000001604210000001040636f6e6669726d416e64436865636b034c0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c0200000021051f0200000018051f020000000f042100000009407265717569726564034c034c06330764046a0000000e255365744461696c794c696d69740764046c000000102552657365745370656e74546f646179065a036c000000133a556e6974436f6e747261637420254b696c6c00000014254368616e6765526571756972656d656e7420250644036e000000042520255f0644036e000000042520255f06440765036e036e000000042520255f06440865065a036c0000001a3a556e6974436f6e7472616374202564657374696e6174696f6e046a0000000725616d6f756e740000000c3a7472616e73616374696f6e000000042520255f03420326072e02000000270458000000114073746f726167655f736c6173685f3636063d036d00000006406e6f5f6f70034202000001820458000000114073746f726167655f736c6173685f36370421000000084073746f726167650200000015031704160000000d256d5f6e756d5f6f776e6572730200000021051f0200000018051f020000000f042100000009407265717569726564034c034c0319032a072c0200000004034f03270200000002034f0320032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c03170317074307600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f7374617465020000000004420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f72657175697265640317020000000b051f02000000020321034c04420000000b256d5f7265717569726564063d036d00000006406e6f5f6f700342051f0200000002032002000012a6072e02000002b204580000000f406c696d69745f736c6173685f3639020000001f051f020000001604210000001040636f6e6669726d416e64436865636b034c0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c020000001e051f0200000015051f020000000c042100000006406c696d6974034c034c06330764046c000000102552657365745370656e74546f646179065a036c000000133a556e6974436f6e747261637420254b696c6c00000010255365744461696c794c696d6974202506440362000000042520255f0644036e000000042520255f0644036e000000042520255f06440765036e036e000000042520255f06440865065a036c0000001a3a556e6974436f6e7472616374202564657374696e6174696f6e046a0000000725616d6f756e740000000c3a7472616e73616374696f6e000000042520255f03420326072e02000000270458000000114073746f726167655f736c6173685f3731063d036d00000006406e6f5f6f70034202000001170458000000114073746f726167655f736c6173685f3732032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c0317032104160000000a256d5f70656e64696e67034c03170317020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c04420000000e256d5f6461696c795f6c696d6974034c04420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f7265717569726564063d036d00000006406e6f5f6f700342051f020000000203200200000fe8072e02000002ec04580000000b405f5f736c6173685f3733020000001f051f020000001604210000001040636f6e6669726d416e64436865636b034c0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c074308640865065a036c0000001a3a556e6974436f6e7472616374202564657374696e6174696f6e046a0000000725616d6f756e74000000163a7472616e73616374696f6e2025576974686472617707640865036e036e0000000c254368616e67654f776e65720764046e00000009254164644f776e65720764046e0000000c2552656d6f76654f776e65720764046200000012254368616e6765526571756972656d656e740764046a0000000e255365744461696c794c696d69740764046c000000102552657365745370656e74546f646179065a036c000000133a556e6974436f6e747261637420254b696c6c000000113a77616c6c65745f6f7065726174696f6e0508050805080508050805080505030b03420326072e02000000270458000000114073746f726167655f736c6173685f3735063d036d00000006406e6f5f6f700342020000012c0458000000114073746f726167655f736c6173685f3736032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c0317032104160000000a256d5f70656e64696e67034c0317032104160000000e256d5f6461696c795f6c696d6974034c0317041700000007256d5f6c6173740743036a0000044200000016256d5f7370656e745f746f64617920256d5f6c617374034c04420000000e256d5f6461696c795f6c696d6974034c04420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f7265717569726564063d036d00000006406e6f5f6f700342051f020000000203200200000cf0072e020000007404580000000b405f5f736c6173685f37370743036a0000031303190325072c0200000004034f0327020000003e0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c063d036d00000006406e6f5f6f700342051f020000000203200200000c70072e02000001ee04580000000e40646573745f736c6173685f3739020000001f051f020000001604210000001040636f6e6669726d416e64436865636b034c0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c020000001d051f0200000014051f020000000b0421000000054064657374034c034c0644036c000000072520254b696c6c0644036a000000042520255f06440362000000042520255f0644036e000000042520255f0644036e000000042520255f06440765036e036e000000042520255f06440865065a036c0000001a3a556e6974436f6e7472616374202564657374696e6174696f6e046a0000000725616d6f756e740000000c3a7472616e73616374696f6e000000042520255f03420326072e02000000270458000000114073746f726167655f736c6173685f3831063d036d00000006406e6f5f6f70034202000000830458000000114073746f726167655f736c6173685f38320200000014051f020000000b0421000000054064657374034c0315034f044d0000000a407472616e735f616c6c034c053d036d0200000014051f020000000b051f02000000020321034c034c0200000017051f0200000010051f0200000009051f02000000020320031b0342051f020000000203200200000a7604580000000b40745f736c6173685f38340200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c0421000000084073746f726167650421000000084073746f726167650347034203210417000000084073746f72616765020000001303170317041600000009256d5f6f776e657273034c04160000000540616464720339072c0200000002034f0200000004034f0327051f0200000002032003200421000000084073746f72616765020000001a051f0200000011051f02000000080421000000024074034c034c04170000000725616d6f756e74034203210416000000064076616c7565020000000b051f02000000020321034c0417000000084073746f726167650421000000084073746f726167650421000000084073746f726167650347034203210417000000084073746f72616765020000001303170317041600000009256d5f6f776e657273034c04160000000540616464720339072c0200000002034f0200000004034f0327051f0200000002032003200743035b0080c60a0200000017051f020000000e0421000000084073746f72616765034c020000001703170317031703170317041700000007256d5f6c6173740312034003190328072c02000002260421000000084073746f72616765032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c0317032104160000000a256d5f70656e64696e67034c0317032104160000000e256d5f6461696c795f6c696d6974034c0317041700000007256d5f6c6173740743036a0000044200000016256d5f7370656e745f746f64617920256d5f6c617374034c04420000000e256d5f6461696c795f6c696d6974034c04420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c0442000000144073746f7261676520256d5f7265717569726564032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c0317032104160000000a256d5f70656e64696e67034c0317032104160000000e256d5f6461696c795f6c696d6974034c031704160000000e256d5f7370656e745f746f6461790340034c044200000016256d5f7370656e745f746f64617920256d5f6c617374034c04420000000e256d5f6461696c795f6c696d6974034c04420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f7265717569726564020000000e0421000000084073746f726167650458000000084073746f726167650421000000084073746f72616765020000001c031703170317031704160000000e256d5f6461696c795f6c696d69740200000027051f020000001e051f0200000015051f020000000c0421000000064076616c7565034c034c034c0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c020000001e0317031703170317031704160000000e256d5f7370656e745f746f646179031203190332072c02000001e50421000000084073746f72616765032104160000000b256d5f7265717569726564034c0317032104160000000d256d5f6e756d5f6f776e657273034c03170321041600000009256d5f6f776e657273034c0317032104160000000a256d5f70656e64696e67034c0317032104160000000e256d5f6461696c795f6c696d6974034c0317041700000007256d5f6c6173740200000054051f020000004b051f0200000042051f0200000039051f0200000030051f0200000027051f020000001e051f0200000015051f020000000c0421000000064076616c7565034c034c034c034c034c034c034c034c020000004d051f0200000044051f020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c034c034c034c020000001e0317031703170317031704160000000e256d5f7370656e745f746f6461790312044200000016256d5f7370656e745f746f64617920256d5f6c617374034c04420000000e256d5f6461696c795f6c696d6974034c04420000000a256d5f70656e64696e67034c044200000009256d5f6f776e657273034c04420000000d256d5f6e756d5f6f776e657273034c04420000000b256d5f726571756972656407430359030a034202000000160421000000084073746f726167650743035903030342051f0200000008032003200320032003210417000000084073746f72616765020000000b051f02000000020321034c04160000000640756e646572072c02000000e30200000023051f020000001a051f0200000011051f02000000080421000000024074034c034c034c04160000000c2564657374696e6174696f6e020000002c051f0200000023051f020000001a051f0200000011051f02000000080421000000024074034c034c034c034c04170000000725616d6f756e74034f044d00000003406f700200000017051f020000000e0421000000084073746f72616765034c053d036d020000001b051f0200000012051f0200000009042100000003406f70034c034c0200000017051f0200000010051f0200000009051f02000000020320031b03420200000268020000003a051f0200000031051f0200000028051f020000001f051f020000001604210000001040636f6e6669726d416e64436865636b034c034c034c034c0200000017051f020000000e0421000000084073746f72616765034c0200000035051f020000002c051f0200000023051f020000001a051f0200000011051f02000000080421000000024074034c034c034c034c034c063307640865036e036e0000000c254368616e67654f776e65720764046e00000009254164644f776e65720764046e0000000c2552656d6f76654f776e65720764046200000012254368616e6765526571756972656d656e740764046a0000000e255365744461696c794c696d69740764046c000000102552657365745370656e74546f646179065a036c000000133a556e6974436f6e747261637420254b696c6c0000000b255769746864726177202503420326072e02000000270458000000114073746f726167655f736c6173685f3930063d036d00000006406e6f5f6f70034202000000eb0458000000114073746f726167655f736c6173685f3931020000002c051f0200000023051f020000001a051f0200000011051f02000000080421000000024074034c034c034c034c04160000000c2564657374696e6174696f6e0200000035051f020000002c051f0200000023051f020000001a051f0200000011051f02000000080421000000024074034c034c034c034c034c04170000000725616d6f756e74034f044d00000003406f70034c053d036d0200000014051f020000000b051f02000000020321034c034c0200000017051f0200000010051f0200000009051f02000000020320031b0342051f02000000080320032003200320051f0200000006032003200320000000cd0501086504620000000b256d5f7265717569726564076504620000000d256d5f6e756d5f6f776e65727307650666036e00000009256d5f6f776e657273076508600369086504620000000a257965744e65656465640666036e0000000b256f776e657273446f6e650000000e3a70656e64696e675f73746174650000000a256d5f70656e64696e670765046a0000000e256d5f6461696c795f6c696d69740765046a0000000e256d5f7370656e745f746f646179046b00000007256d5f6c617374000000083a73746f72616765 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/mist_wallet_current.michelson b/test/chain/tezos/lexer/samples/mist_wallet_current.michelson deleted file mode 100644 index 7dc509cb..00000000 --- a/test/chain/tezos/lexer/samples/mist_wallet_current.michelson +++ /dev/null @@ -1,989 +0,0 @@ -parameter - (or :_entries - (or :wallet_operation %_Liq_entry_revoke - (pair :transaction %Withdraw - (contract :UnitContract %destination unit) - (mutez %amount)) - (or (pair %ChangeOwner address address) - (or (address %AddOwner) - (or (address %RemoveOwner) - (or (nat %ChangeRequirement) - (or (mutez %SetDailyLimit) - (or (unit %ResetSpentToday) (contract :UnitContract %Kill unit)))))))) - (or (pair %_Liq_entry_changeOwner address address) - (or (address %_Liq_entry_addOwner) - (or (address %_Liq_entry_removeOwner) - (or (nat %_Liq_entry_changeRequirement) - (or (mutez %_Liq_entry_setDailyLimit) - (or (unit %_Liq_entry_resetSpentToday) - (or (unit %_Liq_entry_deposit) - (or (contract :UnitContract %_Liq_entry_kill unit) - (pair :transaction %_Liq_entry_withdraw - (contract :UnitContract %destination unit) - (mutez %amount))))))))))); -storage - (pair :storage - (nat %m_required) - (pair (nat %m_num_owners) - (pair (set %m_owners address) - (pair (map %m_pending - bytes - (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - (pair (mutez %m_daily_limit) (pair (mutez %m_spent_today) (timestamp %m_last))))))); -code { DUP ; - DIP { CDR @storage_slash_1 } ; - CAR @parameter_slash_2 ; - LAMBDA @confirmAndCheck - (pair (or :wallet_operation - (pair :transaction %Withdraw - (contract :UnitContract %destination unit) - (mutez %amount)) - (or (pair %ChangeOwner address address) - (or (address %AddOwner) - (or (address %RemoveOwner) - (or (nat %ChangeRequirement) - (or (mutez %SetDailyLimit) - (or (unit %ResetSpentToday) (contract :UnitContract %Kill unit)))))))) - (pair :storage - (nat %m_required) - (pair (nat %m_num_owners) - (pair (set %m_owners address) - (pair (map %m_pending - bytes - (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - (pair (mutez %m_daily_limit) (pair (mutez %m_spent_today) (timestamp %m_last)))))))) - (or :check_result - (pair :storage %Confirmations_Needed - (nat %m_required) - (pair (nat %m_num_owners) - (pair (set %m_owners address) - (pair (map %m_pending - bytes - (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - (pair (mutez %m_daily_limit) (pair (mutez %m_spent_today) (timestamp %m_last))))))) - (pair :storage %Execute - (nat %m_required) - (pair (nat %m_num_owners) - (pair (set %m_owners address) - (pair (map %m_pending - bytes - (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - (pair (mutez %m_daily_limit) (pair (mutez %m_spent_today) (timestamp %m_last)))))))) - { RENAME @_op_storage_slash_12 ; - DUP ; - CDR @storage ; - SOURCE @owner ; - DUUP @storage ; - DUUP @owner ; - PAIR ; - DUP ; - CDR @storage ; - CDDAR %m_owners ; - SWAP ; - CAR @addr ; - MEM ; - NOT ; - IF { UNIT ; FAILWITH } { UNIT } ; - DROP ; - DUUUP ; - CAR @op ; - PACK @op_bytes ; - DUUUP @storage ; - CDDDAR %m_pending ; - DUUP @op_bytes ; - GET ; - IF_NONE - { PUSH (set address) {} ; - DUUUUP @storage ; - CAR %m_required ; - PAIR %yetNeeded %ownersDone } - {} ; - RENAME @pending ; - DUP @pending ; - CDR %ownersDone ; - DUUUUP @owner ; - MEM ; - IF { UNIT ; FAILWITH } { UNIT } ; - DROP ; - PUSH nat 1 ; - DUUP @pending ; - CAR %yetNeeded ; - COMPARE ; - LE ; - IF { DUUUUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - CDR ; - PUSH (map bytes (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - {} ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR @storage %m_required ; - RIGHT % %Execute - (pair :storage - (nat %m_required) - (pair (nat %m_num_owners) - (pair (set %m_owners address) - (pair (map %m_pending - bytes - (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - (pair (mutez %m_daily_limit) (pair (mutez %m_spent_today) (timestamp %m_last))))))) } - { DUP @pending ; - CDR %ownersDone ; - PUSH int 1 ; - DUUUP @pending ; - CAR %yetNeeded ; - INT ; - SUB ; - DUP ; - ABS ; - SWAP ; - GE ; - IF {} { UNIT ; FAILWITH } ; - RENAME @new_yetNeeded ; - PAIR @pending %yetNeeded %ownersDone ; - DUUUUUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - CDR ; - DUUUUUUUUUP @storage ; - CDDDAR %m_pending ; - DUUUUUUP @pending ; - CAR %yetNeeded ; - DUUUUUUUP @pending ; - CDR %ownersDone ; - DUUUUUUUUUUUP @owner ; - DIP { PUSH bool True } ; - UPDATE ; - SWAP ; - PAIR @pending %yetNeeded %ownersDone ; - DUUUUUUUUUP @op_bytes ; - DIP { SOME } ; - DIIIIIIIP { DROP } ; - UPDATE ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR @storage %m_required ; - LEFT %Confirmations_Needed % - (pair :storage - (nat %m_required) - (pair (nat %m_num_owners) - (pair (set %m_owners address) - (pair (map %m_pending - bytes - (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - (pair (mutez %m_daily_limit) (pair (mutez %m_spent_today) (timestamp %m_last))))))) } ; - DIP { DROP ; DROP ; DROP ; DROP ; DROP } } ; - DUUP @parameter ; - IF_LEFT - { RENAME @op_slash_33 ; - DUUUUP @storage ; - DUP @storage ; - DUP @storage ; - SOURCE ; - PAIR ; - DUP ; - CDR @storage ; - CDDAR %m_owners ; - SWAP ; - CAR @addr ; - MEM ; - IF { UNIT } { UNIT ; FAILWITH } ; - DIP { DROP } ; - DROP ; - SOURCE @owner ; - DUUUP @op ; - PACK @op_bytes ; - DUUUP @storage ; - CDDDAR %m_pending ; - DUUP @op_bytes ; - GET ; - IF_NONE - { UNIT ; FAILWITH } - { DUP @pending ; - CDR %ownersDone ; - DUUUUP @owner ; - MEM ; - IF { DUP @pending ; - CDR %ownersDone ; - PUSH nat 1 ; - DUUUP @pending ; - CAR %yetNeeded ; - ADD ; - PAIR @pending %yetNeeded %ownersDone ; - DUUUUUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - CDR ; - DUUUUUUUUUP @storage ; - CDDDAR %m_pending ; - DUUUUUUP @pending ; - CAR %yetNeeded ; - DUUUUUUUP @pending ; - CDR %ownersDone ; - DUUUUUUUUUUUP @owner ; - DIP { PUSH bool False } ; - UPDATE ; - SWAP ; - PAIR @pending %yetNeeded %ownersDone ; - DUUUUUUUUUP @op_bytes ; - DIP { SOME } ; - DIIIIIIIP { DROP } ; - UPDATE ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - NIL @no_op operation ; - PAIR } - { DUUUUP @storage ; NIL @no_op operation ; PAIR } ; - DIP { DROP } } ; - DIP { DROP ; DROP ; DROP ; DROP } } - { IF_LEFT - { RENAME @parameter_slash_40 ; - DUUP @confirmAndCheck ; - DUUUUUP @storage ; - DUUUP @parameter ; - LEFT %ChangeOwner % - (or (address %AddOwner) - (or (address %RemoveOwner) - (or (nat %ChangeRequirement) - (or (mutez %SetDailyLimit) - (or (unit %ResetSpentToday) (contract :UnitContract %Kill unit)))))) ; - RIGHT % %_ - (pair :transaction (contract :UnitContract %destination unit) (mutez %amount)) ; - PAIR ; - EXEC ; - IF_LEFT - { RENAME @storage_slash_42 ; NIL @no_op operation ; PAIR } - { RENAME @storage_slash_43 ; - DUUP @parameter ; - DUP ; - CAR @from ; - DUUP ; - CDR @_to ; - DUUUUP @storage ; - DUUUP @from ; - PAIR ; - DUP ; - CDR @storage ; - CDDAR %m_owners ; - SWAP ; - CAR @addr ; - MEM ; - NOT ; - DUUUUUP @storage ; - DUUUP ; - PAIR ; - DUP ; - CDR @storage ; - CDDAR %m_owners ; - SWAP ; - CAR @addr ; - MEM ; - OR ; - IF { UNIT ; FAILWITH } - { DUUUUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - CDR ; - PUSH (map bytes (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - {} ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - DUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - CDR ; - DUUUUP @storage ; - CDDAR %m_owners ; - DUUUUUUUP @from ; - DIP { PUSH bool False } ; - UPDATE ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR @storage %m_required ; - DUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - CDR ; - DUUUUP @storage ; - CDDAR %m_owners ; - DUUUUUUUP ; - DIP { PUSH bool True } ; - DIIIIIIP { DROP ; DROP } ; - UPDATE ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - NIL @no_op operation ; - PAIR } ; - DIP { DROP ; DROP ; DROP ; DROP } } ; - DIP { DROP } } - { IF_LEFT - { RENAME @owner_slash_49 ; - DUUP @confirmAndCheck ; - DUUUUUP @storage ; - DUUUP @owner ; - LEFT %AddOwner % - (or (address %RemoveOwner) - (or (nat %ChangeRequirement) - (or (mutez %SetDailyLimit) - (or (unit %ResetSpentToday) (contract :UnitContract %Kill unit))))) ; - RIGHT % %_ (pair address address) ; - RIGHT % %_ - (pair :transaction (contract :UnitContract %destination unit) (mutez %amount)) ; - PAIR ; - EXEC ; - IF_LEFT - { RENAME @storage_slash_51 ; NIL @no_op operation ; PAIR } - { RENAME @storage_slash_52 ; - DUP @storage ; - DUUUP @owner ; - PAIR ; - DUP ; - CDR @storage ; - CDDAR %m_owners ; - SWAP ; - CAR @addr ; - MEM ; - IF { UNIT ; FAILWITH } { UNIT } ; - DROP ; - DUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - CDR ; - PUSH (map bytes (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - {} ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - DUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - CDR ; - PUSH nat 1 ; - DUUUUP @storage ; - CDAR %m_num_owners ; - ADD ; - PAIR %m_num_owners ; - SWAP ; - PAIR @storage %m_required ; - DUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - CDR ; - DUUUUP @storage ; - CDDAR %m_owners ; - DUUUUUUUUP @owner ; - DIP { PUSH bool True } ; - DIIIIIIP { DROP ; DROP ; DROP } ; - UPDATE ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - NIL @no_op operation ; - PAIR } ; - DIP { DROP } } - { IF_LEFT - { RENAME @owner_slash_55 ; - DUUP @confirmAndCheck ; - DUUUUUP @storage ; - DUUUP @owner ; - LEFT %RemoveOwner % - (or (nat %ChangeRequirement) - (or (mutez %SetDailyLimit) - (or (unit %ResetSpentToday) (contract :UnitContract %Kill unit)))) ; - RIGHT % %_ address ; - RIGHT % %_ (pair address address) ; - RIGHT % %_ - (pair :transaction (contract :UnitContract %destination unit) (mutez %amount)) ; - PAIR ; - EXEC ; - IF_LEFT - { RENAME @storage_slash_57 ; NIL @no_op operation ; PAIR } - { RENAME @storage_slash_58 ; - DUP @storage ; - DUUUP @owner ; - PAIR ; - DUP ; - CDR @storage ; - CDDAR %m_owners ; - SWAP ; - CAR @addr ; - MEM ; - NOT ; - IF { UNIT ; FAILWITH } { UNIT } ; - DROP ; - DUP @storage ; - CDAR %m_num_owners ; - DUUP @storage ; - CAR %m_required ; - COMPARE ; - GE ; - IF { UNIT ; FAILWITH } { UNIT } ; - DROP ; - DUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - CDR ; - PUSH int 1 ; - DUUUUP @storage ; - CDAR %m_num_owners ; - INT ; - SUB ; - DUP ; - ABS ; - SWAP ; - GE ; - IF {} { UNIT ; FAILWITH } ; - RENAME @new_num_owners ; - PAIR %m_num_owners ; - SWAP ; - PAIR @storage %m_required ; - DUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - CDR ; - DUUUUP @storage ; - CDDAR %m_owners ; - DUUUUUUUP @owner ; - DIP { PUSH bool False } ; - DIIIIIIP { DROP ; DROP } ; - UPDATE ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR @storage %m_required ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - CDR ; - PUSH (map bytes (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - {} ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - NIL @no_op operation ; - PAIR } ; - DIP { DROP } } - { IF_LEFT - { RENAME @required_slash_64 ; - DUUP @confirmAndCheck ; - DUUUUUP @storage ; - DUUUP @required ; - LEFT %ChangeRequirement % - (or (mutez %SetDailyLimit) - (or (unit %ResetSpentToday) (contract :UnitContract %Kill unit))) ; - RIGHT % %_ address ; - RIGHT % %_ address ; - RIGHT % %_ (pair address address) ; - RIGHT % %_ - (pair :transaction (contract :UnitContract %destination unit) (mutez %amount)) ; - PAIR ; - EXEC ; - IF_LEFT - { RENAME @storage_slash_66 ; NIL @no_op operation ; PAIR } - { RENAME @storage_slash_67 ; - DUP @storage ; - CDAR %m_num_owners ; - DUUUP @required ; - COMPARE ; - GT ; - IF { UNIT ; FAILWITH } { UNIT } ; - DROP ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - CDR ; - PUSH (map bytes (pair :pending_state (nat %yetNeeded) (set %ownersDone address))) - {} ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - CDR ; - DUUP ; - PAIR %m_required ; - NIL @no_op operation ; - PAIR } ; - DIP { DROP } } - { IF_LEFT - { RENAME @limit_slash_69 ; - DUUP @confirmAndCheck ; - DUUUUUP @storage ; - DUUUP @limit ; - LEFT %SetDailyLimit % - (or (unit %ResetSpentToday) (contract :UnitContract %Kill unit)) ; - RIGHT % %_ nat ; - RIGHT % %_ address ; - RIGHT % %_ address ; - RIGHT % %_ (pair address address) ; - RIGHT % %_ - (pair :transaction (contract :UnitContract %destination unit) (mutez %amount)) ; - PAIR ; - EXEC ; - IF_LEFT - { RENAME @storage_slash_71 ; NIL @no_op operation ; PAIR } - { RENAME @storage_slash_72 ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_pending ; - SWAP ; - CDR ; - CDR ; - DUUUUUUP ; - PAIR %m_daily_limit ; - SWAP ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - NIL @no_op operation ; - PAIR } ; - DIP { DROP } } - { IF_LEFT - { RENAME @__slash_73 ; - DUUP @confirmAndCheck ; - DUUUUUP @storage ; - PUSH (or :wallet_operation - (pair :transaction %Withdraw - (contract :UnitContract %destination unit) - (mutez %amount)) - (or (pair %ChangeOwner address address) - (or (address %AddOwner) - (or (address %RemoveOwner) - (or (nat %ChangeRequirement) - (or (mutez %SetDailyLimit) - (or (unit %ResetSpentToday) (contract :UnitContract %Kill unit)))))))) - (Right (Right (Right (Right (Right (Right (Left Unit))))))) ; - PAIR ; - EXEC ; - IF_LEFT - { RENAME @storage_slash_75 ; NIL @no_op operation ; PAIR } - { RENAME @storage_slash_76 ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_pending ; - SWAP ; - CDR ; - DUP ; - CAR %m_daily_limit ; - SWAP ; - CDR ; - CDR %m_last ; - PUSH mutez 0 ; - PAIR %m_spent_today %m_last ; - SWAP ; - PAIR %m_daily_limit ; - SWAP ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - NIL @no_op operation ; - PAIR } ; - DIP { DROP } } - { IF_LEFT - { RENAME @__slash_77 ; - PUSH mutez 0 ; - AMOUNT ; - COMPARE ; - EQ ; - IF { UNIT ; FAILWITH } - { DUUUUP @storage ; NIL @no_op operation ; PAIR } ; - DIP { DROP } } - { IF_LEFT - { RENAME @dest_slash_79 ; - DUUP @confirmAndCheck ; - DUUUUUP @storage ; - DUUUP @dest ; - RIGHT % %Kill unit ; - RIGHT % %_ mutez ; - RIGHT % %_ nat ; - RIGHT % %_ address ; - RIGHT % %_ address ; - RIGHT % %_ (pair address address) ; - RIGHT % %_ - (pair :transaction (contract :UnitContract %destination unit) (mutez %amount)) ; - PAIR ; - EXEC ; - IF_LEFT - { RENAME @storage_slash_81 ; NIL @no_op operation ; PAIR } - { RENAME @storage_slash_82 ; - DUUP @dest ; - BALANCE ; - UNIT ; - TRANSFER_TOKENS @trans_all ; - SWAP ; - NIL operation ; - DUUUP ; - DIIIP { DROP } ; - CONS ; - PAIR } ; - DIP { DROP } } - { RENAME @t_slash_84 ; - DUUUUP @storage ; - DUP @storage ; - DUP @storage ; - SOURCE ; - PAIR ; - DUP ; - CDR @storage ; - CDDAR %m_owners ; - SWAP ; - CAR @addr ; - MEM ; - IF { UNIT } { UNIT ; FAILWITH } ; - DIP { DROP } ; - DROP ; - DUP @storage ; - DUUUP @t ; - CDR %amount ; - PAIR ; - DUP ; - CAR @value ; - DUUP ; - CDR @storage ; - DUP @storage ; - DUP @storage ; - SOURCE ; - PAIR ; - DUP ; - CDR @storage ; - CDDAR %m_owners ; - SWAP ; - CAR @addr ; - MEM ; - IF { UNIT } { UNIT ; FAILWITH } ; - DIP { DROP } ; - DROP ; - PUSH int 86400 ; - DUUP @storage ; - CDDDDDDR %m_last ; - ADD ; - NOW ; - COMPARE ; - GE ; - IF { DUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_pending ; - SWAP ; - CDR ; - DUP ; - CAR %m_daily_limit ; - SWAP ; - CDR ; - CDR %m_last ; - PUSH mutez 0 ; - PAIR %m_spent_today %m_last ; - SWAP ; - PAIR %m_daily_limit ; - SWAP ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR @storage %m_required ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_pending ; - SWAP ; - CDR ; - DUP ; - CAR %m_daily_limit ; - SWAP ; - CDR ; - CAR %m_spent_today ; - NOW ; - SWAP ; - PAIR %m_spent_today %m_last ; - SWAP ; - PAIR %m_daily_limit ; - SWAP ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required } - { DUP @storage } ; - RENAME @storage ; - DUP @storage ; - CDDDDAR %m_daily_limit ; - DUUUUP @value ; - DUUUP @storage ; - CDDDDDAR %m_spent_today ; - ADD ; - COMPARE ; - LE ; - IF { DUP @storage ; - DUP ; - CAR %m_required ; - SWAP ; - CDR ; - DUP ; - CAR %m_num_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_owners ; - SWAP ; - CDR ; - DUP ; - CAR %m_pending ; - SWAP ; - CDR ; - DUP ; - CAR %m_daily_limit ; - SWAP ; - CDR ; - CDR %m_last ; - DUUUUUUUUUP @value ; - DUUUUUUUUP @storage ; - CDDDDDAR %m_spent_today ; - ADD ; - PAIR %m_spent_today %m_last ; - SWAP ; - PAIR %m_daily_limit ; - SWAP ; - PAIR %m_pending ; - SWAP ; - PAIR %m_owners ; - SWAP ; - PAIR %m_num_owners ; - SWAP ; - PAIR %m_required ; - PUSH bool True ; - PAIR } - { DUP @storage ; PUSH bool False ; PAIR } ; - DIP { DROP ; DROP ; DROP ; DROP } ; - DUP ; - CDR @storage ; - DUUP ; - CAR @under ; - IF { DUUUUP @t ; - CAR %destination ; - DUUUUUP @t ; - CDR %amount ; - UNIT ; - TRANSFER_TOKENS @op ; - DUUP @storage ; - NIL operation ; - DUUUP @op ; - DIIIP { DROP } ; - CONS ; - PAIR } - { DUUUUUP @confirmAndCheck ; - DUUP @storage ; - DUUUUUUP @t ; - LEFT %Withdraw % - (or (pair %ChangeOwner address address) - (or (address %AddOwner) - (or (address %RemoveOwner) - (or (nat %ChangeRequirement) - (or (mutez %SetDailyLimit) - (or (unit %ResetSpentToday) (contract :UnitContract %Kill unit))))))) ; - PAIR ; - EXEC ; - IF_LEFT - { RENAME @storage_slash_90 ; NIL @no_op operation ; PAIR } - { RENAME @storage_slash_91 ; - DUUUUUP @t ; - CAR %destination ; - DUUUUUUP @t ; - CDR %amount ; - UNIT ; - TRANSFER_TOKENS @op ; - SWAP ; - NIL operation ; - DUUUP ; - DIIIP { DROP } ; - CONS ; - PAIR } } ; - DIP { DROP ; DROP ; DROP ; DROP } } } } } } } } } } ; - DIP { DROP ; DROP ; DROP } }; \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/multisig.hex b/test/chain/tezos/lexer/samples/multisig.hex deleted file mode 100644 index 1ee8f013..00000000 --- a/test/chain/tezos/lexer/samples/multisig.hex +++ /dev/null @@ -1 +0,0 @@ -000007750502020000076e0321051f02000000160417000000104073746f726167655f736c6173685f3104160000001240706172616d657465725f736c6173685f3204210000000a40706172616d65746572072e02000000180320020000000b051f02000000020321034c053d036d034202000006f804580000001040616374696f6e5f736c6173685f32300200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c044700000006406f776e65720200000017051f020000000e0421000000084073746f72616765034c041600000007256f776e6572730200000015051f020000000c042100000006406f776e6572034c0339033f072c0200000025042100000006406f776e657207430368010000000c4e6f7420616e206f776e6572034203270200000002034f03200743036a000003130319033c072c0200000033074303680100000028446f6e27742073656e64206d6f6e6579207768696c65206d616e6167696e67206d756c746973696703270200000002034f03200200000017051f020000000e0421000000084073746f72616765034c0321041600000007256f776e657273034c031703170200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c0200000010031704160000000825616374696f6e73020000003a051f0200000031051f0200000028051f020000001f051f0200000016051f020000000d04210000000740616374696f6e034c034c034c034c034c0200000030051f0200000027051f020000001e051f0200000015051f020000000c042100000006406f776e6572034c034c034c034c035004420000000825616374696f6e73034c0442000000104073746f7261676520256f776e6572730421000000084073746f72616765053d036d04420000000b40646f5f6e6f7468696e670200000031051f0200000028051f020000001f051f0200000016051f020000000d04210000000740616374696f6e034c034c034c034c072f020000001104210000000b40646f5f6e6f7468696e67020000044f042100000002407003150200000011051f02000000080421000000024070034c04170000000725616d6f756e740319032a072c020000002807430368010000001d42616c616e636520746f206c6f7720666f72207769746864726177616c03270200000002034f051f0200000002032003200200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c0200000011051f02000000080421000000024070034c034203210417000000084073746f726167650421000000084073746f7261676502000000140317031704170000000a256d696e5f61677265650743036200000200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c0200000010031704160000000825616374696f6e730552020000018f045800000018405f5f5f705f7072696d5f5f6370745f736c6173685f3132051f020000000203210342032104170000000440637074020000000b051f02000000020321034c031604170000000840705f7072696d5f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c041600000002407003420321041600000003407031034c041700000003407032032104170000000725616d6f756e740200000014051f020000000b051f02000000020321034c034c04170000000725616d6f756e7403190325034c04160000000c2564657374696e6174696f6e0200000014051f020000000b051f02000000020321034c034c0200000017051f0200000010051f0200000009051f0200000002032004160000000c2564657374696e6174696f6e031903250314072c02000000200743036200010200000013051f020000000a04210000000440637074034c0312020000000a04210000000440637074051f02000000060320032003200200000012051f020000000b051f020000000403200320045800000009406e625f616772656503190328072c0200000135042100000002407004160000000c2564657374696e6174696f6e041e0000000740635f646573740200000011051f02000000080421000000024070034c04170000000725616d6f756e74034f044d00000003406f700200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c0321041600000007256f776e657273034c0317031707430760036e0865045d0000000c2564657374696e6174696f6e046a0000000725616d6f756e740000000c3a70726f706f736974696f6e020000000004420000000825616374696f6e73034c044200000007256f776e657273053d036d020000001b051f0200000012051f0200000009042100000003406f70034c034c0200000017051f0200000010051f0200000009051f02000000020320031b0342020000001f020000001a051f020000001104210000000b40646f5f6e6f7468696e67034c051f02000000020320051f020000000a03200320032003200320051f02000000040320032000000088050108650666036e00000007256f776e65727307650860036e0865045d0000000c2564657374696e6174696f6e046a0000000725616d6f756e740000000c3a70726f706f736974696f6e0000000825616374696f6e73076504620000000e256f776e6572735f6c656e67746804620000000a256d696e5f6167726565000000083a73746f72616765 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/multisig.micheline b/test/chain/tezos/lexer/samples/multisig.micheline deleted file mode 100644 index 7e039a9f..00000000 --- a/test/chain/tezos/lexer/samples/multisig.micheline +++ /dev/null @@ -1,445 +0,0 @@ - { "script": - [ { "prim": "parameter", - "args": - [ { "prim": "or", - "args": - [ { "prim": "unit", "annots": [ "%_Liq_entry_pay" ] }, - { "prim": "option", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "key_hash", - "annots": [ "%destination" ] }, - { "prim": "mutez", "annots": [ "%amount" ] } ], - "annots": [ ":proposition" ] } ], - "annots": [ "%_Liq_entry_manage" ] } ], - "annots": [ ":_entries" ] } ] }, - { "prim": "storage", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "set", "args": [ { "prim": "address" } ], - "annots": [ "%owners" ] }, - { "prim": "pair", - "args": - [ { "prim": "map", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": "key_hash", - "annots": [ "%destination" ] }, - { "prim": "mutez", - "annots": [ "%amount" ] } ], - "annots": [ ":proposition" ] } ], - "annots": [ "%actions" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%owners_length" ] }, - { "prim": "nat", "annots": [ "%min_agree" ] } ] } ] } ], - "annots": [ ":storage" ] } ] }, - { "prim": "code", - "args": - [ [ { "prim": "DUP" }, - { "prim": "DIP", - "args": - [ [ { "prim": "CDR", "annots": [ "@storage_slash_1" ] } ] ] }, - { "prim": "CAR", "annots": [ "@parameter_slash_2" ] }, - { "prim": "DUP", "annots": [ "@parameter" ] }, - { "prim": "IF_LEFT", - "args": - [ [ { "prim": "DROP" }, - [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "NIL", - "args": [ { "prim": "operation" } ] }, - { "prim": "PAIR" } ], - [ { "prim": "RENAME", - "annots": [ "@action_slash_20" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "SOURCE", "annots": [ "@owner" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%owners" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", "annots": [ "@owner" ] } ] ] }, - { "prim": "SWAP" } ], { "prim": "MEM" }, - { "prim": "NOT" }, - { "prim": "IF", - "args": - [ [ { "prim": "DUP", "annots": [ "@owner" ] }, - { "prim": "PUSH", - "args": - [ { "prim": "string" }, - { "string": "Not an owner" } ] }, - { "prim": "PAIR" }, { "prim": "FAILWITH" } ], - [ { "prim": "UNIT" } ] ] }, { "prim": "DROP" }, - { "prim": "PUSH", - "args": [ { "prim": "mutez" }, { "int": "0" } ] }, - { "prim": "AMOUNT" }, { "prim": "COMPARE" }, - { "prim": "NEQ" }, - { "prim": "IF", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": "string" }, - { "string": - "Don't send money while managing multisig" } ] }, - { "prim": "FAILWITH" } ], - [ { "prim": "UNIT" } ] ] }, { "prim": "DROP" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ], { "prim": "DUP" }, - { "prim": "CAR", "annots": [ "%owners" ] }, - { "prim": "SWAP" }, { "prim": "CDR" }, - { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CAR", "annots": [ "%actions" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@action" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@owner" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "UPDATE" }, - { "prim": "PAIR", "annots": [ "%actions" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "@storage", "%owners" ] }, - { "prim": "DUP", "annots": [ "@storage" ] }, - { "prim": "NIL", - "args": [ { "prim": "operation" } ] }, - { "prim": "PAIR", "annots": [ "@do_nothing" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@action" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "IF_NONE", - "args": - [ [ { "prim": "DUP", - "annots": [ "@do_nothing" ] } ], - [ { "prim": "DUP", "annots": [ "@p" ] }, - { "prim": "BALANCE" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@p" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", "annots": [ "%amount" ] }, - { "prim": "COMPARE" }, { "prim": "GT" }, - { "prim": "IF", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": "string" }, - { "string": - "Balance to low for withdrawal" } ] }, - { "prim": "FAILWITH" } ], - [ { "prim": "UNIT" } ] ] }, - { "prim": "DIP", - "args": [ [ { "prim": "DROP" } ] ] }, - { "prim": "DROP" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@p" ] } ] ] }, - { "prim": "SWAP" } ], { "prim": "PAIR" }, - { "prim": "DUP" }, - { "prim": "CDR", "annots": [ "@storage" ] }, - { "prim": "DUP", "annots": [ "@storage" ] }, - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CDR", - "annots": [ "%min_agree" ] } ], - { "prim": "PUSH", - "args": - [ { "prim": "nat" }, { "int": "0" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CAR", "annots": [ "%actions" ] } ], - { "prim": "ITER", - "args": - [ [ { "prim": "RENAME", - "annots": - [ "@___p_prim__cpt_slash_12" ] }, - { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "PAIR" }, - { "prim": "DUP" }, - { "prim": "CDR", - "annots": [ "@cpt" ] }, - [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR" }, - { "prim": "CDR", - "annots": [ "@p_prim_" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "@p" ] }, - { "prim": "PAIR" }, - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "@p1" ] }, - { "prim": "SWAP" }, - { "prim": "CDR", - "annots": [ "@p2" ] }, - { "prim": "DUP" }, - { "prim": "CDR", - "annots": [ "%amount" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "%amount" ] }, - { "prim": "COMPARE" }, - { "prim": "EQ" }, { "prim": "SWAP" }, - { "prim": "CAR", - "annots": [ "%destination" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DROP" } ] ] } ] ] } ] ] } ], - { "prim": "CAR", - "annots": [ "%destination" ] }, - { "prim": "COMPARE" }, - { "prim": "EQ" }, { "prim": "AND" }, - { "prim": "IF", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": "nat" }, - { "int": "1" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@cpt" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "ADD" } ], - [ { "prim": "DUP", - "annots": [ "@cpt" ] } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" } ] ] } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DROP" }, - { "prim": "DROP" } ] ] } ] ] } ], - { "prim": "RENAME", - "annots": [ "@nb_agree" ] }, - { "prim": "COMPARE" }, { "prim": "GE" }, - { "prim": "IF", - "args": - [ [ { "prim": "DUP", "annots": [ "@p" ] }, - { "prim": "CAR", - "annots": [ "%destination" ] }, - { "prim": "IMPLICIT_ACCOUNT", - "annots": [ "@c_dest" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@p" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "%amount" ] }, - { "prim": "UNIT" }, - { "prim": "TRANSFER_TOKENS", - "annots": [ "@op" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DUP" }, - { "prim": "CAR", - "annots": [ "%owners" ] }, - { "prim": "SWAP" }, - { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "PUSH", - "args": - [ { "prim": "map", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": - "key_hash", - "annots": - [ "%destination" ] }, - { "prim": "mutez", - "annots": - [ "%amount" ] } ], - "annots": - [ ":proposition" ] } ] }, - [] ] }, - { "prim": "PAIR", - "annots": [ "%actions" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%owners" ] }, - { "prim": "NIL", - "args": [ { "prim": "operation" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@op" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DROP" } ] ] } ] ] } ] ] } ], - { "prim": "CONS" }, - { "prim": "PAIR" } ], - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@do_nothing" ] } ] ] }, - { "prim": "SWAP" } ] ] ] }, - { "prim": "DIP", - "args": [ [ { "prim": "DROP" } ] ] } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": "DROP" }, { "prim": "DROP" }, - { "prim": "DROP" }, { "prim": "DROP" }, - { "prim": "DROP" } ] ] } ] ] }, - { "prim": "DIP", - "args": [ [ { "prim": "DROP" }, { "prim": "DROP" } ] ] } ] ] } ], - "storage": { "int": "1000" }, "input": { "prim": "Unit" }, - "amount": "50000" } \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/multisig.michelson b/test/chain/tezos/lexer/samples/multisig.michelson deleted file mode 100644 index d43b6889..00000000 --- a/test/chain/tezos/lexer/samples/multisig.michelson +++ /dev/null @@ -1,133 +0,0 @@ -parameter - (or :_entries - (unit %_Liq_entry_pay) - (option %_Liq_entry_manage - (pair :proposition (key_hash %destination) (mutez %amount)))); -storage - (pair :storage - (set %owners address) - (pair (map %actions address (pair :proposition (key_hash %destination) (mutez %amount))) - (pair (nat %owners_length) (nat %min_agree)))); -code { DUP ; - DIP { CDR @storage_slash_1 } ; - CAR @parameter_slash_2 ; - DUP @parameter ; - IF_LEFT - { DROP ; DUUP ; NIL operation ; PAIR } - { RENAME @action_slash_20 ; - DUUUP @storage ; - SOURCE @owner ; - DUUP @storage ; - CAR %owners ; - DUUP @owner ; - MEM ; - NOT ; - IF { DUP @owner ; PUSH string "Not an owner" ; PAIR ; FAILWITH } { UNIT } ; - DROP ; - PUSH mutez 0 ; - AMOUNT ; - COMPARE ; - NEQ ; - IF { PUSH string "Don't send money while managing multisig" ; FAILWITH } - { UNIT } ; - DROP ; - DUUP @storage ; - DUP ; - CAR %owners ; - SWAP ; - CDR ; - CDR ; - DUUUUP @storage ; - CDAR %actions ; - DUUUUUUP @action ; - DUUUUUP @owner ; - UPDATE ; - PAIR %actions ; - SWAP ; - PAIR @storage %owners ; - DUP @storage ; - NIL operation ; - PAIR @do_nothing ; - DUUUUUP @action ; - IF_NONE - { DUP @do_nothing } - { DUP @p ; - BALANCE ; - DUUP @p ; - CDR %amount ; - COMPARE ; - GT ; - IF { PUSH string "Balance to low for withdrawal" ; FAILWITH } { UNIT } ; - DIP { DROP } ; - DROP ; - DUUUP @storage ; - DUUP @p ; - PAIR ; - DUP ; - CDR @storage ; - DUP @storage ; - CDDDR %min_agree ; - PUSH nat 0 ; - DUUUP @storage ; - CDAR %actions ; - ITER { RENAME @___p_prim__cpt_slash_12 ; - DIP { DUP } ; - PAIR ; - DUP ; - CDR @cpt ; - DUUP ; - CAR ; - CDR @p_prim_ ; - DUUUUUUUP ; - CAR @p ; - PAIR ; - DUP ; - CAR @p1 ; - SWAP ; - CDR @p2 ; - DUP ; - CDR %amount ; - DUUUP ; - CDR %amount ; - COMPARE ; - EQ ; - SWAP ; - CAR %destination ; - DUUUP ; - DIIIP { DROP } ; - CAR %destination ; - COMPARE ; - EQ ; - AND ; - IF { PUSH nat 1 ; DUUP @cpt ; ADD } { DUP @cpt } ; - DIP { DROP ; DROP ; DROP } } ; - DIIP { DROP ; DROP } ; - RENAME @nb_agree ; - COMPARE ; - GE ; - IF { DUP @p ; - CAR %destination ; - IMPLICIT_ACCOUNT @c_dest ; - DUUP @p ; - CDR %amount ; - UNIT ; - TRANSFER_TOKENS @op ; - DUUUUP @storage ; - DUP ; - CAR %owners ; - SWAP ; - CDR ; - CDR ; - PUSH (map address (pair :proposition (key_hash %destination) (mutez %amount))) {} ; - PAIR %actions ; - SWAP ; - PAIR %owners ; - NIL operation ; - DUUUP @op ; - DIIIP { DROP } ; - CONS ; - PAIR } - { DUUP @do_nothing } ; - DIP { DROP } } ; - DIP { DROP ; DROP ; DROP ; DROP ; DROP } } ; - DIP { DROP ; DROP } }; \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/queue.hex b/test/chain/tezos/lexer/samples/queue.hex deleted file mode 100644 index 8dbd0287..00000000 --- a/test/chain/tezos/lexer/samples/queue.hex +++ /dev/null @@ -1 +0,0 @@ -000000f3050202000000ec03210316072f020000008002000000040317031703210316051f02000000040317032103210316034c051f02000000020329034c072f020000000f053e0368051f020000000203420342020000003c0346051f02000000310321051f020000000f0316051f0200000004053e03680350032103160743036200010312051f020000000203170342034203420200000056051f020000002103210200000006031703170316051f020000000b02000000060317031703170321034c0316051f02000000190346034c03170321051f02000000020350074303620001031203420342053e03680342053d036d03420000001605010765056303680765076503620362076003620368 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/queue.micheline b/test/chain/tezos/lexer/samples/queue.micheline deleted file mode 100644 index 4d43a8d9..00000000 --- a/test/chain/tezos/lexer/samples/queue.micheline +++ /dev/null @@ -1,369 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"option", - "args":[ - { - "prim":"string" - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"option", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"pair", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"nat" - }, - { - "prim":"nat" - } - ] - }, - { - "prim":"map", - "args":[ - { - "prim":"nat" - }, - { - "prim":"string" - } - ] - } - ] - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"IF_NONE", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - } - ], - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"DUP" - } - ] - ] - }, - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"GET" - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"IF_NONE", - "args":[ - [ - { - "prim":"NONE", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"PAIR" - } - ] - ] - }, - { - "prim":"PAIR" - } - ], - [ - { - "prim":"SOME" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"NONE", - "args":[ - { - "prim":"string" - } - ] - } - ] - ] - }, - { - "prim":"UPDATE" - } - ] - ] - }, - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"nat" - }, - { - "int":"1" - } - ] - }, - { - "prim":"ADD" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - } - ] - ] - }, - { - "prim":"PAIR" - }, - { - "prim":"PAIR" - } - ] - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - }, - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - }, - { - "prim":"CAR" - } - ], - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - }, - { - "prim":"CDR" - } - ] - ] - ] - }, - { - "prim":"DUP" - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SOME" - }, - { - "prim":"SWAP" - }, - { - "prim":"CDR" - }, - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"UPDATE" - } - ] - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"nat" - }, - { - "int":"1" - } - ] - }, - { - "prim":"ADD" - } - ] - ] - }, - { - "prim":"PAIR" - }, - { - "prim":"PAIR" - }, - { - "prim":"NONE", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/reduce_map.hex b/test/chain/tezos/lexer/samples/reduce_map.hex deleted file mode 100644 index 0e1ac7de..00000000 --- a/test/chain/tezos/lexer/samples/reduce_map.hex +++ /dev/null @@ -1 +0,0 @@ -0000008805020200000081051f0200000004053d035b03160321051f02000000040316034203170552020000004203420321020000000403170316051f020000002c0321051f020000000902000000040317031603210316051f020000000b020000000403170317034c0326031b03420317051f0200000004053d035b05520200000002031b053d036d0342000000060501055f035b \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/reduce_map.micheline b/test/chain/tezos/lexer/samples/reduce_map.micheline deleted file mode 100644 index 48e321a3..00000000 --- a/test/chain/tezos/lexer/samples/reduce_map.micheline +++ /dev/null @@ -1,215 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"lambda", - "args":[ - { - "prim":"int" - }, - { - "prim":"int" - } - ] - }, - { - "prim":"list", - "args":[ - { - "prim":"int" - } - ] - } - ] - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"int" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"NIL", - "args":[ - { - "prim":"int" - } - ] - } - ] - ] - }, - { - "prim":"CAR" - }, - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"PAIR" - } - ] - ] - }, - { - "prim":"CDR" - }, - { - "prim":"ITER", - "args":[ - [ - { - "prim":"PAIR" - }, - { - "prim":"DUP" - }, - [ - { - "prim":"CDR" - }, - { - "prim":"CAR" - } - ], - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CAR" - } - ] - ] - ] - }, - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - [ - { - "prim":"CDR" - }, - { - "prim":"CDR" - } - ], - { - "prim":"SWAP" - } - ] - ] - }, - { - "prim":"EXEC" - }, - { - "prim":"CONS" - } - ] - ] - }, - { - "prim":"PAIR" - } - ] - ] - }, - { - "prim":"CDR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"NIL", - "args":[ - { - "prim":"int" - } - ] - } - ] - ] - }, - { - "prim":"ITER", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/reentrancy.hex b/test/chain/tezos/lexer/samples/reentrancy.hex deleted file mode 100644 index 790cb33e..00000000 --- a/test/chain/tezos/lexer/samples/reentrancy.hex +++ /dev/null @@ -1 +0,0 @@ -000000560502020000004f0317032103160743036a0080ade204034f034d051f0200000011032103170743036a0080ade204034f034d0200000012051f020000000b051f0200000004053d036d051f0200000002031b031b03420000000c05010765055a036c055a036c \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/reentrancy.micheline b/test/chain/tezos/lexer/samples/reentrancy.micheline deleted file mode 100644 index df33d593..00000000 --- a/test/chain/tezos/lexer/samples/reentrancy.micheline +++ /dev/null @@ -1,148 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"pair", - "args":[ - { - "prim":"contract", - "args":[ - { - "prim":"unit" - } - ] - }, - { - "prim":"contract", - "args":[ - { - "prim":"unit" - } - ] - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"mutez" - }, - { - "int":"5000000" - } - ] - }, - { - "prim":"UNIT" - }, - { - "prim":"TRANSFER_TOKENS" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"CDR" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"mutez" - }, - { - "int":"5000000" - } - ] - }, - { - "prim":"UNIT" - }, - { - "prim":"TRANSFER_TOKENS" - } - ] - ] - }, - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"DIP", - "args":[ - [ - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - } - ] - ] - } - ] - ] - } - ], - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - }, - { - "prim":"CONS" - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/spawn_identities.hex b/test/chain/tezos/lexer/samples/spawn_identities.hex deleted file mode 100644 index 4ea0cfff..00000000 --- a/test/chain/tezos/lexer/samples/spawn_identities.hex +++ /dev/null @@ -1 +0,0 @@ -000000f3050202000000ec03210316051f02000000060317053d036d07430359030a053402000000ca0321074303620000020000000403190325072c020000000607430359030302000000a7074303620001034c034b0311074303680100000004696e69740743036a0080ade2040743035903030321053e035d0743035d0100000024747a3163786377776e7a454e52646865324b62385a645472644e793462464e7953637835051d02000000170500036805010368050202000000080316053d036d0342034c051f020000000b034c051f0200000002031b034c051f020000000b034c051f0200000002031b07430359030a03200342000000060501055f036e \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/spawn_identities.micheline b/test/chain/tezos/lexer/samples/spawn_identities.micheline deleted file mode 100644 index 596ca34c..00000000 --- a/test/chain/tezos/lexer/samples/spawn_identities.micheline +++ /dev/null @@ -1,305 +0,0 @@ -{ - "script":[ - { - "prim":"parameter", - "args":[ - { - "prim":"nat" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"list", - "args":[ - { - "prim":"address" - } - ] - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"CAR" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CDR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - } - ] - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"True" - } - ] - }, - { - "prim":"LOOP", - "args":[ - [ - { - "prim":"DUP" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"nat" - }, - { - "int":"0" - } - ] - }, - [ - { - "prim":"COMPARE" - }, - { - "prim":"EQ" - } - ], - { - "prim":"IF", - "args":[ - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"False" - } - ] - } - ], - [ - { - "prim":"PUSH", - "args":[ - { - "prim":"nat" - }, - { - "int":"1" - } - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"SUB" - }, - { - "prim":"ABS" - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"string" - }, - { - "string":"init" - } - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"mutez" - }, - { - "int":"5000000" - } - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"False" - } - ] - }, - { - "prim":"DUP" - }, - { - "prim":"NONE", - "args":[ - { - "prim":"key_hash" - } - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"key_hash" - }, - { - "string":"tz1cxcwwnzENRdhe2Kb8ZdTrdNy4bFNyScx5" - } - ] - }, - { - "prim":"CREATE_CONTRACT", - "args":[ - [ - { - "prim":"parameter", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"storage", - "args":[ - { - "prim":"string" - } - ] - }, - { - "prim":"code", - "args":[ - [ - { - "prim":"CAR" - }, - { - "prim":"NIL", - "args":[ - { - "prim":"operation" - } - ] - }, - { - "prim":"PAIR" - } - ] - ] - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - } - ] - ] - }, - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"SWAP" - }, - { - "prim":"DIP", - "args":[ - [ - { - "prim":"CONS" - } - ] - ] - } - ] - ] - }, - { - "prim":"PUSH", - "args":[ - { - "prim":"bool" - }, - { - "prim":"True" - } - ] - } - ] - ] - } - ] - ] - }, - { - "prim":"DROP" - }, - { - "prim":"PAIR" - } - ] - ] - } - ], - "storage":{ - "int":"1000" - }, - "input":{ - "prim":"Unit" - }, - "amount":"50000" -} \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/token.hex b/test/chain/tezos/lexer/samples/token.hex deleted file mode 100644 index ee7e2961..00000000 --- a/test/chain/tezos/lexer/samples/token.hex +++ /dev/null @@ -1 +0,0 @@ -000022be050202000022b70321051f02000000160417000000104073746f726167655f736c6173685f3104160000001240706172616d657465725f736c6173685f320931000000f60765036e0761036e08650462000000082562616c616e63650860036e03620000000b25616c6c6f77616e636573000000083a6163636f756e7408650462000000082562616c616e63650860036e03620000000b25616c6c6f77616e636573000000083a6163636f756e740200000087045800000014405f615f6163636f756e74735f736c6173685f330321041700000009406163636f756e7473020000000b051f02000000020321034c04160000000240610329072f020000002d07430760036e036202000000000743036200000442000000142562616c616e63652025616c6c6f77616e6365730200000000051f020000000203200000000c406765745f6163636f756e7404210000000c406765745f6163636f756e7409310000086707650765036e0765036e0765036208650861036e08650462000000082562616c616e63650860036e03620000000b25616c6c6f77616e636573000000083a6163636f756e74000000093a6163636f756e747307650462000000082576657273696f6e076504620000000c25746f74616c537570706c79076504620000000925646563696d616c730765046800000005256e616d6507650468000000072573796d626f6c046e00000006256f776e6572000000083a73746f72616765075e0765036e0761036e08650462000000082562616c616e63650860036e03620000000b25616c6c6f77616e636573000000083a6163636f756e7408650462000000082562616c616e63650860036e03620000000b25616c6c6f77616e636573000000083a6163636f756e740765055f036d08650861036e08650462000000082562616c616e63650860036e03620000000b25616c6c6f77616e636573000000083a6163636f756e74000000093a6163636f756e747307650462000000082576657273696f6e076504620000000c25746f74616c537570706c79076504620000000925646563696d616c730765046800000005256e616d6507650468000000072573796d626f6c046e00000006256f776e6572000000083a73746f72616765020000068804580000001440636c6f737572655f656e765f736c6173685f38032103160416000000054066726f6d020000000b051f02000000020321034c0316020000000d031704160000000540646573740200000014051f020000000b051f02000000020321034c034c031602000000110317031704160000000740746f6b656e73020000001d051f0200000014051f020000000b051f02000000020321034c034c034c03160200000012031703170417000000084073746f726167650421000000084073746f72616765041600000013406163636f756e747320256163636f756e7473020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c041700000014406765745f6163636f756e745f736c6173685f370200000018051f020000000f042100000009406163636f756e7473034c0200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b0421000000054066726f6d034c034c034c034c034c034c034204260000000f406163636f756e745f73656e6465720200000018051f020000000f042100000009406163636f756e7473034c0200000031051f0200000028051f020000001f051f0200000016051f020000000d04210000000740746f6b656e73034c034c034c034c0200000027051f020000001e051f020000001504210000000f406163636f756e745f73656e646572034c034c0416000000082562616c616e6365034b0356072f020000005c020000001e051f020000001504210000000f406163636f756e745f73656e646572034c0416000000082562616c616e636507430368010000001e4e6f7420656e6f75676820746f6b656e7320666f72207472616e736665720342032702000000590200000027051f020000001e051f020000001504210000000f406163636f756e745f73656e646572034c034c04170000000b25616c6c6f77616e636573034c0442000000142562616c616e63652025616c6c6f77616e636573045800000013406e65775f6163636f756e745f73656e646572020000004a051f0200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b0421000000054066726f6d034c034c034c034c034c034c034c051f02000000020346045000000009406163636f756e74730200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c034c041700000014406765745f6163636f756e745f736c6173685f370200000018051f020000000f042100000009406163636f756e7473034c020000004a051f0200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b0421000000054064657374034c034c034c034c034c034c034c034204260000000d406163636f756e745f646573740200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c03170200000021051f0200000018051f020000000f042100000009406163636f756e7473034c034c0200000025051f020000001c051f020000001304210000000d406163636f756e745f64657374034c034c04170000000b25616c6c6f77616e6365730200000055051f020000004c051f0200000043051f020000003a051f0200000031051f0200000028051f020000001f051f0200000016051f020000000d04210000000740746f6b656e73034c034c034c034c034c034c034c034c0200000037051f020000002e051f0200000025051f020000001c051f020000001304210000000d406163636f756e745f64657374034c034c034c034c0416000000082562616c616e63650312044200000026406e65775f6163636f756e745f64657374202562616c616e63652025616c6c6f77616e636573020000005c051f0200000053051f020000004a051f0200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b0421000000054064657374034c034c034c034c034c034c034c034c034c051f02000000020346020000002e051f0200000027051f0200000020051f0200000019051f0200000012032003200320032003200320032003200320045000000009406163636f756e7473044200000009256163636f756e7473053d036d0342000000000442000000d740706572666f726d5f7472616e736665725f543461616e5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e65726154324c6f5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e6572610200000022051f0200000019051f020000001004210000000a40706172616d65746572034c034c072e02000001c8045800000016405f646573745f746f6b656e735f736c6173685f323302000000e6051f02000000dd0421000000d740706572666f726d5f7472616e736665725f543461616e5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e65726154324c6f5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e657261034c020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c034c0200000014051f020000000b051f02000000020321034c034c04170000000740746f6b656e7303420200000014051f020000000b051f02000000020321034c034c0416000000054064657374034203480342051f020000000803210316034c03170200000017051f0200000010051f0200000009051f0200000002032003420326020000160a072e0200000439045800000019405f7370656e6465725f746f6b656e735f736c6173685f32370200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c020000000b051f02000000020321034c041600000008407370656e6465720200000014051f020000000b051f02000000020321034c034c04170000000740746f6b656e73020000003f051f0200000036051f020000002d051f0200000024051f020000001b051f020000001204210000000c406765745f6163636f756e74034c034c034c034c034c0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c041600000009256163636f756e74730348034204260000000f406163636f756e745f73656e6465720200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c03170200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c041600000009256163636f756e74730200000027051f020000001e051f020000001504210000000f406163636f756e745f73656e646572034c034c0416000000082562616c616e6365074303620000020000003a051f0200000031051f0200000028051f020000001f051f0200000016051f020000000d04210000000740746f6b656e73034c034c034c034c034c03190325072c020000009c0200000030051f0200000027051f020000001e051f020000001504210000000f406163636f756e745f73656e646572034c034c034c04170000000b25616c6c6f77616e6365730200000044051f020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e042100000008407370656e646572034c034c034c034c034c034c051f0200000004053e0362035002000000e20200000030051f0200000027051f020000001e051f020000001504210000000f406163636f756e745f73656e646572034c034c034c04170000000b25616c6c6f77616e636573020000003a051f0200000031051f0200000028051f020000001f051f0200000016051f020000000d04210000000740746f6b656e73034c034c034c034c034c020000004d051f0200000044051f020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e042100000008407370656e646572034c034c034c034c034c034c034c051f020000000203460350034c044200000024406163636f756e745f73656e646572202562616c616e63652025616c6c6f77616e6365730348051f020000000203460200000026051f020000001f051f0200000018051f0200000011051f020000000a0320032003200320032003500442000000124073746f7261676520256163636f756e7473053d036d034202000011c5072e020000078604580000001b405f66726f6d5f646573745f746f6b656e735f736c6173685f33340200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c020000000b051f02000000020321034c0416000000054066726f6d0200000014051f020000000b051f02000000020321034c034c020000000f031704170000000740746f6b656e73020000003f051f0200000036051f020000002d051f0200000024051f020000001b051f020000001204210000000c406765745f6163636f756e74034c034c034c034c034c0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c041600000009256163636f756e74730200000026051f020000001d051f0200000014051f020000000b0421000000054066726f6d034c034c034c034204260000000d406163636f756e745f66726f6d020000010a051f0200000101051f02000000f8051f02000000ef051f02000000e6051f02000000dd0421000000d740706572666f726d5f7472616e736665725f543461616e5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e65726154324c6f5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e657261034c034c034c034c034c0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c0317020000003b051f0200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c034c041600000009256163636f756e7473020000002e051f0200000025051f020000001c051f020000001304210000000d406163636f756e745f66726f6d034c034c034c0416000000082562616c616e63650200000037051f020000002e051f0200000025051f020000001c051f020000001304210000000d406163636f756e745f66726f6d034c034c034c034c04170000000b25616c6c6f77616e63657303480329072f020000006c0200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b0421000000054066726f6d034c034c034c034c034c034c0743036801000000194e6f7420616c6c6f77656420746f207370656e642066726f6d0342032702000001ea0200000043051f020000003a051f0200000031051f0200000028051f020000001f051f0200000016051f020000000d04210000000740746f6b656e73034c034c034c034c034c034c0200000017051f020000000e04210000000840616c6c6f776564034c034b0356072f020000003c04210000000840616c6c6f7765640743036801000000214e6f7420656e6f75676820616c6c6f77616e636520666f72207472616e736665720342032702000001310743036200000200000017051f020000000e04210000000840616c6c6f776564034c03190325072c020000006e0200000049051f0200000040051f0200000037051f020000002e051f0200000025051f020000001c051f020000001304210000000d406163636f756e745f66726f6d034c034c034c034c034c034c04170000000b25616c6c6f77616e6365730348051f0200000004053e0362035002000000880200000049051f0200000040051f0200000037051f020000002e051f0200000025051f020000001c051f020000001304210000000d406163636f756e745f66726f6d034c034c034c034c034c034c04170000000b25616c6c6f77616e6365730200000017051f020000000e04210000000840616c6c6f776564034c0348051f020000000203460350051f02000000020320051f02000000020320045800000014406e65775f616c6c6f77616e6365735f66726f6d034c044200000022406163636f756e745f66726f6d202562616c616e63652025616c6c6f77616e6365730200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b0421000000054066726f6d034c034c034c034c034c034c051f0200000002034603500442000000124073746f7261676520256163636f756e74730200000028051f020000001f051f0200000016051f020000000d04210000000740746f6b656e73034c034c034c03420200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c020000000d031704160000000540646573740342020000002f051f0200000026051f020000001d051f0200000014051f020000000b0421000000054066726f6d034c034c034c034c0342051f020000000803210316034c0317020000001f051f0200000018051f0200000011051f020000000a03200320032003200320034203260200000a33072e020000019a04580000001a405f7370656e6465725f666f72776172645f736c6173685f34350200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c0421000000084073746f72616765053d036d020000001d051f0200000014051f020000000b051f02000000020321034c034c034c04170000000840666f72776172640743036a00000200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c041600000009256163636f756e74730200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c041600000008407370656e6465720329072f0200000006074303620000020000000e0416000000082562616c616e63650200000027051f0200000020051f0200000019051f0200000012051f020000000b051f020000000403200320045800000010407370656e6465725f62616c616e6365034d031b0342020000088d072e020000028204580000001f405f66726f6d5f7370656e6465725f666f72776172645f736c6173685f35310200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c0421000000084073746f72616765053d036d020000001d051f0200000014051f020000000b051f02000000020321034c034c034c0200000010031704170000000840666f72776172640743036a00000200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c041600000009256163636f756e74730200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c0416000000054066726f6d0329072f020000000e074307650362036207070000000002000000e3042100000008406163636f756e7404170000000b25616c6c6f77616e6365730200000041051f0200000038051f020000002f051f0200000026051f020000001d051f0200000014051f020000000b051f02000000020321034c034c034c034c034c034c034c02000000100317041600000008407370656e6465720329072f0200000024042100000008406163636f756e740416000000082562616c616e63650743036200000342020000002e0200000017051f020000000e042100000008406163636f756e74034c0416000000082562616c616e6365034c0342051f020000000203200200000027051f0200000020051f0200000019051f0200000012051f020000000b051f020000000403200320045800000012407370656e6465725f616c6c6f77616e6365034d031b034202000005ff072e020000029e045800000016405f646573745f746f6b656e735f736c6173685f35390200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c0421000000084073746f72616765020000001603170317031703170317041700000006256f776e657203480319033c072c020000002907430368010000001e4f6e6c79206f776e65722063616e20637265617465206163636f756e747303270200000002034f032002000000ef051f02000000e6051f02000000dd0421000000d740706572666f726d5f7472616e736665725f543461616e5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e65726154324c6f5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e657261034c034c0200000017051f020000000e0421000000084073746f72616765034c020000001d051f0200000014051f020000000b051f02000000020321034c034c034c04170000000740746f6b656e730342020000001d051f0200000014051f020000000b051f02000000020321034c034c034c041600000005406465737403420200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c020000001603170317031703170317041700000006256f776e65720342051f020000000803210316034c03170200000019051f0200000012051f020000000b051f020000000403200320034203260200000355045800000016406e65775f6163636f756e74735f736c6173685f36330200000032051f0200000029051f0200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c034c034c0421000000084073746f72616765020000001603170317031703170317041700000006256f776e657203480319033c072c020000002907430368010000001e4f6e6c79206f776e65722063616e20637265617465206163636f756e747303270200000002034f03200421000000084073746f72616765053d036d03420200000025051f020000001c051f020000001304210000000d406e65775f6163636f756e7473034c034c0552020000024a045800000023405f646573745f746f6b656e735f5f6f70735f73746f726167655f736c6173685f3635051f020000000203210342032103170417000000084073746f72616765020000010a051f0200000101051f02000000f8051f02000000ef051f02000000e6051f02000000dd0421000000d740706572666f726d5f7472616e736665725f543461616e5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e65726154324c6f5273746f726167656163636f756e74734261526163636f756e7462616c616e63656e616c6c6f77616e6365734d616e76657273696f6e6e746f74616c537570706c796e646563696d616c736e6e616d657373796d626f6c736f776e657261034c034c034c034c034c0200000017051f020000000e0421000000084073746f72616765034c020000001d051f0200000014051f020000000b051f02000000020321034c034c034c031604170000000740746f6b656e730342020000001d051f0200000014051f020000000b051f02000000020321034c034c034c0316041600000005406465737403420200000020051f0200000017051f020000000e0421000000084073746f72616765034c034c020000001603170317031703170317041700000006256f776e65720342051f020000000803210316034c0317020000001b051f0200000014051f020000000d051f020000000603200320032003420326051f020000000403200320051f02000000080320032003200320000000af050108650861036e08650462000000082562616c616e63650860036e03620000000b25616c6c6f77616e636573000000083a6163636f756e74000000093a6163636f756e747307650462000000082576657273696f6e076504620000000c25746f74616c537570706c79076504620000000925646563696d616c730765046800000005256e616d6507650468000000072573796d626f6c046e00000006256f776e6572000000083a73746f72616765 \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/token.micheline b/test/chain/tezos/lexer/samples/token.micheline deleted file mode 100644 index 482831c1..00000000 --- a/test/chain/tezos/lexer/samples/token.micheline +++ /dev/null @@ -1,2470 +0,0 @@ - { "script": - [ { "prim": "parameter", - "args": - [ { "prim": "or", - "args": - [ { "prim": "pair", - "args": [ { "prim": "address" }, { "prim": "nat" } ], - "annots": [ "%_Liq_entry_transfer" ] }, - { "prim": "or", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "address" }, { "prim": "nat" } ], - "annots": [ "%_Liq_entry_approve" ] }, - { "prim": "or", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "nat" } ] } ], - "annots": [ "%_Liq_entry_transferFrom" ] }, - { "prim": "or", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "contract", - "args": [ { "prim": "nat" } ], - "annots": [ ":NatContract" ] } ], - "annots": [ "%_Liq_entry_balanceOf" ] }, - { "prim": "or", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "contract", - "args": - [ { "prim": - "pair", - "args": - [ { "prim": - "nat" }, - { "prim": - "nat" } ] } ], - "annots": - [ ":NatNatContract" ] } ] } ], - "annots": - [ "%_Liq_entry_allowance" ] }, - { "prim": "or", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "nat" } ], - "annots": - [ "%_Liq_entry_createAccount" ] }, - { "prim": "list", - "args": - [ { "prim": "pair", - "args": - [ { "prim": - "address" }, - { "prim": "nat" } ] } ], - "annots": - [ "%_Liq_entry_createAccounts" ] } ] } ] } ] } ] } ] } ], - "annots": [ ":_entries" ] } ] }, - { "prim": "storage", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "big_map", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": "nat", "annots": [ "%balance" ] }, - { "prim": "map", - "args": - [ { "prim": "address" }, - { "prim": "nat" } ], - "annots": [ "%allowances" ] } ], - "annots": [ ":account" ] } ], - "annots": [ ":accounts" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", "annots": [ "%version" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%totalSupply" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%decimals" ] }, - { "prim": "pair", - "args": - [ { "prim": "string", - "annots": [ "%name" ] }, - { "prim": "pair", - "args": - [ { "prim": "string", - "annots": [ "%symbol" ] }, - { "prim": "address", - "annots": [ "%owner" ] } ] } ] } ] } ] } ] } ], - "annots": [ ":storage" ] } ] }, - { "prim": "code", - "args": - [ [ { "prim": "DUP" }, - { "prim": "DIP", - "args": - [ [ { "prim": "CDR", "annots": [ "@storage_slash_1" ] } ] ] }, - { "prim": "CAR", "annots": [ "@parameter_slash_2" ] }, - { "prim": "LAMBDA", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "big_map", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%balance" ] }, - { "prim": "map", - "args": - [ { "prim": "address" }, - { "prim": "nat" } ], - "annots": [ "%allowances" ] } ], - "annots": [ ":account" ] } ] } ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", "annots": [ "%balance" ] }, - { "prim": "map", - "args": - [ { "prim": "address" }, { "prim": "nat" } ], - "annots": [ "%allowances" ] } ], - "annots": [ ":account" ] }, - [ { "prim": "RENAME", - "annots": [ "@_a_accounts_slash_3" ] }, - { "prim": "DUP" }, - { "prim": "CDR", "annots": [ "@accounts" ] }, - [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "@a" ] }, - { "prim": "GET" }, - { "prim": "IF_NONE", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": "map", - "args": - [ { "prim": "address" }, - { "prim": "nat" } ] }, [] ] }, - { "prim": "PUSH", - "args": - [ { "prim": "nat" }, { "int": "0" } ] }, - { "prim": "PAIR", - "annots": [ "%balance", "%allowances" ] } ], - [] ] }, - { "prim": "DIP", "args": [ [ { "prim": "DROP" } ] ] } ] ], - "annots": [ "@get_account" ] }, - { "prim": "DUP", "annots": [ "@get_account" ] }, - { "prim": "LAMBDA", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": "nat" }, - { "prim": "pair", - "args": - [ { "prim": "big_map", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": - "nat", - "annots": - [ "%balance" ] }, - { "prim": - "map", - "args": - [ { "prim": - "address" }, - { "prim": - "nat" } ], - "annots": - [ "%allowances" ] } ], - "annots": - [ ":account" ] } ], - "annots": - [ ":accounts" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": - [ "%version" ] }, - { "prim": "pair", - "args": - [ { "prim": - "nat", - "annots": - [ "%totalSupply" ] }, - { "prim": - "pair", - "args": - [ { "prim": - "nat", - "annots": - [ "%decimals" ] }, - { "prim": - "pair", - "args": - [ { "prim": - "string", - "annots": - [ "%name" ] }, - { "prim": - "pair", - "args": - [ { "prim": - "string", - "annots": - [ "%symbol" ] }, - { "prim": - "address", - "annots": - [ "%owner" ] } ] } ] } ] } ] } ] } ], - "annots": [ ":storage" ] } ] } ] } ] }, - { "prim": "lambda", - "args": - [ { "prim": "pair", - "args": - [ { "prim": "address" }, - { "prim": "big_map", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": - [ "%balance" ] }, - { "prim": "map", - "args": - [ { "prim": "address" }, - { "prim": "nat" } ], - "annots": - [ "%allowances" ] } ], - "annots": [ ":account" ] } ] } ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%balance" ] }, - { "prim": "map", - "args": - [ { "prim": "address" }, - { "prim": "nat" } ], - "annots": [ "%allowances" ] } ], - "annots": [ ":account" ] } ] } ] }, - { "prim": "pair", - "args": - [ { "prim": "list", - "args": [ { "prim": "operation" } ] }, - { "prim": "pair", - "args": - [ { "prim": "big_map", - "args": - [ { "prim": "address" }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%balance" ] }, - { "prim": "map", - "args": - [ { "prim": "address" }, - { "prim": "nat" } ], - "annots": [ "%allowances" ] } ], - "annots": [ ":account" ] } ], - "annots": [ ":accounts" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%version" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": [ "%totalSupply" ] }, - { "prim": "pair", - "args": - [ { "prim": "nat", - "annots": - [ "%decimals" ] }, - { "prim": "pair", - "args": - [ { "prim": "string", - "annots": - [ "%name" ] }, - { "prim": "pair", - "args": - [ { "prim": - "string", - "annots": - [ "%symbol" ] }, - { "prim": - "address", - "annots": - [ "%owner" ] } ] } ] } ] } ] } ] } ], - "annots": [ ":storage" ] } ] }, - [ { "prim": "RENAME", - "annots": [ "@closure_env_slash_8" ] }, - { "prim": "DUP" }, { "prim": "CAR" }, - { "prim": "CAR", "annots": [ "@from" ] }, - [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "CAR" }, - [ { "prim": "CDR" }, - { "prim": "CAR", "annots": [ "@dest" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "CAR" }, - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CAR", "annots": [ "@tokens" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "CAR" }, - [ { "prim": "CDR" }, { "prim": "CDR" }, - { "prim": "CDR", "annots": [ "@storage" ] } ], - { "prim": "DUP", "annots": [ "@storage" ] }, - { "prim": "CAR", - "annots": [ "@accounts", "%accounts" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "@get_account_slash_7" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@accounts" ] } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@from" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "PAIR" }, - { "prim": "EXEC", "annots": [ "@account_sender" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@accounts" ] } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@tokens" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@account_sender" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%balance" ] }, - { "prim": "SUB" }, { "prim": "ISNAT" }, - { "prim": "IF_NONE", - "args": - [ [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@account_sender" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%balance" ] }, - { "prim": "PUSH", - "args": - [ { "prim": "string" }, - { "string": - "Not enough tokens for transfer" } ] }, - { "prim": "PAIR" }, { "prim": "FAILWITH" } ], - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@account_sender" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "%allowances" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": [ "%balance", "%allowances" ] } ] ] }, - { "prim": "RENAME", - "annots": [ "@new_account_sender" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@from" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", "args": [ [ { "prim": "SOME" } ] ] }, - { "prim": "UPDATE", "annots": [ "@accounts" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "@get_account_slash_7" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@accounts" ] } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@dest" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "PAIR" }, - { "prim": "EXEC", "annots": [ "@account_dest" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@accounts" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@account_dest" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", "annots": [ "%allowances" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@tokens" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@account_dest" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%balance" ] }, - { "prim": "ADD" }, - { "prim": "PAIR", - "annots": - [ "@new_account_dest", "%balance", - "%allowances" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@dest" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", "args": [ [ { "prim": "SOME" } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" }, - { "prim": "DROP" } ] ] } ] ] } ] ] } ] ] } ], - { "prim": "UPDATE", "annots": [ "@accounts" ] }, - { "prim": "PAIR", "annots": [ "%accounts" ] }, - { "prim": "NIL", - "args": [ { "prim": "operation" } ] }, - { "prim": "PAIR" } ] ] }, - { "prim": "PAIR", - "annots": - [ "@perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": [ "@parameter" ] } ] ] }, - { "prim": "SWAP" } ] ] }, { "prim": "SWAP" } ], - { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": [ "@_dest_tokens_slash_23" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera" ] } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", "annots": [ "@tokens" ] }, - { "prim": "PAIR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "@dest" ] }, - { "prim": "PAIR" }, { "prim": "SENDER" }, - { "prim": "PAIR" }, - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, { "prim": "CAR" }, - { "prim": "SWAP" }, { "prim": "CDR" } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DROP" } ] ] } ] ] } ] ] } ], - { "prim": "PAIR" }, { "prim": "EXEC" } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": [ "@_spender_tokens_slash_27" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "@spender" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", "annots": [ "@tokens" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@get_account" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%accounts" ] }, - { "prim": "SENDER" }, { "prim": "PAIR" }, - { "prim": "EXEC", - "annots": [ "@account_sender" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%accounts" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@account_sender" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", "annots": [ "%balance" ] }, - { "prim": "PUSH", - "args": - [ { "prim": "nat" }, { "int": "0" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@tokens" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "COMPARE" }, { "prim": "EQ" }, - { "prim": "IF", - "args": - [ [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@account_sender" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "%allowances" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@spender" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": - [ [ { "prim": "NONE", - "args": - [ { "prim": "nat" } ] } ] ] }, - { "prim": "UPDATE" } ], - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@account_sender" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "%allowances" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@tokens" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@spender" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": [ [ { "prim": "SOME" } ] ] }, - { "prim": "UPDATE" } ] ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "@account_sender", "%balance", - "%allowances" ] }, - { "prim": "SENDER" }, - { "prim": "DIP", - "args": [ [ { "prim": "SOME" } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DROP" }, - { "prim": - "DROP" }, - { "prim": - "DROP" }, - { "prim": - "DROP" }, - { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ], - { "prim": "UPDATE" }, - { "prim": "PAIR", - "annots": [ "@storage", "%accounts" ] }, - { "prim": "NIL", - "args": [ { "prim": "operation" } ] }, - { "prim": "PAIR" } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": - [ "@_from_dest_tokens_slash_34" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": [ "@from" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CDR", - "annots": [ "@tokens" ] } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@get_account" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": [ "%accounts" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@from" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "PAIR" }, - { "prim": "EXEC", - "annots": [ "@account_from" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": [ "%accounts" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@account_from" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": [ "%balance" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@account_from" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "%allowances" ] }, - { "prim": "SENDER" }, - { "prim": "GET" }, - { "prim": "IF_NONE", - "args": - [ [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@from" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "PUSH", - "args": - [ { "prim": "string" }, - { "string": - "Not allowed to spend from" } ] }, - { "prim": "PAIR" }, - { "prim": "FAILWITH" } ], - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@tokens" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "DIP", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@allowed" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "SUB" }, - { "prim": "ISNAT" }, - { "prim": "IF_NONE", - "args": - [ [ { "prim": "DUP", - "annots": - [ "@allowed" ] }, - { "prim": "PUSH", - "args": - [ { "prim": - "string" }, - { "string": - "Not enough allowance for transfer" } ] }, - { "prim": "PAIR" }, - { "prim": "FAILWITH" } ], - [ { "prim": "PUSH", - "args": - [ { "prim": "nat" }, - { "int": "0" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@allowed" ] } ] ] }, - { "prim": "SWAP" } ], - { "prim": "COMPARE" }, - { "prim": "EQ" }, - { "prim": "IF", - "args": - [ [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@account_from" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "CDR", - "annots": - [ "%allowances" ] }, - { "prim": - "SENDER" }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "NONE", - "args": - [ { "prim": - "nat" } ] } ] ] }, - { "prim": - "UPDATE" } ], - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@account_from" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "CDR", - "annots": - [ "%allowances" ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@allowed" ] } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "SENDER" }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "SOME" } ] ] }, - { "prim": - "UPDATE" } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": - "DROP" } ] ] } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": "DROP" } ] ] } ] ] }, - { "prim": "RENAME", - "annots": - [ "@new_allowances_from" ] }, - { "prim": "SWAP" }, - { "prim": "PAIR", - "annots": - [ "@account_from", "%balance", - "%allowances" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@from" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DIP", - "args": [ [ { "prim": "SOME" } ] ] }, - { "prim": "UPDATE" }, - { "prim": "PAIR", - "annots": - [ "@storage", "%accounts" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@tokens" ] } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "PAIR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CAR", - "annots": [ "@dest" ] } ], - { "prim": "PAIR" }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@from" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "PAIR" }, - { "prim": "DIP", - "args": - [ [ { "prim": "DUP" }, - { "prim": "CAR" }, - { "prim": "SWAP" }, - { "prim": "CDR" } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DROP" }, - { "prim": - "DROP" }, - { "prim": - "DROP" }, - { "prim": - "DROP" }, - { "prim": - "DROP" } ] ] } ] ] } ] ] } ], - { "prim": "PAIR" }, - { "prim": "EXEC" } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": - [ "@_spender_forward_slash_45" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DUP", - "annots": [ "@storage" ] }, - { "prim": "NIL", - "args": - [ { "prim": "operation" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CDR", - "annots": [ "@forward" ] }, - { "prim": "PUSH", - "args": - [ { "prim": "mutez" }, - { "int": "0" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": [ "%accounts" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": [ "@spender" ] }, - { "prim": "GET" }, - { "prim": "IF_NONE", - "args": - [ [ { "prim": "PUSH", - "args": - [ { "prim": "nat" }, - { "int": "0" } ] } ], - [ { "prim": "CAR", - "annots": - [ "%balance" ] } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DROP" }, - { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ] ] } ], - { "prim": "RENAME", - "annots": - [ "@spender_balance" ] }, - { "prim": "TRANSFER_TOKENS" }, - { "prim": "CONS" }, - { "prim": "PAIR" } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": "RENAME", - "annots": - [ "@_from_spender_forward_slash_51" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "DUP", - "annots": - [ "@storage" ] }, - { "prim": "NIL", - "args": - [ { "prim": - "operation" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - [ { "prim": "CDR" }, - { "prim": "CDR", - "annots": - [ "@forward" ] } ], - { "prim": "PUSH", - "args": - [ { "prim": - "mutez" }, - { "int": "0" } ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": - [ "%accounts" ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": "SWAP" } ], - { "prim": "CAR", - "annots": - [ "@from" ] }, - { "prim": "GET" }, - { "prim": "IF_NONE", - "args": - [ [ { "prim": - "PUSH", - "args": - [ { "prim": - "pair", - "args": - [ { "prim": - "nat" }, - { "prim": - "nat" } ] }, - { "prim": - "Pair", - "args": - [ { "int": - "0" }, - { "int": - "0" } ] } ] } ], - [ { "prim": - "DUP", - "annots": - [ "@account" ] }, - { "prim": - "CDR", - "annots": - [ "%allowances" ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - [ { "prim": - "CDR" }, - { "prim": - "CAR", - "annots": - [ "@spender" ] } ], - { "prim": - "GET" }, - { "prim": - "IF_NONE", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@account" ] }, - { "prim": - "CAR", - "annots": - [ "%balance" ] }, - { "prim": - "PUSH", - "args": - [ { "prim": - "nat" }, - { "int": - "0" } ] }, - { "prim": - "PAIR" } ], - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@account" ] } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "CAR", - "annots": - [ "%balance" ] }, - { "prim": - "SWAP" }, - { "prim": - "PAIR" } ] ] }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DROP" } ] ] } ] ] }, - [ { "prim": "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DROP" }, - { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ] ] } ], - { "prim": "RENAME", - "annots": - [ "@spender_allowance" ] }, - { "prim": - "TRANSFER_TOKENS" }, - { "prim": "CONS" }, - { "prim": "PAIR" } ], - [ { "prim": "IF_LEFT", - "args": - [ [ { "prim": - "RENAME", - "annots": - [ "@_dest_tokens_slash_59" ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "DUP", - "annots": - [ "@storage" ] }, - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR", - "annots": - [ "%owner" ] } ], - { "prim": - "SENDER" }, - { "prim": - "COMPARE" }, - { "prim": - "NEQ" }, - { "prim": - "IF", - "args": - [ [ { "prim": - "PUSH", - "args": - [ { "prim": - "string" }, - { "string": - "Only owner can create accounts" } ] }, - { "prim": - "FAILWITH" } ], - [ { "prim": - "UNIT" } ] ] }, - { "prim": - "DROP" }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ], - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "CDR", - "annots": - [ "@tokens" ] }, - { "prim": - "PAIR" }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "CAR", - "annots": - [ "@dest" ] }, - { "prim": - "PAIR" }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR", - "annots": - [ "%owner" ] } ], - { "prim": - "PAIR" }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - { "prim": - "CAR" }, - { "prim": - "SWAP" }, - { "prim": - "CDR" } ] ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DROP" }, - { "prim": - "DROP" } ] ] } ] ] } ] ] } ], - { "prim": - "PAIR" }, - { "prim": - "EXEC" } ], - [ { "prim": - "RENAME", - "annots": - [ "@new_accounts_slash_63" ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "DUP", - "annots": - [ "@storage" ] }, - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR", - "annots": - [ "%owner" ] } ], - { "prim": - "SENDER" }, - { "prim": - "COMPARE" }, - { "prim": - "NEQ" }, - { "prim": - "IF", - "args": - [ [ { "prim": - "PUSH", - "args": - [ { "prim": - "string" }, - { "string": - "Only owner can create accounts" } ] }, - { "prim": - "FAILWITH" } ], - [ { "prim": - "UNIT" } ] ] }, - { "prim": - "DROP" }, - { "prim": - "DUP", - "annots": - [ "@storage" ] }, - { "prim": - "NIL", - "args": - [ { "prim": - "operation" } ] }, - { "prim": - "PAIR" }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@new_accounts" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "ITER", - "args": - [ [ { "prim": - "RENAME", - "annots": - [ "@_dest_tokens__ops_storage_slash_65" ] }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "PAIR" }, - { "prim": - "DUP" }, - { "prim": - "CDR" }, - { "prim": - "CDR", - "annots": - [ "@storage" ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ], - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "CAR" }, - { "prim": - "CDR", - "annots": - [ "@tokens" ] }, - { "prim": - "PAIR" }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - { "prim": - "CAR" }, - { "prim": - "CAR", - "annots": - [ "@dest" ] }, - { "prim": - "PAIR" }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP", - "annots": - [ "@storage" ] } ] ] }, - { "prim": - "SWAP" } ] ] }, - { "prim": - "SWAP" } ], - [ { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR" }, - { "prim": - "CDR", - "annots": - [ "%owner" ] } ], - { "prim": - "PAIR" }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DUP" }, - { "prim": - "CAR" }, - { "prim": - "SWAP" }, - { "prim": - "CDR" } ] ] }, - [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DIP", - "args": - [ [ { "prim": - "DROP" }, - { "prim": - "DROP" }, - { "prim": - "DROP" } ] ] } ] ] } ] ] } ], - { "prim": - "PAIR" }, - { "prim": - "EXEC" } ] ] }, - { "prim": - "DIP", - "args": - [ [ { "prim": - "DROP" }, - { "prim": - "DROP" } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] } ] ] }, - { "prim": "DIP", - "args": - [ [ { "prim": "DROP" }, { "prim": "DROP" }, - { "prim": "DROP" }, { "prim": "DROP" } ] ] } ] ] } ], - "storage": { "int": "1000" }, "input": { "prim": "Unit" }, - "amount": "50000" } \ No newline at end of file diff --git a/test/chain/tezos/lexer/samples/token.michelson b/test/chain/tezos/lexer/samples/token.michelson deleted file mode 100644 index 9899a21c..00000000 --- a/test/chain/tezos/lexer/samples/token.michelson +++ /dev/null @@ -1,369 +0,0 @@ -parameter - (or :_entries - (pair %_Liq_entry_transfer address nat) - (or (pair %_Liq_entry_approve address nat) - (or (pair %_Liq_entry_transferFrom address (pair address nat)) - (or (pair %_Liq_entry_balanceOf address (contract :NatContract nat)) - (or (pair %_Liq_entry_allowance - address - (pair address (contract :NatNatContract (pair nat nat)))) - (or (pair %_Liq_entry_createAccount address nat) - (list %_Liq_entry_createAccounts (pair address nat)))))))); -storage - (pair :storage - (big_map :accounts - address - (pair :account (nat %balance) (map %allowances address nat))) - (pair (nat %version) - (pair (nat %totalSupply) - (pair (nat %decimals) (pair (string %name) (pair (string %symbol) (address %owner))))))); -code { DUP ; - DIP { CDR @storage_slash_1 } ; - CAR @parameter_slash_2 ; - LAMBDA @get_account - (pair address - (big_map address (pair :account (nat %balance) (map %allowances address nat)))) - (pair :account (nat %balance) (map %allowances address nat)) - { RENAME @_a_accounts_slash_3 ; - DUP ; - CDR @accounts ; - DUUP ; - CAR @a ; - GET ; - IF_NONE - { PUSH (map address nat) {} ; PUSH nat 0 ; PAIR %balance %allowances } - {} ; - DIP { DROP } } ; - DUP @get_account ; - LAMBDA - (pair (pair address - (pair address - (pair nat - (pair :storage - (big_map :accounts - address - (pair :account (nat %balance) (map %allowances address nat))) - (pair (nat %version) - (pair (nat %totalSupply) - (pair (nat %decimals) (pair (string %name) (pair (string %symbol) (address %owner)))))))))) - (lambda - (pair address - (big_map address (pair :account (nat %balance) (map %allowances address nat)))) - (pair :account (nat %balance) (map %allowances address nat)))) - (pair (list operation) - (pair :storage - (big_map :accounts - address - (pair :account (nat %balance) (map %allowances address nat))) - (pair (nat %version) - (pair (nat %totalSupply) - (pair (nat %decimals) (pair (string %name) (pair (string %symbol) (address %owner)))))))) - { RENAME @closure_env_slash_8 ; - DUP ; - CAR ; - CAR @from ; - DUUP ; - CAR ; - CDAR @dest ; - DUUUP ; - CAR ; - CDDAR @tokens ; - DUUUUP ; - CAR ; - CDDDR @storage ; - DUP @storage ; - CAR @accounts %accounts ; - DUUUUUUP ; - CDR @get_account_slash_7 ; - DUUP @accounts ; - DUUUUUUUP @from ; - PAIR ; - EXEC @account_sender ; - DUUP @accounts ; - DUUUUUP @tokens ; - DUUUP @account_sender ; - CAR %balance ; - SUB ; - ISNAT ; - IF_NONE - { DUUP @account_sender ; - CAR %balance ; - PUSH string "Not enough tokens for transfer" ; - PAIR ; - FAILWITH } - { DUUUP @account_sender ; - CDR %allowances ; - SWAP ; - PAIR %balance %allowances } ; - RENAME @new_account_sender ; - DUUUUUUUUP @from ; - DIP { SOME } ; - UPDATE @accounts ; - DUUUUUUUUP ; - CDR @get_account_slash_7 ; - DUUP @accounts ; - DUUUUUUUUP @dest ; - PAIR ; - EXEC @account_dest ; - DUUUUUP @storage ; - CDR ; - DUUUP @accounts ; - DUUUP @account_dest ; - CDR %allowances ; - DUUUUUUUUUP @tokens ; - DUUUUUP @account_dest ; - CAR %balance ; - ADD ; - PAIR @new_account_dest %balance %allowances ; - DUUUUUUUUUUP @dest ; - DIP { SOME } ; - DIIIIP { DROP ; DROP ; DROP ; DROP ; DROP ; DROP ; DROP ; DROP ; DROP } ; - UPDATE @accounts ; - PAIR %accounts ; - NIL operation ; - PAIR } ; - PAIR @perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera ; - DUUUP @parameter ; - IF_LEFT - { RENAME @_dest_tokens_slash_23 ; - DUUP @perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera ; - DUUUUUUP @storage ; - DUUUP ; - CDR @tokens ; - PAIR ; - DUUUP ; - CAR @dest ; - PAIR ; - SENDER ; - PAIR ; - DIP { DUP ; CAR ; SWAP ; CDR } ; - DIIIP { DROP } ; - PAIR ; - EXEC } - { IF_LEFT - { RENAME @_spender_tokens_slash_27 ; - DUUUUUP @storage ; - DUUP ; - CAR @spender ; - DUUUP ; - CDR @tokens ; - DUUUUUUP @get_account ; - DUUUUP @storage ; - CAR %accounts ; - SENDER ; - PAIR ; - EXEC @account_sender ; - DUUUUP @storage ; - CDR ; - DUUUUUP @storage ; - CAR %accounts ; - DUUUP @account_sender ; - CAR %balance ; - PUSH nat 0 ; - DUUUUUUP @tokens ; - COMPARE ; - EQ ; - IF { DUUUUP @account_sender ; - CDR %allowances ; - DUUUUUUUP @spender ; - DIP { NONE nat } ; - UPDATE } - { DUUUUP @account_sender ; - CDR %allowances ; - DUUUUUUP @tokens ; - DUUUUUUUUP @spender ; - DIP { SOME } ; - UPDATE } ; - SWAP ; - PAIR @account_sender %balance %allowances ; - SENDER ; - DIP { SOME } ; - DIIIIP { DROP ; DROP ; DROP ; DROP ; DROP } ; - UPDATE ; - PAIR @storage %accounts ; - NIL operation ; - PAIR } - { IF_LEFT - { RENAME @_from_dest_tokens_slash_34 ; - DUUUUUP @storage ; - DUUP ; - CAR @from ; - DUUUP ; - CDDR @tokens ; - DUUUUUUP @get_account ; - DUUUUP @storage ; - CAR %accounts ; - DUUUUP @from ; - PAIR ; - EXEC @account_from ; - DUUUUUUP @perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera ; - DUUUUUP @storage ; - CDR ; - DUUUUUUP @storage ; - CAR %accounts ; - DUUUUP @account_from ; - CAR %balance ; - DUUUUUP @account_from ; - CDR %allowances ; - SENDER ; - GET ; - IF_NONE - { DUUUUUUUP @from ; - PUSH string "Not allowed to spend from" ; - PAIR ; - FAILWITH } - { DUUUUUUUP @tokens ; - DUUP @allowed ; - SUB ; - ISNAT ; - IF_NONE - { DUP @allowed ; - PUSH string "Not enough allowance for transfer" ; - PAIR ; - FAILWITH } - { PUSH nat 0 ; - DUUP @allowed ; - COMPARE ; - EQ ; - IF { DUUUUUUUP @account_from ; - CDR %allowances ; - SENDER ; - DIP { NONE nat } ; - UPDATE } - { DUUUUUUUP @account_from ; - CDR %allowances ; - DUUP @allowed ; - SENDER ; - DIP { SOME } ; - UPDATE } ; - DIP { DROP } } ; - DIP { DROP } } ; - RENAME @new_allowances_from ; - SWAP ; - PAIR @account_from %balance %allowances ; - DUUUUUUUP @from ; - DIP { SOME } ; - UPDATE ; - PAIR @storage %accounts ; - DUUUUP @tokens ; - PAIR ; - DUUUUUUUP ; - CDAR @dest ; - PAIR ; - DUUUUUP @from ; - PAIR ; - DIP { DUP ; CAR ; SWAP ; CDR } ; - DIIIP { DROP ; DROP ; DROP ; DROP ; DROP } ; - PAIR ; - EXEC } - { IF_LEFT - { RENAME @_spender_forward_slash_45 ; - DUUUUUP @storage ; - DUP @storage ; - NIL operation ; - DUUUUP ; - CDR @forward ; - PUSH mutez 0 ; - DUUUUUP @storage ; - CAR %accounts ; - DUUUUUUUP ; - CAR @spender ; - GET ; - IF_NONE { PUSH nat 0 } { CAR %balance } ; - DIIIIIP { DROP ; DROP } ; - RENAME @spender_balance ; - TRANSFER_TOKENS ; - CONS ; - PAIR } - { IF_LEFT - { RENAME @_from_spender_forward_slash_51 ; - DUUUUUP @storage ; - DUP @storage ; - NIL operation ; - DUUUUP ; - CDDR @forward ; - PUSH mutez 0 ; - DUUUUUP @storage ; - CAR %accounts ; - DUUUUUUUP ; - CAR @from ; - GET ; - IF_NONE - { PUSH (pair nat nat) (Pair 0 0) } - { DUP @account ; - CDR %allowances ; - DUUUUUUUUP ; - CDAR @spender ; - GET ; - IF_NONE - { DUP @account ; CAR %balance ; PUSH nat 0 ; PAIR } - { DUUP @account ; CAR %balance ; SWAP ; PAIR } ; - DIP { DROP } } ; - DIIIIIP { DROP ; DROP } ; - RENAME @spender_allowance ; - TRANSFER_TOKENS ; - CONS ; - PAIR } - { IF_LEFT - { RENAME @_dest_tokens_slash_59 ; - DUUUUUP @storage ; - DUP @storage ; - CDDDDDDR %owner ; - SENDER ; - COMPARE ; - NEQ ; - IF { PUSH string "Only owner can create accounts" ; FAILWITH } { UNIT } ; - DROP ; - DUUUP @perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera ; - DUUP @storage ; - DUUUUP ; - CDR @tokens ; - PAIR ; - DUUUUP ; - CAR @dest ; - PAIR ; - DUUUP @storage ; - CDDDDDDR %owner ; - PAIR ; - DIP { DUP ; CAR ; SWAP ; CDR } ; - DIIIP { DROP ; DROP } ; - PAIR ; - EXEC } - { RENAME @new_accounts_slash_63 ; - DUUUUUP @storage ; - DUP @storage ; - CDDDDDDR %owner ; - SENDER ; - COMPARE ; - NEQ ; - IF { PUSH string "Only owner can create accounts" ; FAILWITH } { UNIT } ; - DROP ; - DUP @storage ; - NIL operation ; - PAIR ; - DUUUP @new_accounts ; - ITER { RENAME @_dest_tokens__ops_storage_slash_65 ; - DIP { DUP } ; - PAIR ; - DUP ; - CDR ; - CDR @storage ; - DUUUUUUP @perform_transfer_T4aanRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsowneraT2LoRstorageaccountsBaRaccountbalancenallowancesManversionntotalSupplyndecimalsnnamessymbolsownera ; - DUUP @storage ; - DUUUUP ; - CAR ; - CDR @tokens ; - PAIR ; - DUUUUP ; - CAR ; - CAR @dest ; - PAIR ; - DUUUP @storage ; - CDDDDDDR %owner ; - PAIR ; - DIP { DUP ; CAR ; SWAP ; CDR } ; - DIIIP { DROP ; DROP ; DROP } ; - PAIR ; - EXEC } ; - DIP { DROP ; DROP } } } } } } } ; - DIP { DROP ; DROP ; DROP ; DROP } }; \ No newline at end of file